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
를 참조
메타데이터 키 | 용도 |
---|---|
| 로컬에 저장되거나 직접 추가된 최대 256KB의 bash 또는 비 bash 시작 스크립트 전달 |
| Cloud Storage에 저장되고 크기가 256KB를 초과하는 bash 또는 비 bash 시작 스크립트 전달 |
Linux 시작 스크립트 실행 순서
여러 시작 스크립트를 사용할 수 있습니다. 로컬로 저장된 또는 직접 추가된 시작 스크립트는 Cloud Storage에 저장된 시작 스크립트 전에 실행됩니다. 다음 표에서는 메타데이터 키를 기준으로 Linux 시작 스크립트의 실행 순서를 보여줍니다.
메타데이터 키 | 실행 순서 |
---|---|
| 초기 부팅 후 부팅할 때마다 첫 번째 |
| 초기 부팅 후 부팅할 때마다 두 번째 |
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
작동 안했음.