Saat menentukan properti untuk konfigurasi atau template, Anda dapat
menggunakan referensi ke properti resource lain, bukan menyediakan nilai secara langsung. Misalnya, jika ingin membuat pengelola grup instance yang menggunakan template instance dari deployment yang sama, Anda dapat menggunakan referensi dengan sintaksis $(ref.instance-template.selfLink)
, bukan mengetik link lengkap untuk template instance secara eksplisit.
Dengan referensi, Anda dapat:
Mengakses properti yang tidak ditentukan hingga resource dibuat. Misalnya, saat menentukan virtual machine dalam konfigurasi, Anda belum mengetahui alamat IP-nya. Namun, Anda tetap dapat menggunakan referensi ke alamat IP. Saat Anda men-deploy konfigurasi, VM akan dibuat terlebih dahulu, dan Deployment Manager akan mendapatkan alamat IP eksternal saat tersedia.
Buat konfigurasi atau template Anda lebih mudah dibaca dan dipecahkan masalahnya. Misalnya, jika perlu mengonfigurasi beberapa aturan penerusan, Anda juga harus menentukan jaringan yang akan digunakan. Daripada memberikan link ke jaringan untuk setiap aturan penerusan, Anda dapat membuat referensi ke properti
selfLink
jaringan menggunakan sintaksis berikut:$(ref.network-name.selfLink)
Jika Anda perlu memecahkan masalah konfigurasi, referensi ini akan memudahkan untuk mengetahui jaringan mana yang digunakan dalam aturan penerusan.
Saat membuat referensi ke resource, Anda juga membuat dependensi antar-resource. Misalnya, pertimbangkan cuplikan berikut, dengan sandbox-vm
menggunakan
referensi ke network-a
:
resources:
- name: sandbox-vm
type: compute.v1.instance
properties:
network: $(ref.network-a.selfLink)
...
...
- name: network-a
type: compute.v1.network
properties:
...
Saat Anda men-deploy konfigurasi ini, Deployment Manager akan membuat network-a
sebelum sandbox-vm
, sehingga referensi dapat di-resolve. Jika referensi
tidak berhasil di-resolve, deployment Anda akan gagal.
Anda dapat menggunakan referensi dalam konfigurasi dan template.
Sebelum memulai
- Jika Anda ingin menggunakan contoh command line dalam panduan ini, instal alat command line`gcloud`.
- Jika Anda ingin menggunakan contoh API dalam panduan ini, siapkan akses API.
- Pahami cara membuat konfigurasi.
- Pahami cara membuat template dasar.
Membuat referensi dalam file konfigurasi
Deklarasikan referensi dalam konfigurasi Anda menggunakan format berikut:
$(ref.RESOURCE_NAME.PROPERTY)
Contoh berikut membuat jaringan, lalu membuat dua instance yang menggunakan referensi ke jaringan yang baru dibuat. Dalam contoh ini, referensinya adalah:
$(ref.a-new-network.selfLink)
Saat Anda men-deploy konfigurasi ini, jaringan dibuat sebelum dua instance, dan referensi di-resolve ke selfLink
resource jaringan.
Membuat referensi dalam template
Dalam file template, seluruh referensi harus didahului dengan $
, lalu
berisi dalam sepasang tanda kurung:
$(ref.RESOURCE_NAME.PROPERTY)
Anda dapat menggabungkan referensi dengan fitur lain seperti properti template dan variabel lingkungan. Untuk memastikan Deployment Manager mengurai referensi dengan benar, Anda harus mengingat untuk menyimpan seluruh string referensi dalam tanda kurung.
Berikut beberapa contoh deklarasi referensi dalam template Anda:
Jinja
Referensi yang menyertakan variabel lingkungan
network: $(ref.{{ env["deployment"] }}-network.selfLink)
Referensi ke nilai dalam array
subnetwork: $(ref.{{ env["deployment"] }}-vm.networkInterfaces[2].subnetwork)
Referensi yang menyertakan properti template
network: $(ref.{{ properties["network"] }}.selfLink)
Referensi menggunakan parameter Jinja
network: $(ref.{{ NETWORK_NAME }}.selfLink)
Referensi dalam output
outputs: - name: UrlToService value: http://$(ref.{{ env["deployment"] }}-network.networkInterfaces[0].accessConfigs[0].natIp):8080/
Python
Referensi yang menyertakan variabel lingkungan
'network': '$(ref.' + context.env['deployment'] + '-network.selfLink)'
Referensi ke nilai dalam array
'subnetwork': '$(ref.' + context.env['deployment'] + '-vm.networkInterfaces[2].subnetwork)'
Referensi yang menyertakan properti template
'network': '$(ref.' + context.properties['network'] + '.selfLink)'
Referensi menggunakan parameter Python
'value': '$(ref.' + base_name + '.networkInterfaces[0].networkIP)'
Referensi dalam output
outputs = [{'name': 'UrlToService', 'value': '$(ref.' + context.env['deployment'] + '-network.networkInterfaces[0].accessConfigs[0].natIP):8080'}]
Langkah selanjutnya
- Lihat pratinjau konfigurasi sebelum Anda berkomitmen untuk men-deploynya.
- Buat deployment.
- Pelajari template lebih lanjut.