Saat menentukan properti untuk konfigurasi atau template, Anda dapat
menggunakan referensi ke properti resource lain, bukan
memberikan nilai secara langsung. Misalnya, jika Anda ingin membuat pengelola grup instance yang menggunakan template instance dari deployment yang sama, alih-alih mengetik link lengkap untuk template instance secara eksplisit, Anda dapat menggunakan referensi dengan sintaksis $(ref.instance-template.selfLink)
.
Dengan referensi, Anda dapat:
Mengakses properti yang tidak ditentukan hingga resource dibuat. Misalnya, saat menentukan mesin virtual 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.
Membuat konfigurasi atau template Anda lebih mudah dibaca dan dipecahkan masalahnya. Misalnya, jika Anda 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 mempermudah untuk mengetahui jaringan mana yang digunakan dalam aturan penerusan.
Saat membuat referensi ke resource, Anda juga membuat dependensi antar-resource. Misalnya, perhatikan cuplikan berikut, di mana 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 diselesaikan. Jika ada referensi yang tidak berhasil diselesaikan, 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 diselesaikan ke selfLink
resource jaringan.
Membuat referensi dalam template
Dalam file template, seluruh referensi harus didahului dengan $
, lalu
dimasukkan dalam satu set tanda kurung:
$(ref.RESOURCE_NAME.PROPERTY)
Anda dapat menggabungkan referensi dengan fitur lain seperti properti template dan variabel lingkungan. Untuk memastikan bahwa Deployment Manager mengurai referensi dengan benar, penting untuk diingat bahwa seluruh string referensi harus berada dalam tanda kurung.
Berikut beberapa contoh mendeklarasikan 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 berikutnya
- Pratinjau konfigurasi Anda sebelum Anda berkomitmen untuk men-deploy-nya.
- Buat deployment.
- Pelajari lebih lanjut template.