Saat menentukan properti untuk konfigurasi atau template, Anda dapat
menggunakan references ke properti resource lain, bukan langsung
memberikan nilai. Misalnya, jika Anda ingin membuat pengelola grup instance yang menggunakan template instance dari deployment yang sama, daripada secara eksplisit mengetik link lengkap untuk template instance, Anda dapat menggunakan referensi dengan sintaksis $(ref.instance-template.selfLink)
.
Dengan referensi, Anda dapat:
Akses properti yang tidak ditentukan hingga resource dibuat. Misalnya, saat menentukan virtual machine dalam konfigurasi, Anda belum mengetahui alamat IP-nya. Namun, Anda masih dapat menggunakan referensi ke alamat IP tersebut. Saat Anda men-deploy konfigurasi, VM akan dibuat terlebih dahulu, lalu Deployment Manager mendapatkan alamat IP eksternal saat tersedia.
Buat konfigurasi atau template Anda lebih mudah dibaca dan memecahkan masalah. 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 akan mempermudah untuk mengetahui jaringan mana yang sedang digunakan dalam aturan penerusan.
Saat membuat referensi ke suatu resource, Anda juga membuat dependensi antar-resource. Misalnya, perhatikan cuplikan berikut, saat 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 ada referensi yang tidak berhasil diselesaikan, deployment Anda akan gagal.
Anda dapat menggunakan referensi baik dalam konfigurasi maupun 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.
- Pelajari cara membuat konfigurasi.
- Pelajari 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 akan dibuat sebelum kedua
instance, dan referensi ditetapkan ke selfLink
resource jaringan.
Membuat referensi dalam {i>template<i}
Dalam file template, seluruh referensi harus didahului dengan $
, lalu
dimuat dalam kumpulan 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, penting untuk mengingat untuk menyimpan seluruh string referensi Anda dalam tanda kurung.
Berikut adalah beberapa contoh mendeklarasikan referensi dalam template Anda:
Jinja
Referensi yang mencakup variabel lingkungan
network: $(ref.{{ env["deployment"] }}-network.selfLink)
Rujukan 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 mencakup variabel lingkungan
'network': '$(ref.' + context.env['deployment'] + '-network.selfLink)'
Rujukan 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-deploy-nya.
- Membuat deployment.
- Pelajari template lebih lanjut.