File konfigurasi dasar mungkin cukup untuk workload sederhana, tetapi untuk arsitektur yang lebih kompleks atau untuk konfigurasi yang berencana Anda gunakan kembali, Anda dapat membagi konfigurasi menjadi template.
Template adalah file terpisah yang diimpor dan digunakan sebagai jenis dalam konfigurasi. Anda dapat menggunakan template sebanyak yang Anda inginkan dalam konfigurasi.
Dengan template, Anda dapat memisahkan konfigurasi menjadi beberapa bagian yang dapat Anda gunakan dan gunakan kembali di berbagai deployment. Template dapat digeneralisasi atau disesuaikan sesuai kebutuhan Anda. Dengan template, Anda juga dapat memanfaatkan fitur seperti properti template, variabel lingkungan, modul, dan fungsi template lainnya untuk membuat file konfigurasi dan template dinamis.
Untuk mengetahui contoh template yang dapat Anda gunakan dalam deployment sendiri, lihat repositori GitHub Deployment Manager.
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 dasar.
Sintaksis template
Template dapat ditulis dalam Jinja 2.10.x atau Python 3.x. Jinja lebih cocok dengan sintaksis YAML, sehingga akan lebih mudah menulis template di Jinja jika Anda lebih memahami YAML.
Anda juga dapat menulis file template di Python dan memanfaatkan Python untuk membuat bagian template Anda secara terprogram. Misalnya, Anda dapat menggunakan library Python untuk memformat definisi template. Jika Anda sudah terbiasa dengan Python, format ini mungkin lebih cocok untuk Anda.
Deployment Manager menerima template Jinja dan Python. Anda dapat mengimpor template dalam kedua bahasa dalam konfigurasi yang sama.
Membuat template dasar
Template adalah file yang Anda buat, yang ditulis dalam Jinja atau Python. Misalnya, pertimbangkan file konfigurasi berikut:
Konfigurasi ini valid, tetapi Anda dapat menyederhanakan konfigurasi lebih lanjut dengan memecah berbagai bagian sebagai file template individual yang dapat Anda gunakan kembali. Untuk membuat template berdasarkan konfigurasi di atas, tarik keluar bagian untuk resource yang dimaksud dan buat file Jinja atau Python baru.
Cuplikan berikut menunjukkan bagian template yang dapat menyederhanakan deployment Anda. Untuk melihat template lengkap, klik Lihat di GitHub.
Jinja
Python
Template Python Anda harus memenuhi persyaratan berikut:
Template harus menentukan metode yang disebut
GenerateConfig(context)
ataugenerate_config(context)
. Jika Anda menggunakan kedua nama metode dalam template yang sama, metodegenerate_config()
akan diprioritaskan.Objek
context
berisi metadata tentang deployment dan lingkungan Anda, seperti nama deployment, project saat ini, dan sebagainya. Pelajari lebih lanjut cara menggunakan variabel lingkungan khusus deployment.Metode ini harus menampilkan kamus Python.
Selain itu, Anda yang menentukan isi template Anda.
Contoh
Untuk contoh Python lengkap, lihat repositori GitHub Deployment Manager.
Mengimpor template
Setelah membuat template, impor ke file konfigurasi Anda untuk menggunakannya.
Untuk mengimpor template, tambahkan bagian imports
dalam konfigurasi Anda, diikuti
dengan jalur relatif atau absolut dari direktori saat ini. Misalnya, Anda
dapat mengimpor template virtual machine dari langkah sebelumnya dengan menambahkan
baris berikut ke bagian atas konfigurasi Anda:
imports:
- path: path/to/my_vm_template.jinja
Jika memiliki jalur file yang panjang, Anda dapat memberikan properti name
opsional sebagai
alias untuk file. Anda dapat menggunakan nama ini untuk mereferensikan template nanti. Jika Anda tidak memberikan nama, template dapat dirujuk menggunakan
path
.
imports:
- path: path/to/my_vm_template.jinja
name: my_renamed_template.jinja
Anda dapat memadukan impor beberapa template, terlepas dari apakah template tersebut adalah Jinja atau Python:
imports:
- path: path/to/my_vm_template.jinja
name: my_renamed_template.jinja
- path: special_vm.py
Jika template Anda menggunakan template lain sebagai dependensi, impor template dependen dalam konfigurasi Anda juga:
imports:
- path: path/to/my_vm_template.jinja
- path: special_vm.py
- path: base_vm.jinja
Anda juga dapat mengimpor file teks untuk menyisipkan konten. Misalnya, jika Anda membuat file bernama resource_type.txt dengan string berikut:
compute.v1.instance
Impor ke dalam konfigurasi Anda dan berikan konten sebaris seperti ini:
imports: - path: resource_type.txt resources: - name: my-vm type: {{ imports["resource_type.txt"] }} # Resolves to "compute.v1.instance" properties: zone: us-central1-a machineType: zones/us-central1-a/machineTypes/f1-micro disks: - deviceName: boot type: PERSISTENT boot: true autoDelete: true initializeParams: sourceImage: projects/debian-cloud/global/images/family/debian-9 networkInterfaces: - network: global/networks/default accessConfigs: - name: External NAT type: ONE_TO_ONE_NAT
Men-deploy template
Setelah mengimpor template, gunakan template tersebut sebagai jenis dalam konfigurasi Anda:
Jinja
Python
Jika Anda tidak memberikan nama untuk template, panggil template menggunakan jalur template:
imports:
- path: path/to/my_vm_template.jinja
resources:
- name: my-first-virtual-machine
type: path/to/my_vm_template.jinja
Men-deploy template secara langsung dengan alat command line
Daripada membuat file konfigurasi tingkat teratas, Deployment Manager menawarkan kemampuan untuk men-deploy template langsung di Google Cloud CLI.
Misalnya, permintaan berikut men-deploy template bernama vm-template.jinja
:
gcloud deployment-manager deployments create a-single-vm --template vm-template.jinja
Jika template Anda memiliki properti template,
Anda juga dapat menetapkan properti ini di command line menggunakan flag --properties
:
gcloud deployment-manager deployments create my-igm \
--template vm-template.jinja \
--properties zone:us-central1-a
Perlu diperhatikan bahwa:
Semua nilai diurai sebagai nilai YAML. Misalnya,
version: 3
diteruskan sebagai bilangan bulat. Jika Anda ingin menentukannya sebagai string, masukkan tanda kutip tunggal yang di-escape di sekitar nilai,version: \'3\'
.Nilai boolean tidak peka huruf besar/kecil, sehingga
TRUE
,true
, danTrue
diperlakukan sama.Anda harus meneruskan semua properti yang diperlukan yang ditentukan oleh template. Anda tidak dapat hanya memberikan subset properti. Jika properti tertentu memiliki nilai default, Anda dapat menghilangkan properti tersebut dari command line.
Untuk menentukan beberapa properti, berikan pasangan key:value yang dipisahkan koma. Tidak masalah urutan Anda menentukan pasangan. Contoh:
gcloud deployment-manager deployments create my-igm
--template vm-template.jinja
--properties zone:us-central1-a,machineType:n1-standard-1,image:debian-9
Setelah menjalankan perintah ini, Deployment Manager akan membuat deployment menggunakan template yang Anda berikan. Anda dapat mengonfirmasi bahwa deployment telah dibuat menggunakan Google Cloud konsol atau gcloud CLI. Untuk mengetahui informasi tentang cara melihat deployment, baca Melihat manifes.
Langkah berikutnya
- Untuk mengetahui contoh template yang siap produksi, lihat contoh Cloud Foundation Toolkit di GitHub.
- Gunakan properti template untuk lebih mengabstraksi konten Anda.
- Isi informasi tentang project dan deployment Anda menggunakan variabel lingkungan.
- Tambahkan template secara permanen ke project Anda sebagai jenis komposit.