Menggunakan skrip startup di VM Windows


Skrip startup adalah file yang menjalankan tugas selama proses startup instance virtual machine (VM). Skrip startup dapat berlaku untuk semua VM dalam sebuah project atau berlaku untuk satu VM. Skrip startup yang ditentukan oleh metadata level VM akan menggantikan skrip startup yang ditentukan oleh metadata level project, dan skrip startup hanya dijalankan saat jaringan tersedia. Dokumen ini menjelaskan cara menggunakan skrip startup pada instance VM Windows Server. Untuk mengetahui informasi tentang cara menambahkan skrip startup level project, lihat gcloud compute project-info add-metadata.

Skrip startup Windows harus berupa Command shell (.cmd), PowerShell (.ps1), atau skrip file batch (.bat), dan harus memiliki ekstensi file yang sesuai.

Jika Anda menentukan skrip startup menggunakan salah satu prosedur dalam dokumen ini, Compute Engine akan melakukan hal berikut:

  1. Menyalin skrip startup ke VM

  2. Task Scheduler menjalankan skrip startup sebagai akun LocalSystem saat VM melakukan booting

Untuk mengetahui informasi tentang berbagai tugas yang terkait dengan skrip startup dan kapan harus melakukan setiap tugas, lihat dokumen ringkasan skrip startup.

Sebelum memulai

  • Baca ringkasan skrip startup.
  • Baca dasar-dasar metadata VM.
  • Siapkan autentikasi, jika Anda belum melakukannya. Autentikasi adalah proses verifikasi identitas Anda untuk akses ke layanan dan API Google Cloud. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine sebagai berikut.

    Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:

    Konsol

    Saat menggunakan Konsol Google Cloud untuk mengakses API dan layanan Google Cloud, Anda tidak perlu menyiapkan autentikasi.

    gcloud

    1. Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init
    2. Menetapkan region dan zona default.

    REST

    Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

      Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init

Kunci metadata untuk skrip startup Windows

Skrip startup diteruskan ke VM dari lokasi yang ditentukan oleh kunci metadata. Kunci metadata menentukan apakah skrip startup disimpan secara lokal, disimpan di Cloud Storage, atau diteruskan langsung ke VM. Kunci metadata yang Anda gunakan mungkin juga bergantung pada ukuran atau jenis file skrip startup.

Tabel berikut menampilkan kunci metadata yang dapat Anda gunakan untuk skrip startup Windows, dan memberikan informasi tentang kunci yang akan digunakan berdasarkan lokasi penyimpanan, ukuran, dan jenis file skrip startup.

Kunci metadata Gunakan untuk
sysprep-specialize-script-ps1 Meneruskan skrip PowerShell tanpa tanda tangan yang disimpan secara lokal atau ditambahkan secara langsung dan berukuran hingga 256 KB
sysprep-specialize-script-cmd Meneruskan skrip shell perintah yang disimpan secara lokal atau ditambahkan langsung dan berukuran hingga 256 KB
sysprep-specialize-script-bat Meneruskan skrip file batch yang disimpan secara lokal atau ditambahkan langsung dan berukuran hingga 256 KB
sysprep-specialize-script-url Meneruskan file batch, Command shell, skrip PowerShell yang ditandatangani/tidak ditandatangani, atau file yang dapat dieksekusi yang disimpan di Cloud Storage dan berukuran lebih dari 256 KB
windows-startup-script-ps1 Meneruskan skrip PowerShell tanpa tanda tangan yang disimpan secara lokal atau ditambahkan secara langsung dan berukuran hingga 256 KB
windows-startup-script-cmd Meneruskan skrip shell perintah yang disimpan secara lokal atau ditambahkan langsung dan berukuran hingga 256 KB
windows-startup-script-bat Meneruskan skrip file batch yang disimpan secara lokal atau ditambahkan langsung dan berukuran hingga 256 KB
windows-startup-script-url Meneruskan file batch, Command shell, skrip PowerShell yang ditandatangani/tidak ditandatangani, atau file yang dapat dieksekusi yang disimpan di Cloud Storage dan berukuran lebih dari 256 KB

Untuk mengetahui informasi selengkapnya tentang urutan eksekusi berbagai jenis skrip startup, lihat repositori GoogleCloudPlatform/compute-image-windows di GitHub.

Urutan eksekusi skrip startup Windows

Anda dapat menggunakan beberapa skrip startup. Skrip startup yang disimpan secara lokal atau ditambahkan langsung, dijalankan sebelum skrip startup yang disimpan di Cloud Storage. Jenis file yang berisi skrip juga memengaruhi urutan eksekusi. Tabel berikut menampilkan urutan eksekusi skrip startup Windows berdasarkan kunci metadata.

Kunci metadata Urutan eksekusi
sysprep-specialize-script-ps1 Pertama selama booting awal
sysprep-specialize-script-cmd Kedua selama booting awal
sysprep-specialize-script-bat Ketiga selama booting awal
sysprep-specialize-script-url Keempat selama booting awal
windows-startup-script-ps1 Pertama dalam setiap booting setelah booting awal
windows-startup-script-cmd Kedua dalam setiap booting setelah booting awal
windows-startup-script-bat Ketiga selama setiap booting setelah booting awal
windows-startup-script-url Keempat selama setiap booting setelah booting awal

Meneruskan skrip startup Windows secara langsung

Teruskan konten file batch, Command shell, atau skrip startup PowerShell yang tidak ditandatangani langsung ke VM Windows Server. Prosedur berikut menunjukkan cara meneruskan skrip PowerShell yang tidak ditandatangani.

Konsol

Meneruskan skrip startup Windows langsung ke VM baru

  1. Di konsol Google Cloud, buka halaman Membuat instance.

    Buka halaman Create an instance

  2. Untuk Boot disk, pilih Change, dan lakukan langkah berikut:

    1. Pada tab Public images, pilih sistem operasi Windows Server.
    2. Klik Select.
  3. Luaskan bagian Opsi lanjutan, dan lakukan hal berikut:

    1. Luaskan bagian Pengelolaan.
    2. Di bagian Metadata, klik Tambahkan item untuk menyetel Kunci dan Nilai:

      • Kunci: ditetapkan ke windows-startup-script-ps1.

        Skrip startup diteruskan ke VM menggunakan kunci metadata yang dimulai dengan windows-startup-script yang dijalankan pada setiap booting setelah booting awal VM.

      • Nilai: tambahkan skrip berikut:

        # 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
        
  4. Klik Create.

Meneruskan skrip startup Windows langsung ke VM yang ada

  1. Di konsol Google Cloud, buka halaman instance VM.

    Buka Instance VM

  2. Klik Nama VM.

  3. Klik Edit.

  4. Di bagian Metadata, tentukan nilai berikut:

    • key: windows-startup-script-ps1
    • value: konten skrip startup

Memverifikasi skrip startup

Setelah VM dimulai, lihat IP eksternal di browser web untuk memastikan bahwa skrip startup yang membuat situs. Anda mungkin harus menunggu sekitar 10 menit sampai contoh skrip startup selesai.

gcloud (Bash)

Meneruskan skrip startup Windows langsung ke VM baru

Teruskan konten skrip startup langsung ke VM Windows Server saat Anda membuatnya menggunakan perintah gcloud compute instances create berikut:

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'

Ganti VM_NAME dengan nama VM.

Meneruskan skrip startup Windows langsung ke VM yang ada

Tambahkan skrip startup secara langsung ke VM yang ada menggunakan perintah gcloud compute instances add-metadata berikut:

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'

Ganti VM_NAME dengan nama VM.

Memverifikasi skrip startup

Setelah VM dimulai, lihat IP eksternal di browser web untuk memastikan bahwa situs dibuat oleh skrip startup. Anda mungkin perlu menunggu sekitar 10 menit sampai contoh skrip startup selesai.

gcloud (Command Prompt)

Meneruskan skrip startup Windows langsung ke VM baru

Teruskan konten skrip startup langsung ke VM Windows Server saat Anda membuatnya menggunakan perintah gcloud compute instances create berikut:

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'

Ganti VM_NAME dengan nama VM.

Meneruskan skrip startup Windows langsung ke VM yang ada

Tambahkan skrip startup secara langsung ke VM yang ada menggunakan perintah gcloud compute instances add-metadata berikut:

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'

Ganti VM_NAME dengan nama VM.

Memverifikasi skrip startup

Setelah VM dimulai, lihat IP eksternal di browser web untuk memastikan bahwa situs dibuat oleh skrip startup. Anda mungkin perlu menunggu sekitar 10 menit sampai contoh skrip startup selesai.

gcloud (PowerShell)

Meneruskan skrip startup Windows langsung ke VM baru

Teruskan konten skrip startup langsung ke VM Windows Server saat Anda membuatnya menggunakan perintah gcloud compute instances create berikut:

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'

Ganti VM_NAME dengan nama VM.

Meneruskan skrip startup Windows langsung ke VM yang ada

Tambahkan skrip startup secara langsung ke VM yang ada menggunakan perintah gcloud compute instances add-metadata berikut:

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'

Ganti VM_NAME dengan nama VM.

Memverifikasi skrip startup

Setelah VM dimulai, lihat IP eksternal di browser web untuk memastikan bahwa situs dibuat oleh skrip startup. Anda mungkin perlu menunggu sekitar 10 menit sampai contoh skrip startup selesai.

REST

Meneruskan skrip startup Windows langsung ke VM baru

Teruskan konten skrip startup secara langsung ke VM Windows Server saat Anda membuatnya menggunakan metode instances.insert berikut.

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"
      }
    ]
  },
  ...
}

Ganti kode berikut:

  • PROJECT_ID: ID project

  • ZONE: zona untuk membuat VM baru

Meneruskan skrip startup Windows langsung ke VM yang ada

  1. Dapatkan nilai tags.fingerprint VM menggunakan metode instances.get.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    

    Ganti kode berikut:

    • PROJECT_ID: project ID

    • ZONE: zona VM

    • VM_NAME: zona VM

  2. Teruskan skrip startup menggunakan nilai fingerprint, bersama dengan kunci dan nilai metadata untuk skrip startup, dalam panggilan ke metode instances.setMetadata:

    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"
       }
     ],
     ...
    }
    

    Ganti kode berikut:

    • PROJECT_ID: project ID

    • ZONE: zona VM

    • VM_NAME: zona VM

    • FINGERPRINT: nilai tags.fingerprint yang diperoleh menggunakan metode instances.get

Memverifikasi skrip startup

Setelah VM dimulai, lihat IP eksternal di browser web untuk memastikan bahwa skrip startup yang membuat situs. Anda mungkin harus menunggu sekitar 10 menit sampai contoh skrip startup selesai.

Meneruskan skrip startup Windows dari file lokal

Anda dapat menyimpan skrip startup dalam file batch lokal, skrip Command shell, atau skrip PowerShell yang tidak ditandatangani di workstation Anda dan meneruskan file lokal sebagai metadata ke VM saat Anda membuatnya. Anda tidak dapat menggunakan file yang disimpan pada VM sebagai skrip startup.

Sebelum meneruskan skrip startup Windows dari file lokal ke VM, lakukan hal berikut:

  1. Buat file lokal (.ps1) untuk menyimpan skrip startup.

  2. Perhatikan jalur relatif dari gcloud CLI ke skrip startup.

  3. Tambahkan skrip startup berikut ke file:

    # 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
    

gcloud (Bash)

Meneruskan skrip startup Windows dari file lokal ke VM baru

Buat VM dan teruskan konten file lokal yang akan digunakan sebagai skrip startup menggunakan perintah gcloud compute instances create dengan flag --metadata-from-file:

gcloud compute instances create VM_NAME \
  --image-project=windows-cloud \
  --image-family=windows-2019-core \
  --metadata-from-file=windows-startup-script-ps1=FILE_PATH

Ganti kode berikut:

  • VM_NAME: nama VM
  • FILE_PATH: jalur relatif ke file skrip startup
Meneruskan skrip startup Windows dari file lokal ke VM yang ada

Teruskan skrip startup ke VM yang ada dari file lokal dengan menggunakan perintah gcloud compute instances add-metadata berikut:

gcloud compute instances add-metadata VM_NAME \
  --metadata-from-file=windows-startup-script-ps1=FILE_PATH

Ganti kode berikut:

  • VM_NAME: nama VM
  • FILE_PATH: jalur relatif ke file skrip startup
Memverifikasi skrip startup

Lihat IP eksternal di browser web untuk memverifikasi bahwa situs dibuat oleh skrip startup. Anda mungkin perlu menunggu sekitar 10 menit sampai contoh skrip startup selesai.

gcloud (Command Prompt)

Meneruskan skrip startup Windows dari file lokal ke VM baru

Buat VM dan teruskan konten file lokal yang akan digunakan sebagai skrip startup menggunakan perintah gcloud compute instances create dengan flag --metadata-from-file:

gcloud compute instances create VM_NAME ^
  --image-project=windows-cloud ^
  --image-family=windows-2019-core ^
  --metadata-from-file=windows-startup-script-ps1=FILE_PATH

Ganti kode berikut:

  • VM_NAME: nama VM
  • FILE_PATH: jalur relatif ke file skrip startup
Meneruskan skrip startup Windows dari file lokal ke VM yang ada

Teruskan skrip startup ke VM yang ada dari file lokal dengan menggunakan perintah gcloud compute instances add-metadata berikut:

gcloud compute instances add-metadata VM_NAME ^
  --metadata-from-file=windows-startup-script-ps1=FILE_PATH

Ganti kode berikut:

  • VM_NAME: nama VM
  • FILE_PATH: jalur relatif ke file skrip startup
Memverifikasi skrip startup

Lihat IP eksternal di browser web untuk memverifikasi bahwa situs dibuat oleh skrip startup. Anda mungkin perlu menunggu sekitar 10 menit sampai contoh skrip startup selesai.

gcloud (PowerShell)

Meneruskan skrip startup Windows dari file lokal ke VM baru

Buat VM dan teruskan konten file lokal yang akan digunakan sebagai skrip startup menggunakan perintah gcloud compute instances create dengan flag --metadata-from-file:

gcloud compute instances create VM_NAME `
  --image-project=windows-cloud `
  --image-family=windows-2019-core `
  --metadata-from-file=windows-startup-script-ps1=FILE_PATH

Ganti kode berikut:

  • VM_NAME: nama VM
  • FILE_PATH: jalur relatif ke file skrip startup
Meneruskan skrip startup Windows dari file lokal ke VM yang ada

Teruskan skrip startup ke VM yang ada dari file lokal dengan menggunakan perintah gcloud compute instances add-metadata berikut:

gcloud compute instances add-metadata VM_NAME `
  --metadata-from-file=windows-startup-script-ps1=FILE_PATH

Ganti kode berikut:

  • VM_NAME: nama VM
  • FILE_PATH: jalur relatif ke file skrip startup
Memverifikasi skrip startup

Lihat IP eksternal di browser web untuk memverifikasi bahwa situs dibuat oleh skrip startup. Anda mungkin perlu menunggu sekitar 10 menit sampai contoh skrip startup selesai.

Meneruskan skrip startup Windows dari Cloud Storage

Anda dapat menyimpan skrip startup sebagai file batch, skrip shell Command, skrip PowerShell yang ditandatangani/tidak ditandatangani, atau yang dapat dieksekusi di Cloud Storage dan meneruskannya ke VM saat Anda membuatnya. Setelah menambahkan skrip startup ke Cloud Storage, Anda memiliki URL yang dapat digunakan untuk mereferensikan skrip startup saat membuat VM.

Sebelum menambahkan skrip startup dari bucket Cloud Storage, lakukan langkah berikut:

  1. Buat file untuk menyimpan skrip startup. Contoh ini menggunakan file PowerShell (.ps1).

  2. Tambahkan skrip PowerShell berikut ke file, yang menginstal server web dan membuat halaman web sederhana:

    # 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
    
  3. Buat bucket Cloud Storage.

  4. Tambahkan file ke bucket Cloud Storage.

Implikasi keamanan

  • Secara default, pemilik project dan editor project dapat mengakses file Cloud Storage dalam project yang sama, kecuali ada kontrol akses eksplisit yang melarangnya.

  • Jika bucket atau objek Cloud Storage kurang aman dibandingkan metadata, ada risiko eskalasi akses jika skrip startup diubah dan VM di-reboot. Hal ini karena setelah VM dimulai ulang, skrip startup akan berjalan sebagai LocalSystem, yang kemudian dapat menggunakan izin dari akun layanan yang terpasang untuk mengakses resource lainnya.

Konsol

Meneruskan skrip startup yang disimpan di Cloud Storage ke VM baru

  1. Di Konsol Google Cloud, buka halaman Buat instance.

    Buka halaman Create an instance

  2. Untuk Boot disk, pilih Change, dan lakukan langkah berikut:

    1. Pada tab Public images, pilih sistem operasi Windows Server.
    2. Klik Select.
  3. Di bagian Identitas dan Akses API, pilih akun layanan yang memiliki peran Storage Object Viewer.

  4. Luaskan bagian Opsi lanjutan, lalu lakukan hal berikut:

    1. Luaskan bagian Pengelolaan.
    2. Di bagian Metadata, tambahkan nilai untuk hal berikut:

      • Kunci: kunci metadata. Tentukan kunci metadata windows-startup-script-url agar skrip berjalan selama setiap proses booting setelah booting awal.

      • Nilai: nilai metadata. Tetapkan ke lokasi Cloud Storage file skrip startup menggunakan salah satu format berikut:

        • URL yang Diautentikasi: https://storage.googleapis.com/BUCKET/FILE
        • URI gsutil: gs://BUCKET/FILE

        Ganti kode berikut:

        • BUCKET: nama bucket yang berisi file skrip startup
        • FILE: nama file skrip startup
  5. Untuk membuat VM, klik Buat.

Meneruskan skrip startup yang disimpan di Cloud Storage ke VM yang ada

  1. Di Konsol Google Cloud, buka halaman Instance VM.

    Buka Instance VM

  2. Klik Nama VM.

  3. Klik Edit.

  4. Di bagian Metadata, tambahkan nilai berikut:

    • URL yang Diautentikasi: https://storage.googleapis.com/BUCKET/FILE
    • URI gsutil: gs://BUCKET/FILE

Memverifikasi skrip startup

Lihat IP eksternal di browser web untuk memverifikasi bahwa skrip startup membuat situs. Anda mungkin harus menunggu sekitar 10 menit sampai contoh skrip startup selesai.

gcloud (Bash)

Meneruskan skrip startup yang disimpan di Cloud Storage ke VM baru

Teruskan skrip startup yang disimpan di Cloud Storage ke VM Windows Server menggunakan perintah gcloud compute instances create berikut. Untuk nilai flag --scopes, gunakan storage-ro agar VM dapat mengakses Cloud Storage.

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

Ganti kode berikut:

  • VM_NAME: nama VM.
  • CLOUD_STORAGE_URL: nilai metadata. Tetapkan ke lokasi file skrip startup menggunakan salah satu format berikut:
    • URL yang Diautentikasi: https://storage.googleapis.com/BUCKET/FILE
    • URI gsutil: gs://BUCKET/FILE
Meneruskan skrip startup yang disimpan di Cloud Storage ke VM yang ada

Teruskan skrip startup yang disimpan di Cloud Storage ke VM yang ada dengan menggunakan perintah gcloud compute instances add-metadata berikut:

gcloud compute instances add-metadata VM_NAME \
  --metadata=windows-startup-script-url=CLOUD_STORAGE_URL

Ganti kode berikut:

  • VM_NAME: nama VM.
  • CLOUD_STORAGE_URL: nilai metadata. Tetapkan ke lokasi file skrip startup menggunakan salah satu format berikut:
    • URL yang Diautentikasi: https://storage.googleapis.com/BUCKET/FILE
    • URI gsutil: gs://BUCKET/FILE
Memverifikasi skrip startup

Lihat IP eksternal di browser web untuk memverifikasi bahwa situs dibuat oleh skrip startup. Anda mungkin harus menunggu sekitar 10 menit sampai contoh skrip startup selesai.

gcloud (Command Prompt)

Meneruskan skrip startup yang disimpan di Cloud Storage ke VM baru

Teruskan skrip startup yang disimpan di Cloud Storage ke VM Windows Server menggunakan perintah gcloud compute instances create berikut. Untuk nilai flag --scopes, gunakan storage-ro agar VM dapat mengakses Cloud Storage.

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

Ganti kode berikut:

  • VM_NAME: nama VM.
  • CLOUD_STORAGE_URL: nilai metadata. Tetapkan ke lokasi file skrip startup menggunakan salah satu format berikut:
    • URL yang Diautentikasi: https://storage.googleapis.com/BUCKET/FILE
    • URI gsutil: gs://BUCKET/FILE
Meneruskan skrip startup yang disimpan di Cloud Storage ke VM yang ada

Teruskan skrip startup yang disimpan di Cloud Storage ke VM yang ada dengan menggunakan perintah gcloud compute instances add-metadata berikut:

gcloud compute instances add-metadata VM_NAME ^
  --metadata=windows-startup-script-url=CLOUD_STORAGE_URL

Ganti kode berikut:

  • VM_NAME: nama VM.
  • CLOUD_STORAGE_URL: nilai metadata. Tetapkan ke lokasi file skrip startup menggunakan salah satu format berikut:
    • URL yang Diautentikasi: https://storage.googleapis.com/BUCKET/FILE
    • URI gsutil: gs://BUCKET/FILE
Memverifikasi skrip startup

Lihat IP eksternal di browser web untuk memverifikasi bahwa situs dibuat oleh skrip startup. Anda mungkin harus menunggu sekitar 10 menit sampai contoh skrip startup selesai.

gcloud (PowerShell)

Meneruskan skrip startup yang disimpan di Cloud Storage ke VM baru

Teruskan skrip startup yang disimpan di Cloud Storage ke VM Windows Server menggunakan perintah gcloud compute instances create berikut. Untuk nilai flag --scopes, gunakan storage-ro agar VM dapat mengakses Cloud Storage.

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

Ganti kode berikut:

  • VM_NAME: nama VM.
  • CLOUD_STORAGE_URL: nilai metadata. Tetapkan ke lokasi file skrip startup menggunakan salah satu format berikut:
    • URL yang Diautentikasi: https://storage.googleapis.com/BUCKET/FILE
    • URI gsutil: gs://BUCKET/FILE
Meneruskan skrip startup yang disimpan di Cloud Storage ke VM yang ada

Teruskan skrip startup yang disimpan di Cloud Storage ke VM yang ada dengan menggunakan perintah gcloud compute instances add-metadata berikut:

gcloud compute instances add-metadata VM_NAME `
  --metadata=windows-startup-script-url=CLOUD_STORAGE_URL

Ganti kode berikut:

  • VM_NAME: nama VM.
  • CLOUD_STORAGE_URL: nilai metadata. Tetapkan ke lokasi file skrip startup menggunakan salah satu format berikut:
    • URL yang Diautentikasi: https://storage.googleapis.com/BUCKET/FILE
    • URI gsutil: gs://BUCKET/FILE
Memverifikasi skrip startup

Lihat IP eksternal di browser web untuk memverifikasi bahwa situs dibuat oleh skrip startup. Anda mungkin harus menunggu sekitar 10 menit sampai contoh skrip startup selesai.

REST

Meneruskan skrip startup yang disimpan di Cloud Storage ke VM baru

Teruskan skrip startup yang disimpan di Cloud Storage ke VM Windows Server menggunakan metode instances.insert berikut. Di kolom scopes, tambahkan https://www.googleapis.com/auth/devstorage.read_only agar VM dapat mengakses Cloud Storage.

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"
      },
      ...
    ]
  },
  ...
}

Ganti kode berikut:

  • PROJECT_ID: project ID.

  • ZONE: zona tempat membuat VM baru.

  • CLOUD_STORAGE_URL: nilai metadata. Tetapkan ke lokasi Cloud Storage dari file skrip startup menggunakan salah satu format berikut:

    • URL yang Diautentikasi: https://storage.googleapis.com/BUCKET/FILE
    • URI gsutil: gs://BUCKET/FILE

Meneruskan skrip startup yang disimpan di Cloud Storage ke VM yang ada

  1. Dapatkan nilai tags.fingerprint VM menggunakan metode instances.get.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    

    Ganti kode berikut:

    • PROJECT_ID: project ID

    • ZONE: zona VM

    • VM_NAME: zona VM

  2. Teruskan skrip startup menggunakan nilai fingerprint, bersama dengan kunci dan nilai metadata untuk skrip startup, dalam panggilan ke metode instances.setMetadata:

    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"
        }
      ],
      ...
    }
    

    Ganti kode berikut:

    • PROJECT_ID: project ID.

    • ZONE: zona VM.

    • VM_NAME: zona VM.

    • FINGERPRINT: nilai tags.fingerprint yang diperoleh menggunakan metode instances.get.

    • CLOUD_STORAGE_URL: nilai metadata. Tetapkan ke lokasi Cloud Storage dari file skrip startup menggunakan salah satu format berikut:

      • URL yang Diautentikasi: https://storage.googleapis.com/BUCKET/FILE
      • URI gsutil: gs://BUCKET/FILE

Memverifikasi skrip startup

Lihat IP eksternal di browser web untuk memverifikasi bahwa skrip startup membuat situs. Anda mungkin harus menunggu sekitar 10 menit sampai contoh skrip startup selesai.

Mengakses metadata dari skrip startup Windows

Dalam skrip startup, Anda dapat mengakses nilai metadata. Misalnya, Anda dapat menggunakan skrip yang sama untuk beberapa VM, dan membuat parameter setiap skrip satu per satu dengan meneruskan nilai metadata yang berbeda ke setiap VM.

Untuk mengakses nilai metadata kustom dari skrip startup, lakukan hal berikut:

  1. Buat skrip startup yang meng-kueri nilai kunci metadata. Misalnya, skrip startup PowerShell (.ps1) berikut mengkueri nilai kunci metadata 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
    
  2. Tetapkan nilai kunci metadata foo saat membuat VM menggunakan perintah gcloud compute instances create berikut. Untuk contoh ini, skrip startup diteruskan ke VM dari file lokal.

    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
    

    Ganti kode berikut:

    • VM_NAME: nama VM

    • FILE_PATH: jalur relatif ke file skrip startup

    Untuk mengetahui informasi selengkapnya tentang cara menentukan pasangan nilai kunci metadata, lihat Menetapkan dan menghapus metadata kustom.

  3. Lihat IP eksternal di browser web untuk memastikan bahwa skrip startup menghasilkan nilai foo. Anda mungkin harus menunggu sekitar 10 menit hingga contoh skrip startup selesai.

Menjalankan kembali skrip startup Windows

Jalankan kembali skrip startup pada VM Windows dengan melakukan hal berikut:

  1. Menghubungkan ke VM.

  2. Dengan menjalankan perintah berikut:

    C:\Program Files\Google\Compute Engine\metadata_scripts\run_startup_scripts.cmd
    

Melihat output dari skrip startup Windows

Lihat output dari skrip startup Windows Server menggunakan salah satu dari pilihan berikut dan memeriksa peristiwa GCEMetadataScripts:

Langkah selanjutnya