Menentukan Properti Template

Salah satu keuntungan menggunakan template adalah kemampuan untuk membuat dan menentukan properti template kustom. Properti template adalah variabel arbitrer yang Anda tentukan dalam file template. Setiap file konfigurasi atau file template yang menggunakan template yang dimaksud dapat memberikan nilai untuk properti template tanpa mengubah template secara langsung. Tindakan ini memungkinkan Anda memisahkan properti sehingga Anda dapat mengubah nilai properti untuk setiap konfigurasi unik tanpa memperbarui template yang mendasarinya.

Misalnya, baris berikut menentukan properti template di URL jenis mesin:

machineType: zones/{{ properties["zone"] }}/machineTypes/n1-standard-1

Dalam konfigurasi yang menggunakan template ini, Anda dapat menetapkan nilai zone di bagian properties template:

imports:
- path: vm_template.jinja

resources:
- name: my-vm
  type: vm_template.jinja
  properties:
    zone: us-central1-a

Deployment Manager akan tahu cara meneruskan nilai zone ke template yang mendasarinya.

Sebelum memulai

Membuat properti template

Untuk membuat properti template:

Jinja

Di Jinja, tentukan properti menggunakan sintaksis berikut:

{{ properties["PROJECT_NAME"] }}

Contoh:

- name: vm-{{ env["deployment"] }}
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: zones/{{ properties["zone"] }}/machineTypes/n1-standard-1
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: projects/debian-cloud/global/images/family/debian-11
    networkInterfaces:
    - network: global/networks/default

Python

Di Python, tentukan properti menggunakan sintaksis berikut:

  context.properties["PROPERTY_NAME"]

Contoh:

resources.append({
    'name': 'vm-' + context.env['deployment'],
    'type': 'compute.v1.instance',
    'properties': {
        'zone': 'us-central1-a',
        'machineType': ''.join(['zones/', context.properties['zone'],
                                '/machineTypes/n1-standard-1']),
        'disks': [{
            'deviceName': 'boot',
            'type': 'PERSISTENT',
            'boot': True,
            'autoDelete': True,
            'initializeParams': {
                'sourceImage':
                    'projects/debian-cloud/global/images/family/debian-11'
            }
        }],
        'networkInterfaces': [{
            'network': 'global/networks/default'
        }]
    }

})

Untuk contoh lengkap Python, lihat repositori GitHub Deployment Manager.

Menetapkan nilai untuk properti template pada konfigurasi tingkat atas

Di konfigurasi level atas, Anda dapat menetapkan nilai untuk properti template menggunakan sintaksis:

imports:
- path: vm_template.jinja

resources:
- name: my-vm
  type: vm_template.jinja
  properties:
    zone: us-central1-a

Anda harus menetapkan nilai untuk semua properti template dalam template tersebut. Misalnya, jika sebuah template memiliki properti template zone, image, network, Anda harus menentukan nilai untuk semua properti tersebut dalam konfigurasi tingkat atas.

Jika properti template tertentu memiliki nilai default, pertimbangkan untuk menggunakan skema untuk menetapkan nilai default ini. Properti template dengan nilai default dapat dihilangkan dari konfigurasi level atas jika nilai default sesuai untuk deployment.

Menetapkan nilai untuk properti template pada command line

Deployment Manager menawarkan kemampuan untuk menetapkan nilai-nilai ini secara langsung di Google Cloud CLI, bukan memberikan nilai untuk properti template dalam file induk yang mengimpor template. Anda tidak perlu membuat file YAML level teratas. Deployment Manager akan otomatis membuat konfigurasi level teratas untuk deployment Anda berdasarkan informasi yang ada dalam permintaan Anda.

Misalnya, anggap Anda memiliki template berikut yang memiliki properti template bernama zone:

- name: vm-{{ env["deployment"] }}
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: zones/{{ properties["zone"] }}/machineTypes/n1-standard-1
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: projects/debian-cloud/global/images/family/debian-11
    networkInterfaces:
    - network: global/networks/default

Dengan Google Cloud CLI, Anda dapat meneruskan file template ini secara langsung dan memberikan nilai untuk properti template Anda di command line. Misalnya, permintaan berikut meneruskan template dan menentukan properti zone langsung di command line:

gcloud deployment-manager deployments create a-single-vm --template vm_template.jinja \
    --properties zone:us-central1-a

Perlu diperhatikan bahwa:

  • Semua nilai diuraikan sebagai nilai YAML. Misalnya, version: 3 diteruskan sebagai bilangan bulat. Jika ingin menentukannya sebagai string, tempatkan tanda kutip tunggal yang di-escape di sekitar nilai, version: \'3\'.

  • Nilai boolean tidak peka huruf besar/kecil, sehingga TRUE, true, dan True diperlakukan sama.

  • Anda harus meneruskan semua properti wajib yang ditentukan oleh template. Anda tidak dapat memberikan subset properti saja. Jika properti tertentu memiliki nilai default, Anda dapat menghilangkan properti ini dari command line.

Untuk menentukan beberapa properti, berikan key:value pair yang dipisahkan koma. Tidak masalah dalam urutan apa pun Anda menentukan pasangan tersebut. Contoh:

gcloud deployment-manager deployments create my-igm \
    --template vm_template.jinja \
    --properties zone:us-central1-a,machineType:n1-standard-1,image:debian-9

Setelah menjalankan perintah ini, Deployment Manager akan membuat deployment menggunakan template yang Anda berikan. Anda dapat mengonfirmasi bahwa deployment telah dibuat menggunakan Google Cloud Console atau gcloud CLI. Untuk informasi tentang cara melihat deployment, baca Melihat manifes.

Langkah selanjutnya