Halaman ini menjelaskan sintaksis yang digunakan oleh Deployment Manager. Gunakan panduan ini sebagai referensi untuk sintaksis yang akan digunakan dalam konfigurasi dan template Anda.
Sintaksis untuk konfigurasi dan template
Sintaksis dasar
resources
- Kumpulan resource yang akan dibuat.name
- Nama untuk pembuatan instance resource ini.type
- Jenis resource. Ini dapat berupa jenis dasar seperticompute.v1.instance
, penyedia jenis sepertigcp-types/compute-v1:addresses
, atau template yang diimpor. Lihat daftar penyedia jenis yang didukung.properties
- Properti resource ini. Untuk pengantar, lihat Properti template.metadata
- Konfigurasi tambahan untuk resource ini. Lihat daftar kolom di Metadata.
Contoh
resources:
- name: vm-instance
type: compute.v1.instance
properties:
machineType: zones/us-central1-a/machineTypes/n1-standard-1
...
Kontrol Akses
Jika ingin menetapkan kebijakan IAM pada resource, Anda menggunakan bagian accessControl
:
Tambahkan bagian
accessControl
ke konfigurasi tingkat teratas untuk setiap resource yang ingin Anda terapkan kebijakan kontrol aksesnya.Tentukan
gcpIamPolicy
yang diinginkan untuk resource. Setiap kebijakan IAM dapat berisi daftar binding. Setiap binding mengikat daftar akun utama ke peran.
Untuk informasi mendetail tentang cara mengontrol akses ke resource, lihat Menetapkan kontrol akses dalam konfigurasi.
Misalnya, bagian accessControl
berikut menambahkan binding yang memberikan
peran ini kepada pengguna:
Pengguna | Peran |
---|---|
alice@example.com |
roles/pubsub.editor |
|
roles/pubsub.publisher |
resources:
- name: a-new-pubsub-topic
type: pubsub.v1.topic
properties:
...
accessControl:
gcpIamPolicy:
bindings:
- role: roles/pubsub.editor
members:
- "user:alice@example.com"
- role: roles/pubsub.publisher
members:
- "user:jane@example.com"
- "serviceAccount:my-other-app@appspot.gserviceaccount.com"
Referensi
Untuk mengetahui informasi tentang kapan harus menggunakan referensi, dan contoh lainnya, pelajari lebih lanjut cara membuat referensi.
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, Anda dapat menggunakan referensi dengan sintaksis $(ref.instance-template.selfLink)
, bukan mengetik link lengkap untuk template instance secara eksplisit.
Untuk melihat properti yang dapat Anda buat referensinya, lihat metode get
untuk
API resource. Misalnya, untuk mengetahui daftar semua properti untuk instance VM, lihat respons untuk metode instances.get()
.
Anda mendeklarasikan referensi menggunakan sintaksis yang mirip dengan notasi 'titik' JSONPath. Gunakan sintaksis berikut untuk mendeklarasikan referensi:
$(ref.RESOURCE_NAME.PATH_TO_PROPERTY)
Untuk properti yang berupa daftar, seperti antarmuka jaringan untuk instance Compute Engine, gunakan sintaksis berikut:
$(ref.RESOURCE_NAME.LIST_PROPERTY[index].ITEM)
Contoh
$(ref.exampleInstance.networkInterfaces[0].natIp)
$(ref.exampleInstance.serviceAccounts[0].email)
Variabel lingkungan khusus deployment
Saat Anda membuat deployment, Deployment Manager akan membuat variabel lingkungan yang berisi potongan informasi tentang deployment Anda, seperti nama project saat ini, nama deployment, dan sebagainya.
Untuk mengetahui daftar lengkap variabel lingkungan yang tersedia, lihat Variabel lingkungan.
Untuk menggunakan variabel lingkungan:
{{ env["deployment"] }} # Jinja context.env["deployment"] # Python
Contoh
- type: compute.v1.instance name: vm-{{ env["deployment"] }}
Properti template
Properti template adalah properti arbitrer yang Anda buat. Daripada melakukan hard code pada nilai, Anda dapat mendeklarasikan properti template dan menetapkan nilai properti dalam konfigurasi level teratas, bukan menyediakan properti dan nilai secara statis langsung dalam template. Untuk membuat properti template, gunakan sintaksis:
{{ properties["property-name"] }} # Jinja context.properties["property-name"] # Python
Kemudian, di konfigurasi tingkat teratas atau template induk, tetapkan nilai properti:
imports:
- path: vm_template.jinja
resources:
- name: my-vm
type: vm_template.jinja
properties:
property-name: example-value
Pelajari Properti Template lebih lanjut.
Output
Di bagian output, Anda dapat menentukan key-value pair arbitrer yang mengekspos informasi tertentu tentang deployment Anda. Anda memberikan kunci dan menetapkan nilai sebagai string statis, referensi ke properti, variabel template, atau variabel lingkungan.
outputs
- Mendeklarasikan daftar output yang dapat dipanggil pengguna di properti resource mereka.name
- Nama properti output.value
- Nilai properti output.
Contoh
resources:
- name: vm-instance
type: compute.v1.instance
...
outputs:
- name: databaseIp
value: $(ref.vm-instance.networkInterfaces[0].natIp)
- name: databaseName
value: example-database
Pelajari Output lebih lanjut.
Metadata
Bagian metadata
berisi metadata khusus yang dapat Anda terapkan berdasarkan
per resource. Deployment Manager memiliki metadata unik yang memicu fitur
tertentu. Misalnya, fitur dependsOn
mengandalkan entri metadata.
Bergantung pada
Properti dependsOn
membuat dependensi eksplisit di antara resource Anda.
Misalnya, menentukan bahwa Resource A bergantung pada Resource B akan memastikan bahwa Resource B selalu dibuat sebelum Resource A.
metadata: the metadata for this resource
dependsOn: Any explicit dependencies to another resource.
Contoh
resources:
- name: vm-instance
type: compute.v1.instance
properties:
machineType: zones/us-central1-a/machineTypes/n1-standard-1
...
metadata:
dependsOn:
- persistent-disk-1
- a-new-network-1
Pelajari lebih lanjut cara membuat dependensi eksplisit.
Sintaksis untuk skema
Skema adalah cara bagi Anda untuk mengontrol cara pengguna berinteraksi dengan template. Sintaksis berikut dapat digunakan dalam file skema Anda. Pelajari Skema lebih lanjut.
info
Properti info
berisi informasi meta tentang skema. Hal ini mencakup
informasi seperti judul, nomor versi, deskripsi, dan sebagainya.
Minimal, berikan judul dan deskripsi di properti ini.
Contoh
info:
title: MongoDB Template
author: Jane
description: Creates a MongoDB cluster
version: 1.0
imports
Kolom imports
berisi daftar file yang sesuai yang diperlukan untuk
template yang menggunakan skema ini. Saat Anda mengupload template dengan skema yang memiliki daftar impor, Deployment Manager akan memeriksa apakah semua file dalam properti impor diupload bersama dengan template.
Contoh
imports:
- path: helper.py
name: mongodb_helper.py
wajib
Kolom wajib berisi daftar elemen dari kolom properti yang diperlukan dalam template yang menggunakan skema. Setiap elemen yang tidak ditentukan dalam kolom wajib diisi ini dianggap opsional.
Contoh
required:
- name
properties:
name:
type: string
description: Name of your Mongo Cluster
size:
type: integer
default: 2
description: Number of Mongo Secondaries
properties
Kolom properties
berisi aturan skema JSON untuk dokumen ini.
Elemen yang dijelaskan di kolom properti dapat ditetapkan oleh pengguna template.
Anda dapat menggunakan semua validasi skema JSON yang didukung untuk properti ini, seperti:
type
(string, boolean, bilangan bulat, angka, ...)default
minimum / exclusiveMinimum / maximum / exclusiveMaximum
minLength / maxLength
pattern
not X / allOf X, Y / anyOf X, Y / oneOf X, Y
Minimal, sebaiknya sertakan jenis dan deskripsi kolom agar pengguna mengetahui nilai yang dapat diterima untuk properti. Untuk properti opsional, sebaiknya sertakan juga nilai default.
Baca dokumentasi Validasi Skema JSON untuk mengetahui daftar kata kunci validasi.
Contoh
properties:
name:
type: string
description: Name of your Mongo Cluster
size:
type: integer
default: 2
description: Number of Mongo Secondaries
minimum: 1
Langkah selanjutnya
- Pelajari Referensi.
- Pelajari Variabel Lingkungan.
- Pelajari Properti Template.
- Pelajari Output.
- Pelajari Skema.