종료 스크립트 실행

인스턴스가 종료되거나 다시 시작되기 바로 전에 명령어를 실행하는 종료 스크립트를 만들고 실행합니다. 종료 스크립트는 자동화 스크립트를 사용하여 인스턴스를 시작하고 종료하는 경우에 유용하며, 이 스크립트를 통해 인스턴스가 로그 내보내기 또는 다른 시스템과 동기화 등의 태스크를 정리하거나 수행하는 시간을 확보할 수 있습니다.

종료 스크립트는 자동 확장 처리가 적용된 관리형 인스턴스 그룹에 있는 인스턴스에 특히 유용합니다. 자동 확장 처리가 그룹 내의 인스턴스를 종료하면 인스턴스가 중지되기 전에 종료 스크립트가 실행되어 종료 스크립트가 사용자가 정의하는 모든 작업을 수행합니다. 종료 스크립트는 인스턴스가 중지되기 전 제한된 종료 시간 동안 실행됩니다. 예를 들어 종료 스크립트는 처리된 데이터를 Cloud Storage로 복사하거나 로그를 백업할 수 있습니다.

종료 스크립트는 시작 스크립트와 매우 유사하게 작동합니다. 시작 스크립트 문서 상당수는 종료 스크립트에도 적용됩니다.

시작하기 전에

이 태스크에 필요한 권한

이 태스크를 수행하려면 다음과 같은 권한이 있어야 합니다.

사양

제한사항

종료 스크립트를 사용할 때 유의해야 하는 몇 가지 제한사항이 있습니다.

  • 종료 스크립트는 인스턴스가 중지되기 전에 제한된 시간 안에 실행을 마쳐야 합니다.
    • 온디맨드 인스턴스: 인스턴스를 중지 또는 삭제한 후 90초
    • 선점형 인스턴스: 인스턴스 선점 시작 후 30초
  • Compute Engine은 최선의 노력을 다한 후에만 종료 스크립트를 실행합니다. 드문 경우지만 Compute Engine이 종료 스크립트의 완료를 보장할 수 없을 때도 있습니다.
  • Linux 인스턴스의 경우, 이미지 버전 v20141007 이상에서만 종료 스크립트를 사용할 수 있습니다. Windows Server 인스턴스의 경우 이미지 버전 v20150310 이상에서만 종료 스크립트를 사용할 수 있습니다.

종료 스크립트 호출

종료 스크립트는 다시 시작 또는 종료와 같은 특정 고급 구성 및 전원 인터페이스(ACPI) 이벤트에 의해 트리거됩니다. 인스턴스를 다시 시작하거나 종료하는 방법은 많지만 종료 스크립트가 실행되도록 트리거하는 방법은 몇 가지 밖에 없습니다. 종료 스크립트는 다음 작업의 일부로 실행됩니다.

인스턴스가 instances().reset을 사용하여 재설정되면 종료 스크립트가 실행되지 않습니다.

종료 스크립트에는 파일 형식 제한이 없습니다. 종료 스크립트가 있으면 Compute Engine은 다음을 수행합니다.

  1. 스크립트를 인스턴스의 로컬 파일로 복사합니다.
  2. 파일에 권한을 설정하여 실행 가능하게 만듭니다.
  3. 인스턴스가 종료되면 파일을 실행합니다.

예를 들어 bash 스크립트 대신 Python 스크립트를 제공할 수 있습니다. Compute Engine에서는 스크립트 유형에 상관없이 스크립트를 그대로 실행합니다.

bash가 아닌 스크립트를 실행하려면 운영체제에서 사용할 인터프리터를 알 수 있도록 파일 맨 위에 shebang 줄을 추가합니다. 예를 들어 Python 스크립트의 경우 다음과 같은 shebang 줄을 추가할 수 있습니다.

#!/usr/bin/python

종료 스크립트 실행 시간

종료 스크립트는 인스턴스가 종료되거나 다시 시작되기 전에 한정된 시간 동안 실행될 수 있습니다. 이 기간 동안 Compute Engine은 종료 스크립트를 실행하려 합니다. 스크립트가 완료되는 데 이 시간보다 오래 걸리면 인스턴스가 자동으로 종료되고 실행 중인 모든 태스크가 종료됩니다. sudo shutdown 명령어로 게스트 운영체제에 요청을 수행하여 인스턴스를 종료하거나 다시 시작할 경우에는 이 제한이 적용되지 않습니다.

종료 시간 길이는 인스턴스 유형에 따라 다릅니다. 선점형 인스턴스의 종료 시간은 일반 인스턴스보다 짧습니다. 각 인스턴스 유형의 종료 시간 제한에 대한 자세한 내용은 종료 시간을 참조하세요.

일반적으로 운영체제에서 종료 프로세스를 완료하고 디스크에 버퍼를 플러시할 시간을 확보할 수 있도록 종료·스크립트가 종료 시간 내에 실행을 완료해야 합니다.

로컬 종료 스크립트 사용

로컬 종료 스크립트는 로컬 컴퓨터에서 작동하는 스크립트입니다. 로컬 종료 스크립트를 파일로 전달하거나 Compute Engine에 직접 콘텐츠를 제공하여 전달합니다.

종료 스크립트는 다양한 작업을 필요한 만큼 수행할 수 있지만 파일을 로컬에서 전달할 경우 스크립트는 메타데이터 값 길이 제한(256KB)을 초과할 수 없습니다. 이 길이 제한을 초과하는 스크립트를 사용하려면 파일을 Cloud Storage에 저장해야 합니다. 자세한 내용은 Cloud Storage에서 종료 스크립트 사용을 참조하세요.

종료 스크립트 파일 제공

gcloud 명령줄 도구를 통해서만 로컬 종료 스크립트 파일을 전달할 수 있습니다.

로컬 종료 스크립트 파일을 전달하려면 --metadata-from-file 플래그 다음에 메타데이터 키 쌍인 shutdown-script=PATH/TO/FILE을 지정합니다. 여기서 PATH/TO/FILE은 종료 스크립트의 상대 경로입니다. 예를 들면 다음과 같습니다.

gcloud compute instances create example-instance \
    --metadata-from-file shutdown-script=examples/scripts/install.sh

종료 스크립트 콘텐츠 직접 제공

또는 종료 스크립트의 콘텐츠를 직접 전달할 수도 있습니다.

Console

GCP Console에서 shutdown-script 메타데이터 키를 사용하여 종료 스크립트를 직접 지정합니다.

  1. GCP Console에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 인스턴스 만들기를 클릭합니다.
  3. 새 인스턴스 만들기 페이지에서 인스턴스의 속성을 입력합니다. 고급 구성 옵션은 관리, 보안, 디스크, 네트워킹, 단독 임대 섹션을 확장합니다.
  4. 메타데이터 섹션에서 메타데이터 키로 shutdown-script를 입력합니다.
  5. 상자에 종료 스크립트 콘텐츠를 제공합니다.
  6. 만들기를 클릭하여 인스턴스를 만듭니다.

gcloud

gcloud 명령줄 도구를 사용할 경우 --metadata 플래그를 사용하여 종료 스크립트 콘텐츠를 제공한 후 shutdown-script=CONTENTS 키 쌍을 지정합니다. 여기서 CONTENTS는 종료 스크립트 콘텐츠입니다.

gcloud compute instances create example-instance --metadata shutdown-script="#! /bin/bash
> # Shuts down Apache server
> /etc/init.d/apache2 stop"

API

API에서는 인스턴스를 만들 때 요청에 있는 메타데이터 속성의 일부로 종료 스크립트를 제공합니다. 메타데이터 키로 shutdown-script를 사용합니다.

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances

{...
  "metadata": {
    "items": [
      {
       "key": "shutdown-script",
       "value": "#! /bin/bash\n\n# Shuts down Apache server\n/etc/init.d/apache2 stop"
      }
    ]
  }...
}

Windows 인스턴스에서 종료 스크립트 제공

다음과 같은 Windows 고유의 메타데이터 키를 사용하여 Windows 인스턴스에서 종료 스크립트를 실행합니다. 아래 나열된 특수한 키 중 하나를 선택하세요. 각각의 키는 실행할 스크립트 유형과 일치해야 합니다.

인스턴스에 서로 다른 키를 전달하여 종료 스크립트를 여러 개 지정할 수 있지만 각 키는 가상 머신당 한 번만 지정될 수 있습니다.

위와 동일한 안내를 따라 로컬 종료 스크립트에 다음과 같은 키를 사용할 수 있습니다.

cmd 종료 스크립트 bat 종료 스크립트 ps1 종료 스크립트
windows-shutdown-script-cmd windows-shutdown-script-bat windows-shutdown-script-ps1

Cloud Storage에서 종료 스크립트 사용

Cloud Storage에 종료 스크립트를 저장하고 사용할 수 있습니다. 시작 스크립트 문서의 안내를 따르고 startup-script-urlshutdown-script-url로 바꿉니다.

Windows 인스턴스의 경우 windows-startup-script-urlwindows-shutdown-script-url로 바꿉니다.

실행 중인 인스턴스에 종료 스크립트 적용

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

  • shutdown-script: 이 키로 종료 스크립트 콘텐츠를 직접 제공합니다. gcloud 명령줄 도구를 사용할 경우 --metadata-from-file 플래그와 shutdown-script 메타데이터 키를 사용하여 종료 스크립트 파일의 경로를 제공할 수 있습니다.
  • shutdown-script-url: 이 키로 종료 스크립트 파일의 Cloud Storage URL을 제공합니다.
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Compute Engine 문서