GCP VM OS 설정

GCP VM OS 설정 필요함.

Ubuntu

GCP에서 제공하는 Ubuntu 이미지

GCP에서 제공하는 Ubuntu 이미지의 차이점

https://cloud.google.com/compute/docs/images/os-details#notable-difference-ubuntu

  • APT 소스는 cloud-init를 통해 Ubuntu Compute Engine 미러를 사용하도록 설정됩니다.

  • NTP 서버가 Compute Engine 메타데이터 서버를 사용하도록 설정됩니다.

시작 스크립트

시작 스크립트는 가상 머신(VM) 인스턴스가 부팅될 때 실행되는 명령어가 포함된 파일입니다. Compute Engine은 Linux VM 및 Windows VM에서 시작 스크립트 실행을 지원합니다.

시작 스크립트 전달 방법은 아래 문서 참고. 시작 스크립트 직접 전달, 로컬 파일에서 시작 스크립트 전달, Cloud Storage에서 시작 스크립트 전달 등이 있음.

https://cloud.google.com/compute/docs/instances/startup-scripts

 

Linux VM에서 시작 스크립트 사용 : https://cloud.google.com/compute/docs/instances/startup-scripts/linux#gcloud

  • VM 수준의 메타데이터로 지정된 시작 스크립트는 프로젝트 수준의 메타데이터로 지정된 시작 스크립트를 재정의하며, 네트워크를 사용할 수 있을 때만 시작 스크립트가 실행된다.

  • 프로젝트 수준의 시작 스크립트를 추가하는 방법은 gcloud compute project-info add-metadata를 참조

메타데이터 키

용도

메타데이터 키

용도

startup-script

로컬에 저장되거나 직접 추가된 최대 256KB의 bash 또는 비 bash 시작 스크립트 전달

startup-script-url

Cloud Storage에 저장되고 크기가 256KB를 초과하는 bash 또는 비 bash 시작 스크립트 전달

Linux 시작 스크립트 실행 순서

여러 시작 스크립트를 사용할 수 있습니다. 로컬로 저장된 또는 직접 추가된 시작 스크립트는 Cloud Storage에 저장된 시작 스크립트 전에 실행됩니다. 다음 표에서는 메타데이터 키를 기준으로 Linux 시작 스크립트의 실행 순서를 보여줍니다.

메타데이터 키

실행 순서

메타데이터 키

실행 순서

startup-script

초기 부팅 후 부팅할 때마다 첫 번째

startup-script-url

초기 부팅 후 부팅할 때마다 두 번째

 

Linux 시작 스크립트를 기존 VM에 직접 전달. 시작 스크립트를 기존 VM에 직접 추가

gcloud compute instances add-metadata gw-web-dev-1 \ --metadata=startup-script='#! /bin/bash timedatectl set-timezone Asia/Seoul'

script 파일을 통해서 Linux 시작 스크립트를 기존 VM에 연결.

gcloud compute instances add-metadata gw-tjmoontest-dev-1 \ --metadata-from-file startup-script=vm_script.sh

Cloud Storage를 통해서 파일을 전달. cloud storage에 접근할 수 있는 역할이 VM의 서비스 계정에 있어야 함. startup-script, startup-script-url 가 모두 있으면 startup-script 를 먼저 적용함.

gcloud compute instances add-metadata gw-tjmoontest-dev-1 \ --metadata startup-script-url=https://storage.cloud.google.com/sample-gw-tm-operation-dev/gcp_configuration/vm_script.sh

 

설정한 스크립트는 재부팅을 하지 않고도 재실행을 할 수 있다. journalctl 명령을 통해 로그를 볼 수 있다.

date, timedatectl 명령어 등으로 확인하면 됨

 

프로젝트 수준의 시작 스크립트를 추가. https://cloud.google.com/sdk/gcloud/reference/compute/project-info/add-metadata

console 에서 확인. ev-324106

 

VM에 설정한 instance metadata 확인하기. gcloud compute instances describe 에서 metadata 에 startup-script 정보가 나옴. 이 정보를 조회해 보면 됨.

종료스크립트

https://cloud.google.com/compute/docs/shutdownscript#gcloud

가상 머신(VM) 인스턴스가 중지되거나 다시 시작되기 바로 전에 명령어를 실행하는 종료 스크립트를 만들고 실행. VM을 삭제할 때는 실행이 안되는 것으로 보임.

실행 중인 인스턴스에 종료 스크립트를 추가하려면 실행 중인 인스턴스에 시작 스크립트 적용 문서의 안내를 따르고 메타데이터 키를 다음 키 중 하나로 바꿉니다.

  • shutdown-script: 이 키로 종료 스크립트 콘텐츠를 직접 제공합니다. gcloud 명령줄 도구를 사용할 경우 --metadata-from-file 플래그와 shutdown-script 메타데이터 키를 사용하여 종료 스크립트 파일의 경로를 제공할 수 있습니다.

    shutdown-script-url: 이 키로 종료 스크립트 파일의 Cloud Storage URL을 제공합니다.

 

특정 서버 shutdown-script-url

project 차원에 shutdown-script-url 지정. → VM에서 수동으로 실행시에는 잘 되지만 vm_dns_remove.sh 작동 안했음.