Referensi Sintaksis

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 seperti compute.v1.instance, penyedia jenis seperti gcp-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:

  1. Tambahkan bagian accessControl ke konfigurasi tingkat teratas untuk setiap resource yang ingin Anda terapkan kebijakan kontrol aksesnya.

  2. 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
[email protected] 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:[email protected]"       - role: roles/pubsub.publisher         members:         - "user:[email protected]"         - "serviceAccount:[email protected]" 

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 di 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