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. Hal 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 untuk 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 Python lengkap, lihat repositori GitHub Deployment Manager.

Menetapkan nilai untuk properti template di konfigurasi level teratas

Pada konfigurasi tingkat teratas, 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. Misalnya, jika template memiliki properti template zone, image, network, Anda harus menentukan nilai untuk semua properti tersebut dalam konfigurasi tingkat teratas.

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 tingkat teratas jika nilai default sesuai untuk deployment.

Menetapkan nilai untuk properti template di command line

Daripada memberikan nilai untuk properti template dalam file induk yang mengimpor template, Deployment Manager menawarkan kemampuan untuk menetapkan nilai ini langsung di Google Cloud CLI. Anda dapat melewati pembuatan file YAML tingkat teratas; Deployment Manager akan otomatis membuat konfigurasi tingkat teratas untuk deployment Anda berdasarkan informasi dalam permintaan Anda.

Misalnya, Anda memiliki template berikut yang memiliki properti template yang disebut 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 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 Anda ingin menentukannya sebagai string, masukkan 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 yang diperlukan yang ditentukan oleh template. Anda tidak dapat hanya memberikan sebagian properti. Jika properti tertentu memiliki nilai default, Anda dapat menghilangkan properti dari command line.

Untuk menentukan beberapa properti, berikan pasangan nilai kunci yang dipisahkan koma. Urutan Anda menentukan pasangan tidak penting. 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 Konsol Google Cloud atau gcloud CLI. Untuk mengetahui informasi tentang cara melihat deployment, baca Melihat manifes.

Langkah selanjutnya