AgentSkillsCN

Gcp Vm Init

GCP VM 初始化

SKILL.md

GCP VM Initial Setup

GCP VM 초기 설정 자동화. 시스템 업데이트, 타임존, 방화벽, fail2ban, 스왑 설정.

Triggers

  • "VM 초기 설정", "VM 셋업", "서버 초기화"
  • "VM 보안 설정", "VM 기본 설정"
  • "initialize VM", "setup VM"

Workflow

1. 정보 수집

필수:

  • VM 이름 (필수)
  • 프로젝트 ID (기본: 현재 설정된 프로젝트)
  • 존 (기본: asia-northeast3-a)

선택:

  • 타임존 (기본: Asia/Seoul)
  • 스왑 크기 (기본: 2GB)
bash
# 현재 프로젝트 확인
gcloud config get-value project

# VM 목록에서 선택
gcloud compute instances list --format="table(name,zone,status)"

2. SSH 접속 확인

bash
gcloud compute ssh VM_NAME --zone=ZONE --project=PROJECT \
  --command="echo 'SSH 접속 성공' && uname -a"

3. 시스템 업데이트

bash
gcloud compute ssh VM_NAME --zone=ZONE --project=PROJECT \
  --command="sudo apt update && sudo DEBIAN_FRONTEND=noninteractive apt upgrade -y"

4. 타임존 설정

bash
gcloud compute ssh VM_NAME --zone=ZONE --project=PROJECT \
  --command="sudo timedatectl set-timezone Asia/Seoul && timedatectl"

5. UFW 방화벽 설정

bash
gcloud compute ssh VM_NAME --zone=ZONE --project=PROJECT \
  --command="sudo ufw allow OpenSSH && sudo ufw allow 80/tcp && sudo ufw allow 443/tcp && sudo ufw --force enable && sudo ufw status verbose"

6. fail2ban 설치

bash
gcloud compute ssh VM_NAME --zone=ZONE --project=PROJECT \
  --command="sudo DEBIAN_FRONTEND=noninteractive apt install -y fail2ban && sudo systemctl enable fail2ban && sudo systemctl start fail2ban && sudo systemctl status fail2ban --no-pager"

7. 스왑 설정

bash
gcloud compute ssh VM_NAME --zone=ZONE --project=PROJECT \
  --command="sudo fallocate -l 2G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile && echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab && free -h"

8. 기본 도구 확인

bash
gcloud compute ssh VM_NAME --zone=ZONE --project=PROJECT \
  --command="echo '=== 설치된 도구 ===' && git --version && curl --version | head -1 && wget --version | head -1 && vim --version | head -1 && htop --version && tmux -V"

출력 형식

code
✅ VM 초기 설정 완료: [VM_NAME]

| 항목 | 상태 | 세부 |
|------|------|------|
| 시스템 업데이트 | ✅ | apt update/upgrade 완료 |
| 타임존 | ✅ | Asia/Seoul (KST) |
| UFW 방화벽 | ✅ | SSH(22), HTTP(80), HTTPS(443) 허용 |
| fail2ban | ✅ | SSH 무차별 공격 방지 활성화 |
| 스왑 | ✅ | 2GB 설정됨 |
| 기본 도구 | ✅ | git, curl, wget, vim, htop, tmux |

SSH 접속:
gcloud compute ssh [VM_NAME] --zone=[ZONE] --project=[PROJECT]

에러 처리

에러해결
SSH 연결 실패VM이 RUNNING 상태인지 확인, 방화벽 규칙 확인
권한 부족sudo 권한 확인, 계정 인증 상태 확인
스왑 파일 존재swapon --show로 확인 후 기존 스왑 사용
fail2ban 설치 실패sudo apt update 재실행 후 재시도
타임존 설정 실패`timedatectl list-timezones

고급 옵션

커스텀 타임존

bash
# 타임존 목록 확인
timedatectl list-timezones | grep America

# 다른 타임존 설정
sudo timedatectl set-timezone America/New_York

스왑 크기 조정

bash
# 4GB 스왑 (RAM 4GB 이상 VM용)
sudo fallocate -l 4G /swapfile

추가 포트 허용

bash
# 커스텀 포트 허용 (예: 3000번)
sudo ufw allow 3000/tcp

참고

  • GCP Ubuntu 22.04 이미지는 git, curl, wget, vim, htop, tmux가 기본 설치됨
  • GCP 방화벽(네트워크)과 UFW(호스트) 이중 방어 권장
  • fail2ban은 기본 SSH jail만 활성화 (추가 설정 가능)
  • 스왑 크기: RAM 2GB 이하는 100%, 2-8GB는 50-100% 권장