Saat menentukan properti untuk konfigurasi atau template, Anda dapat menggunakan referensi ke properti resource lain, bukan memberikan 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) dan tidak perlu mengetik link lengkap untuk template instance secara eksplisit.
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 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
selfLinkjaringan menggunakan sintaksis berikut:$(ref.network-name.selfLink)Jika Anda perlu memecahkan masalah konfigurasi, referensi akan memudahkan Anda mengetahui jaringan mana yang digunakan dalam aturan penerusan.
Saat membuat referensi ke resource, Anda juga membuat dependensi antar-resource. Misalnya, perhatikan 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 ada referensi yang 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 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 dua instance, dan referensi akan di-resolve ke selfLink resource jaringan.
Membuat referensi dalam template
Dalam file template, seluruh referensi harus diawali dengan $ dan kemudian berada dalam satu set 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 diingat agar seluruh string referensi tetap berada dalam tanda kurung.
Berikut beberapa contoh deklarasi referensi dalam template:
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 sebelum Anda berkomitmen untuk men-deploy-nya.
- Buat deployment.
- Pelajari lebih lanjut tentang template.