Halaman ini menjelaskan sintaksis yang digunakan oleh Deployment Manager. Gunakan panduan ini sebagai referensi sintaksis yang akan digunakan dalam konfigurasi dan template Anda.
Sintaksis untuk konfigurasi dan template
Sintaksis dasar
resources
- Sekumpulan 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, gunakan bagian accessControl
:
Tambahkan bagian
accessControl
ke konfigurasi level teratas untuk setiap resource tempat Anda ingin menerapkan 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 mengetahui informasi mendetail tentang cara mengontrol akses ke resource, lihat Menyetel 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 mendapatkan informasi tentang kapan harus menggunakan referensi, dan contoh lainnya, pelajari lebih lanjut cara membuat referensi.
Anda dapat menggunakan references ke properti resource lain, bukan
memberikan nilai secara langsung. Misalnya, jika 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)
.
Untuk melihat properti yang dapat dijadikan acuan referensi, lihat metode get
untuk
API resource. Misalnya, untuk melihat daftar semua properti untuk instance VM, lihat respons untuk metode instances.get()
.
Anda mendeklarasikan referensi menggunakan sintaksis yang serupa dengan notasi 'dot' 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 tingkat atas, bukan menyediakan properti dan nilai secara statis langsung di template. Untuk membuat properti template, gunakan sintaksis:
{{ properties["property-name"] }} # Jinja context.properties["property-name"] # Python
Kemudian di konfigurasi level 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 memberikan kunci dan menetapkan nilainya 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
per resource. Deployment Manager memiliki metadata unik yang memicu fitur tertentu. Misalnya, fitur dependsOn
bergantung pada 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 bagaimana pengguna dapat berinteraksi dengan template. Sintaksis berikut dapat digunakan di file skema Anda. Pelajari Skema lebih lanjut.
info
Properti info
berisi informasi meta tentang skema. Elemen 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
impor
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 tersebut.
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 dalam kolom properti dapat ditetapkan oleh pengguna template.
Anda dapat menggunakan semua validasi skema JSON yang didukung untuk properti ini, seperti:
type
(string, boolean, integer, number, ...)default
minimum / exclusiveMinimum / maximum / exclusiveMaximum
minLength / maxLength
pattern
not X / allOf X, Y / anyOf X, Y / oneOf X, Y
Setidaknya, sebaiknya sertakan jenis dan deskripsi kolom agar pengguna tahu berapa nilai yang dapat diterima untuk properti tersebut. Untuk properti opsional, sebaiknya sertakan 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.