VM Init 스크립트 주의사항

흑두루미·2026년 5월 19일

VM Init 스크립트 주의점

🔍현상

정상적으로 작성한 VM Init 스크립트를 통해 VM 생성하였음에도
스크립트 인식을 하지 못하는 경우

📝해결

bash 쉘은 줄바꿈이 있으면 새로운 명령어로 인식하기에
한줄로 이어쓰거나 역슬래시('\')를 활용

주로 Copy&Paste 오류 또는 형식에 맞지않게 가져오는 경우 발생

✅예시

문제가 발생한 Init 스크립트

#!/bin/bash

# 스크립트 실행 중 오류 발생시 즉시 중단
set -e

# 웹 IDE 초기화를 위한 저장소 URL과 디렉토리, 이미지 이름 설정
REPO_URL="https://github.com/xxx/init-webide.git"
REPO_DIR="init-webide"
IMAGE_NAME="xxx/code-server-xxx"
HOME_DIR="/home/ubuntu"
PROJECT_DIR="${HOME_DIR}/project" # HOME_DIR 변수를 사용하여 경로 설정

# 저장소 클론 및 디렉토리 이동
git clone "$REPO_URL"
cd "$REPO_DIR"

# Docker 설치 스크립트 실행
chmod +x install_docker.sh
./install_docker.sh

# Public IP 업데이트 스크립트 실행
chmod +x update_ip.sh
./update_ip.sh

# Docker 이미지 다운로드
docker pull "$IMAGE_NAME"

# 프로젝트 및 설정 디렉토리 생성
mkdir -p "$PROJECT_DIR"
mkdir -p "${HOME_DIR}/.scp" "${HOME_DIR}/.scpconf" 
"${HOME_DIR}/.kube" "${HOME_DIR}/.config" "${HOME_DIR}/.local" # 🔴줄바꿈

# 랜덤 패스워드 생성 및 파일에 저장
PASSWORD=$(openssl rand -base64 12)
echo "Your Web-IDE Password: ${PASSWORD}" > 
"${PROJECT_DIR}/env-info.txt" # 🔴줄바꿈

# Docker 그룹 ID 및 패스워드를 환경 변수로 전달하여 컨테이너 실행
DOCKER_GID=$(getent group docker | cut -d: -f3) 
PASSWORD=${PASSWORD} # 🔴줄바꿈 
docker compose up -d

# 권한 설정 (모든 경로에 HOME_DIR 변수 적용)
chown -R 1000:1000 "$HOME_DIR"

# 콘솔에 패스워드 및 저장 경로 출력 (변수명 오류 수정)
echo "================================================================"
echo "   A new password for the Web-IDE has been generated."
echo "   Password: ${PASSWORD}"
echo "   It has been saved to: ${PROJECT_DIR}/env-info.txt"
echo "================================================================"

echo "Web-IDE setup is complete!"

문제를 해결한 Init 스크립트

#!/bin/bash

# 스크립트 실행 중 오류 발생시 즉시 중단
set -e

# 웹 IDE 초기화를 위한 저장소 URL과 디렉토리, 이미지 이름 설정
REPO_URL="https://github.com/xxx/init-webide.git"
REPO_DIR="init-webide"
IMAGE_NAME="xxx/code-server-xxx"
HOME_DIR="/home/ubuntu"
PROJECT_DIR="${HOME_DIR}/project" # HOME_DIR 변수를 사용하여 경로 설정

# 저장소 클론 및 디렉토리 이동
git clone "$REPO_URL"
cd "$REPO_DIR"

# Docker 설치 스크립트 실행
chmod +x install_docker.sh
./install_docker.sh

# Public IP 업데이트 스크립트 실행
chmod +x update_ip.sh
./update_ip.sh

# Docker 이미지 다운로드
docker pull "$IMAGE_NAME"

# 프로젝트 및 설정 디렉토리 생성
mkdir -p "$PROJECT_DIR"
mkdir -p "${HOME_DIR}/.scp" "${HOME_DIR}/.scpconf" "${HOME_DIR}/.kube" "${HOME_DIR}/.config" "${HOME_DIR}/.local"

# 랜덤 패스워드 생성 및 파일에 저장
PASSWORD=$(openssl rand -base64 12)
echo "Your Web-IDE Password: ${PASSWORD}" > "${PROJECT_DIR}/env-info.txt"

# Docker 그룹 ID 및 패스워드를 환경 변수로 전달하여 컨테이너 실행
DOCKER_GID=$(getent group docker | cut -d: -f3) PASSWORD=${PASSWORD} docker compose up -d

# 권한 설정 (모든 경로에 HOME_DIR 변수 적용)
chown -R 1000:1000 "$HOME_DIR"

# 콘솔에 패스워드 및 저장 경로 출력 (변수명 오류 수정)
echo "================================================================"
echo "   A new password for the Web-IDE has been generated."
echo "   Password: ${PASSWORD}"
echo "   It has been saved to: ${PROJECT_DIR}/env-info.txt"
echo "================================================================"

echo "Web-IDE setup is complete!"

0개의 댓글