시작 스크립트는 가상 머신(VM) 인스턴스의 시작 프로세스 동안 태스크를 수행하는 파일입니다. 시작 스크립트는 프로젝트의 모든 VM 또는 단일 VM에 적용될 수 있습니다. VM 수준의 메타데이터로 지정된 시작 스크립트는 프로젝트 수준의 메타데이터로 지정된 시작 스크립트를 재정의하며, 네트워크를 사용할 수 있을 때만 시작 스크립트가 실행됩니다. 이 문서에서는 Windows Server VM 인스턴스에서 시작 스크립트 사용 방법을 설명합니다. 프로젝트 수준의 시작 스크립트를 추가하는 방법은 gcloud compute project-info add-metadata
를 참조하세요.
Windows 시작 스크립트는 명령어 셸(.cmd
), PowerShell(.ps1
) 또는 배치 파일 스크립트(.bat
)여야 하며 적절한 파일 확장자가 있어야 합니다.
이 문서의 절차 중 하나에 따라 시작 스크립트를 지정하면 Compute Engine이 다음을 수행합니다.
시작 스크립트를 VM에 복사
VM이 부팅될 때 태스크 스케줄러가 시작 스크립트를
LocalSystem
계정으로 실행합니다.
시작 스크립트와 관련된 여러 태스크 및 이러한 각 태스크를 수행해야 하는 경우에 대한 자세한 내용은 시작 스크립트 개요 문서를 참조하세요.
시작하기 전에
- 시작 스크립트 개요에 대해 알아보기
- VM 메타데이터의 기본사항에 대해 읽어봅니다.
-
아직 인증을 설정하지 않았다면 설정합니다.
인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다.
로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
Google Cloud Console에서 인스턴스 만들기 페이지로 이동합니다.
부팅 디스크에서 변경을 선택하고 다음을 수행합니다.
- 공개 이미지 탭에서 Windows Server 운영체제를 선택합니다.
- 선택을 클릭합니다.
고급 옵션 섹션을 펼친 후 다음을 수행합니다.
- 관리 섹션을 펼칩니다.
메타데이터 섹션에서 항목 추가를 클릭하여 키와 값을 설정합니다.
키:
windows-startup-script-ps1
로 설정합니다.windows-startup-script
로 시작하는 메타데이터 키를 사용하여 VM에 전달된 시작 스크립트는 VM 최초 부팅 후 부팅될 때마다 실행됩니다.값: 다음 스크립트를 추가합니다.
# Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Windows startup script added directly.</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
만들기를 클릭합니다.
Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
VM의 이름을 클릭합니다.
수정을 클릭합니다.
메타데이터에서 다음을 지정합니다.
key
:windows-startup-script-ps1
value
: 시작 스크립트의 콘텐츠
PROJECT_ID: 프로젝트 ID
ZONE: 새 VM을 만들 영역
instances.get
메서드를 사용하여 VM의tags.fingerprint
값을 가져옵니다.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
다음을 바꿉니다.
PROJECT_ID: 프로젝트 ID
ZONE: VM의 영역
VM_NAME: VM의 영역
instances.setMetadata
메서드 호출에fingerprint
값을 사용하여 시작 스크립트의 메타데이터 키와 값과 함께 시작 스크립트를 전달합니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "fingerprint": FINGERPRINT, "items": [ { "key": "windows-startup-script-ps1", "value": "Import-Module servermanager\nInstall-WindowsFeature Web-Server -IncludeAllSubFeature\necho '<html><body><p>Windows startup script added directly.</p></body></html>' > C:\\inetpub\\wwwroot\\index.html" } ], ... }
다음을 바꿉니다.
PROJECT_ID: 프로젝트 ID
ZONE: VM의 영역
VM_NAME: VM의 영역
FINGERPRINT:
instances.get
메서드를 사용하여 가져온tags.fingerprint
값입니다.
시작 스크립트를 저장할 로컬(
.ps1
) 파일을 만듭니다.gcloud CLI에서 시작 스크립트까지의 상대 경로를 확인합니다.
다음 시작 스크립트를 파일에 추가합니다.
# Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Windows startup script passed from a file on your local workstation.</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
- VM_NAME: VM의 이름
- FILE_PATH: 시작 스크립트 파일의 상대 경로
- VM_NAME: VM의 이름
- FILE_PATH: 시작 스크립트 파일의 상대 경로
- VM_NAME: VM의 이름
- FILE_PATH: 시작 스크립트 파일의 상대 경로
- VM_NAME: VM의 이름
- FILE_PATH: 시작 스크립트 파일의 상대 경로
- VM_NAME: VM의 이름
- FILE_PATH: 시작 스크립트 파일의 상대 경로
- VM_NAME: VM의 이름
- FILE_PATH: 시작 스크립트 파일의 상대 경로
시작 스크립트를 저장할 파일을 만듭니다. 이 예시에서는 PowerShell(
.ps1
) 파일이 사용됩니다.다음의 PowerShell 스크립트를 파일에 추가합니다. 그러면 웹 서버가 설치되어 간단한 웹페이지가 생성됩니다.
# Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Windows startup script passed from Cloud Storage.</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
기본적으로 이를 허용하지 않는 명시적인 액세스 제어가 없는 한, 프로젝트 소유자와 프로젝트 편집자는 동일한 프로젝트의 Cloud Storage 파일에 액세스할 수 있습니다.
Cloud Storage 버킷 또는 객체가 메타데이터보다 안전하지 않은 경우 시작 스크립트가 수정되고 VM이 재부팅되면 권한 에스컬레이션이 발생할 위험이 있습니다. VM이 재부팅되면 시작 스크립트가
LocalSystem
로 실행된 다음 연결된 서비스 계정의 권한을 사용하여 다른 리소스에 액세스할 수 있기 때문입니다.Google Cloud Console에서 인스턴스 만들기 페이지로 이동합니다.
부팅 디스크에서 변경을 선택하고 다음을 수행합니다.
- 공개 이미지 탭에서 Windows Server 운영체제를 선택합니다.
- 선택을 클릭합니다.
ID 및 API 액세스 섹션에서 스토리지 객체 뷰어 역할이 있는 서비스 계정을 선택합니다.
고급 옵션 섹션을 펼친 후 다음을 수행합니다.
- 관리 섹션을 펼칩니다.
메타데이터 섹션에서 다음 값을 추가합니다.
키: 메타데이터 키입니다. 최초 부팅 후 부팅될 때마다 스크립트가 실행되도록
windows-startup-script-url
메타데이터 키를 지정합니다.값: 메타데이터 값. 다음 형식 중 하나를 사용하여 시작 스크립트 파일의 Cloud Storage 위치로 설정합니다.
- 인증된 URL:
https://storage.googleapis.com/BUCKET/FILE
- gsutil URI:
gs://BUCKET/FILE
다음을 바꿉니다.
- BUCKET: 시작 스크립트 파일이 포함된 버킷의 이름
- FILE: 시작 스크립트 파일 이름
- 인증된 URL:
VM을 만들려면 만들기를 클릭합니다.
Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
VM의 이름을 클릭합니다.
수정을 클릭합니다.
메타데이터에 다음 값을 추가합니다.
- 인증된 URL:
https://storage.googleapis.com/BUCKET/FILE
- gsutil URI:
gs://BUCKET/FILE
- 인증된 URL:
- VM_NAME: VM의 이름
-
CLOUD_STORAGE_URL: 메타데이터 값 다음 형식 중 하나를 사용하여 시작 스크립트 파일의 위치로 설정합니다.
-
인증된 URL:
https://storage.googleapis.com/BUCKET/FILE
-
gsutil URI:
gs://BUCKET/FILE
-
인증된 URL:
- VM_NAME: VM의 이름
-
CLOUD_STORAGE_URL: 메타데이터 값 다음 형식 중 하나를 사용하여 시작 스크립트 파일의 위치로 설정합니다.
-
인증된 URL:
https://storage.googleapis.com/BUCKET/FILE
-
gsutil URI:
gs://BUCKET/FILE
-
인증된 URL:
- VM_NAME: VM의 이름
-
CLOUD_STORAGE_URL: 메타데이터 값 다음 형식 중 하나를 사용하여 시작 스크립트 파일의 위치로 설정합니다.
-
인증된 URL:
https://storage.googleapis.com/BUCKET/FILE
-
gsutil URI:
gs://BUCKET/FILE
-
인증된 URL:
- VM_NAME: VM의 이름
-
CLOUD_STORAGE_URL: 메타데이터 값 다음 형식 중 하나를 사용하여 시작 스크립트 파일의 위치로 설정합니다.
-
인증된 URL:
https://storage.googleapis.com/BUCKET/FILE
-
gsutil URI:
gs://BUCKET/FILE
-
인증된 URL:
- VM_NAME: VM의 이름
-
CLOUD_STORAGE_URL: 메타데이터 값 다음 형식 중 하나를 사용하여 시작 스크립트 파일의 위치로 설정합니다.
-
인증된 URL:
https://storage.googleapis.com/BUCKET/FILE
-
gsutil URI:
gs://BUCKET/FILE
-
인증된 URL:
- VM_NAME: VM의 이름
-
CLOUD_STORAGE_URL: 메타데이터 값 다음 형식 중 하나를 사용하여 시작 스크립트 파일의 위치로 설정합니다.
-
인증된 URL:
https://storage.googleapis.com/BUCKET/FILE
-
gsutil URI:
gs://BUCKET/FILE
-
인증된 URL:
PROJECT_ID: 프로젝트 ID
ZONE: 새 VM을 만들 영역
CLOUD_STORAGE_URL: 메타데이터 값입니다. 다음 형식 중 하나를 사용하여 시작 스크립트 파일의 Cloud Storage 위치로 설정합니다.
- 인증된 URL:
https://storage.googleapis.com/BUCKET/FILE
- gsutil URI:
gs://BUCKET/FILE
- 인증된 URL:
instances.get
메서드를 사용하여 VM의tags.fingerprint
값을 가져옵니다.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
다음을 바꿉니다.
PROJECT_ID: 프로젝트 ID
ZONE: VM의 영역
VM_NAME: VM의 영역
instances.setMetadata
메서드 호출에fingerprint
값을 사용하여 시작 스크립트의 메타데이터 키와 값과 함께 시작 스크립트를 전달합니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "fingerprint": FINGERPRINT, "items": [ { "key": "windows-startup-script-url", "value": "CLOUD_STORAGE_URL" } ], ... }
다음을 바꿉니다.
PROJECT_ID: 프로젝트 ID
ZONE: VM의 영역
VM_NAME: VM의 영역
FINGERPRINT:
instances.get
메서드를 사용하여 가져온tags.fingerprint
값입니다.CLOUD_STORAGE_URL: 메타데이터 값입니다. 다음 형식 중 하나를 사용하여 시작 스크립트 파일의 Cloud Storage 위치로 설정합니다.
- 인증된 URL:
https://storage.googleapis.com/BUCKET/FILE
- gsutil URI:
gs://BUCKET/FILE
- 인증된 URL:
메타데이터 키의 값을 쿼리하는 시작 스크립트를 만듭니다. 예를 들어 다음 PowerShell(
.ps1
) 시작 스크립트는foo
메타데이터 키의 값을 쿼리합니다.$METADATA_VALUE = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'} -Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes/foo") # Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Accessing metadata value of foo: $METADATA_VALUE</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
다음
gcloud compute instances create
명령어를 사용하여 VM을 만들 때foo
메타데이터 키의 값을 설정합니다. 이 예시에서는 시작 스크립트가 로컬 파일에서 VM에 전달됩니다.gcloud
gcloud compute instances create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019 \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH \ --metadata=foo=bar
다음을 바꿉니다.
VM_NAME: VM의 이름
FILE_PATH: 시작 스크립트 파일의 상대 경로
메타데이터 키-값 쌍을 지정하는 방법은 커스텀 메타데이터 설정 및 삭제를 참조하세요.
웹브라우저에서 외부 IP를 보고 시작 스크립트가
foo
의 값을 출력하는지 확인합니다. 샘플 시작 스크립트가 완료될 때까지 약 10분 정도 기다려야 할 수 있습니다.다음 명령어를 실행합니다.
C:\Program Files\Google\Compute Engine\metadata_scripts\run_startup_scripts.cmd
Google Cloud 콘솔의 직렬 포트 1. 자세한 내용은 직렬 포트 출력 보기를 참조하세요.
Windows 이벤트 뷰어의 애플리케이션 로그.
Windows 워크스테이션의 IAP 데스크톱. 자세한 내용은 GitHub의 GoogleCloudPlatform/iap-desktop 저장소를 참조하세요.
Linux VM에서 시작 스크립트 사용 방법 알아보기
종료 스크립트 추가 방법 알아보기
VM 메타데이터 자세히 알아보기
Windows VM에서 시작 스크립트를 실행하고 관리형 Microsoft AD 도메인에 가입하는 방법 알아보기
REST
로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.
Windows 시작 스크립트의 메타데이터 키
시작 스크립트는 메타데이터 키로 지정된 위치에서 VM에 전달됩니다. 메타데이터 키는 시작 스크립트가 로컬로 저장되는지, Cloud Storage에 저장되는지, VM에 직접 전달되는지를 지정합니다. 사용하는 메타데이터 키는 시작 스크립트의 크기 또는 파일 유형에 따라 달라질 수 있습니다.
다음 표에서는 Windows 시작 스크립트에 사용할 수 있는 메타데이터 키를 보여주고, 시작 스크립트의 스토리지 위치, 크기, 파일 유형을 기준으로 사용할 키에 대한 정보를 제공합니다.
메타데이터 키 용도 sysprep-specialize-script-ps1
로컬에 저장되거나 직접 추가된 최대 256KB의 서명되지 않은 PowerShell 스크립트 전달 sysprep-specialize-script-cmd
로컬에 저장되거나 직접 추가된 최대 256KB의 서명되지 않은 명령어 셸 스크립트 전달 sysprep-specialize-script-bat
로컬에 저장되거나 직접 추가된 최대 256KB인 배치 파일 스크립트 전달 sysprep-specialize-script-url
Cloud Storage에 저장되고 크기가 256KB보다 큰 일괄 파일, 명령어 셸, 서명되거나 서명되지 않은 PowerShell 스크립트 또는 실행 파일 전달 windows-startup-script-ps1
로컬에 저장되거나 직접 추가된 최대 256KB의 서명되지 않은 PowerShell 스크립트 전달 windows-startup-script-cmd
로컬에 저장되거나 직접 추가된 최대 256KB의 서명되지 않은 명령어 셸 스크립트 전달 windows-startup-script-bat
로컬에 저장되거나 직접 추가된 최대 256KB인 배치 파일 스크립트 전달 windows-startup-script-url
Cloud Storage에 저장되고 크기가 256KB보다 큰 일괄 파일, 명령어 셸, 서명되거나 서명되지 않은 PowerShell 스크립트 또는 실행 파일 전달 여러 유형의 시작 스크립트의 실행 순서에 대한 자세한 내용은 GitHub의 GoogleCloudPlatform/compute-image-windows 저장소를 참조하세요.
Windows 시작 스크립트 실행 순서
여러 시작 스크립트를 사용할 수 있습니다. 로컬로 저장된 또는 직접 추가된 시작 스크립트는 Cloud Storage에 저장된 시작 스크립트 전에 실행됩니다. 스크립트를 포함하는 파일 유형도 실행 순서에 영향을 줍니다. 다음 표에서는 메타데이터 키를 기준으로 Windows 시작 스크립트의 실행 순서를 보여줍니다.
메타데이터 키 실행 순서 sysprep-specialize-script-ps1
초기 부팅 중 첫 번째 sysprep-specialize-script-cmd
초기 부팅 중 두 번째 sysprep-specialize-script-bat
초기 부팅 중 세 번째 sysprep-specialize-script-url
초기 부팅 중 네 번째 windows-startup-script-ps1
초기 부팅 후 부팅할 때마다 첫 번째 windows-startup-script-cmd
초기 부팅 후 부팅할 때마다 두 번째 windows-startup-script-bat
초기 부팅 후 부팅할 때마다 세 번째 windows-startup-script-url
초기 부팅 후 부팅할 때마다 네 번째 Windows 시작 스크립트 직접 전달
배치 파일의 콘텐츠, 명령어 셸, 서명되지 않은 PowerShell 시작 스크립트를 Windows Server VM에 직접 전달합니다. 다음 절차에서는 서명되지 않은 PowerShell 스크립트를 전달하는 방법을 보여줍니다.
Console
Windows 시작 스크립트를 새 VM에 직접 전달
Windows 시작 스크립트를 기존 VM에 직접 전달
시작 스크립트 확인
VM이 시작되면 웹브라우저에서 외부 IP를 확인하여 시작 스크립트가 웹사이트를 만들었는지 확인합니다. 샘플 시작 스크립트가 완료될 때까지 약 10분 정도 기다려야 할 수 있습니다.
gcloud(Bash)
Windows 시작 스크립트를 새 VM에 직접 전달
다음
gcloud compute instances create
명령어를 실행하여 Windows Server VM을 만들 때 시작 스크립트 콘텐츠를 이 VM에 직접 전달합니다.gcloud compute instances create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
VM_NAME을 VM의 이름으로 바꿉니다.
Windows 시작 스크립트를 기존 VM에 직접 전달다음
gcloud compute instances add-metadata
명령어를 사용하여 시작 스크립트를 기존 VM에 직접 추가합니다.gcloud compute instances add-metadata VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
VM_NAME을 VM의 이름으로 바꿉니다.
시작 스크립트 확인VM이 시작되면 웹브라우저에서 외부 IP를 확인하여 시작 스크립트가 웹사이트를 만들었는지 확인합니다. 샘플 시작 스크립트가 완료될 때까지 약 10분 정도 기다려야 할 수 있습니다.
gcloud(명령 프롬프트)
Windows 시작 스크립트를 새 VM에 직접 전달
다음
gcloud compute instances create
명령어를 실행하여 Windows Server VM을 만들 때 시작 스크립트 콘텐츠를 이 VM에 직접 전달합니다.gcloud compute instances create VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
VM_NAME을 VM의 이름으로 바꿉니다.
Windows 시작 스크립트를 기존 VM에 직접 전달다음
gcloud compute instances add-metadata
명령어를 사용하여 시작 스크립트를 기존 VM에 직접 추가합니다.gcloud compute instances add-metadata VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
VM_NAME을 VM의 이름으로 바꿉니다.
시작 스크립트 확인VM이 시작되면 웹브라우저에서 외부 IP를 확인하여 시작 스크립트가 웹사이트를 만들었는지 확인합니다. 샘플 시작 스크립트가 완료될 때까지 약 10분 정도 기다려야 할 수 있습니다.
gcloud(PowerShell)
Windows 시작 스크립트를 새 VM에 직접 전달
다음
gcloud compute instances create
명령어를 실행하여 Windows Server VM을 만들 때 시작 스크립트 콘텐츠를 이 VM에 직접 전달합니다.gcloud compute instances create VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
VM_NAME을 VM의 이름으로 바꿉니다.
Windows 시작 스크립트를 기존 VM에 직접 전달다음
gcloud compute instances add-metadata
명령어를 사용하여 시작 스크립트를 기존 VM에 직접 추가합니다.gcloud compute instances add-metadata VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
VM_NAME을 VM의 이름으로 바꿉니다.
시작 스크립트 확인VM이 시작되면 웹브라우저에서 외부 IP를 확인하여 시작 스크립트가 웹사이트를 만들었는지 확인합니다. 샘플 시작 스크립트가 완료될 때까지 약 10분 정도 기다려야 할 수 있습니다.
REST
Windows 시작 스크립트를 새 VM에 직접 전달
다음
instances.insert
메서드를 사용하여 Windows Server VM를 만들 때 시작 스크립트의 콘텐츠를 이 VM에 직접 전달합니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { ... "networkInterfaces": [ { "accessConfigs": [ { "type": "ONE_TO_ONE_NAT" } ] } ], "metadata": { "items": [ { "key": "windows-startup-script-ps1", "value": "Import-Module servermanager\nInstall-WindowsFeature Web-Server -IncludeAllSubFeature\necho '<html><body><p>Windows startup script added directly.</p></body></html>' > C:\\inetpub\\wwwroot\\index.html" } ] }, ... }
다음을 바꿉니다.
Windows 시작 스크립트를 기존 VM에 직접 전달
시작 스크립트 확인
VM이 시작되면 웹브라우저에서 외부 IP를 확인하여 시작 스크립트가 웹사이트를 만들었는지 확인합니다. 샘플 시작 스크립트가 완료될 때까지 약 10분 정도 기다려야 할 수 있습니다.
로컬 파일에서 Windows 시작 스크립트 전달
로컬 배치 파일, 명령어 셸 스크립트, 워크스테이션에 있는 서명되지 않은 PowerShell 스크립트에 시작 스크립트를 저장하고, VM을 만들 때 로컬 파일을 VM에 메타데이터로 전달할 수 있습니다. VM에 저장된 파일을 시작 스크립트로 사용할 수 없습니다.
로컬 파일에서 VM으로 Windows 시작 스크립트를 전달하려면 먼저 다음을 수행합니다.
gcloud(Bash)
로컬 파일에서 새 VM으로 Windows 시작 스크립트 전달
--metadata-from-file
플래그와 함께gcloud compute instances create
명령어를 사용하여 VM을 만들고 시작 스크립트로 사용할 로컬 파일의 콘텐츠를 전달합니다.gcloud compute instances create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
다음을 바꿉니다.
다음
gcloud compute instances add-metadata
명령어를 사용하여 시작 스크립트를 로컬 파일에서 기존 VM에 전달합니다.gcloud compute instances add-metadata VM_NAME \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
다음을 바꿉니다.
웹브라우저에서 외부 IP를 보고 시작 스크립트가 웹사이트를 만들었는지 확인합니다. 샘플 시작 스크립트가 완료될 때까지 약 10분 정도 기다려야 할 수 있습니다.
gcloud(명령 프롬프트)
로컬 파일에서 새 VM으로 Windows 시작 스크립트 전달
--metadata-from-file
플래그와 함께gcloud compute instances create
명령어를 사용하여 VM을 만들고 시작 스크립트로 사용할 로컬 파일의 콘텐츠를 전달합니다.gcloud compute instances create VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
다음을 바꿉니다.
다음
gcloud compute instances add-metadata
명령어를 사용하여 시작 스크립트를 로컬 파일에서 기존 VM에 전달합니다.gcloud compute instances add-metadata VM_NAME ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
다음을 바꿉니다.
웹브라우저에서 외부 IP를 보고 시작 스크립트가 웹사이트를 만들었는지 확인합니다. 샘플 시작 스크립트가 완료될 때까지 약 10분 정도 기다려야 할 수 있습니다.
gcloud(PowerShell)
로컬 파일에서 새 VM으로 Windows 시작 스크립트 전달
--metadata-from-file
플래그와 함께gcloud compute instances create
명령어를 사용하여 VM을 만들고 시작 스크립트로 사용할 로컬 파일의 콘텐츠를 전달합니다.gcloud compute instances create VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
다음을 바꿉니다.
다음
gcloud compute instances add-metadata
명령어를 사용하여 시작 스크립트를 로컬 파일에서 기존 VM에 전달합니다.gcloud compute instances add-metadata VM_NAME ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
다음을 바꿉니다.
웹브라우저에서 외부 IP를 보고 시작 스크립트가 웹사이트를 만들었는지 확인합니다. 샘플 시작 스크립트가 완료될 때까지 약 10분 정도 기다려야 할 수 있습니다.
Cloud Storage에서 Windows 시작 스크립트 전달
시작 스크립트를 배치 파일, 명령어 셸 스크립트, 서명되거나 서명되지 않은 PowerShell 스크립트 또는 실행 파일로 Cloud Storage에 저장하고 VM을 만들 때 이를 VM에 전달할 수 있습니다. Cloud Storage에 시작 스크립트를 추가하면 VM을 만들 때 시작 스크립트를 참조하는 데 사용할 수 있는 URL이 있습니다.
Cloud Storage 버킷에서 시작 스크립트를 추가하려면 먼저 다음을 수행합니다.
보안에 미치는 영향
Console
Cloud Storage에 저장된 시작 스크립트를 새 VM에 전달
Cloud Storage에 저장된 시작 스크립트를 기존 VM에 전달
시작 스크립트 확인
웹브라우저에서 외부 IP를 보고 시작 스크립트가 웹사이트를 만들었는지 확인합니다. 샘플 시작 스크립트가 완료될 때까지 약 10분 정도 기다려야 할 수 있습니다.
gcloud(Bash)
Cloud Storage에 저장된 시작 스크립트를 새 VM에 전달
다음
gcloud compute instances create
명령어를 사용하여 Cloud Storage에 저장된 시작 스크립트를 Windows Server VM에 전달합니다.--scopes
플래그 값에 대해 VM이 Cloud Storage에 액세스할 수 있도록storage-ro
를 사용합니다.gcloud compute instances create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --scopes=storage-ro \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
다음을 바꿉니다.
다음
gcloud compute instances add-metadata
명령어를 사용하여 Cloud Storage에 저장된 시작 스크립트를 기존 VM에 전달합니다.gcloud compute instances add-metadata VM_NAME \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
다음을 바꿉니다.
웹브라우저에서 외부 IP를 보고 시작 스크립트가 웹사이트를 만들었는지 확인합니다. 샘플 시작 스크립트가 완료될 때까지 약 10분 정도 기다려야 할 수 있습니다.
gcloud(명령 프롬프트)
Cloud Storage에 저장된 시작 스크립트를 새 VM에 전달
다음
gcloud compute instances create
명령어를 사용하여 Cloud Storage에 저장된 시작 스크립트를 Windows Server VM에 전달합니다.--scopes
플래그 값에 대해 VM이 Cloud Storage에 액세스할 수 있도록storage-ro
를 사용합니다.gcloud compute instances create VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --scopes=storage-ro ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
다음을 바꿉니다.
다음
gcloud compute instances add-metadata
명령어를 사용하여 Cloud Storage에 저장된 시작 스크립트를 기존 VM에 전달합니다.gcloud compute instances add-metadata VM_NAME ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
다음을 바꿉니다.
웹브라우저에서 외부 IP를 보고 시작 스크립트가 웹사이트를 만들었는지 확인합니다. 샘플 시작 스크립트가 완료될 때까지 약 10분 정도 기다려야 할 수 있습니다.
gcloud(PowerShell)
Cloud Storage에 저장된 시작 스크립트를 새 VM에 전달
다음
gcloud compute instances create
명령어를 사용하여 Cloud Storage에 저장된 시작 스크립트를 Windows Server VM에 전달합니다.--scopes
플래그 값에 대해 VM이 Cloud Storage에 액세스할 수 있도록storage-ro
를 사용합니다.gcloud compute instances create VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --scopes=storage-ro ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
다음을 바꿉니다.
다음
gcloud compute instances add-metadata
명령어를 사용하여 Cloud Storage에 저장된 시작 스크립트를 기존 VM에 전달합니다.gcloud compute instances add-metadata VM_NAME ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
다음을 바꿉니다.
웹브라우저에서 외부 IP를 보고 시작 스크립트가 웹사이트를 만들었는지 확인합니다. 샘플 시작 스크립트가 완료될 때까지 약 10분 정도 기다려야 할 수 있습니다.
REST
Cloud Storage에 저장된 시작 스크립트를 새 VM에 전달
다음
instances.insert
메서드를 사용하여 Cloud Storage에 저장된 시작 스크립트를 Windows Server VM에 전달합니다. VM이 Cloud Storage에 액세스할 수 있도록scopes
필드에https://www.googleapis.com/auth/devstorage.read_only
를 추가합니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { ... "networkInterfaces": [ { "accessConfigs": [ { "type": "ONE_TO_ONE_NAT" } ] } ], "serviceAccounts": [ { "email": "default", "scopes": [ "https://www.googleapis.com/auth/devstorage.read_only" ] } ], "metadata": { "items": [ { "key": "windows-startup-script-url", "value": "CLOUD_STORAGE_URL" }, ... ] }, ... }
다음을 바꿉니다.
Cloud Storage에 저장된 시작 스크립트를 기존 VM에 전달
시작 스크립트 확인
웹브라우저에서 외부 IP를 보고 시작 스크립트가 웹사이트를 만들었는지 확인합니다. 샘플 시작 스크립트가 완료될 때까지 약 10분 정도 기다려야 할 수 있습니다.
Windows 시작 스크립트에서 메타데이터에 액세스
시작 스크립트에서 메타데이터 값에 액세스할 수 있습니다. 예를 들어 여러 VM에 대해 동일한 스크립트를 사용하고 각 VM에 서로 다른 메타데이터 값을 전달하여 각 스크립트를 개별적으로 매개변수화할 수 있습니다.
시작 스크립트에서 커스텀 메타데이터 값에 액세스하려면 다음을 수행합니다.
Windows 시작 스크립트 재실행
다음을 수행하여 Windows VM에서 시작 스크립트를 재실행합니다.
Windows 시작 스크립트의 출력 보기
다음을 사용하고
GCEMetadataScripts
이벤트를 확인하여 Windows Server 시작 스크립트의 출력을 확인합니다.다음 단계
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2024-11-28(UTC)
-