Membuat Konfigurasi Dasar

Halaman ini menjelaskan cara membuat konfigurasi yang dapat digunakan untuk membuat deployment. Untuk mempelajari deployment lebih lanjut, baca Membuat Deployment.

File konfigurasi menentukan semua resource Google Cloud yang membentuk deployment. Anda harus memiliki file konfigurasi untuk membuat deployment. File konfigurasi harus ditulis dalam sintaksis YAML.

Sebelum memulai

Struktur file konfigurasi

File konfigurasi ditulis dalam format YAML dan memiliki struktur berikut:

#  imported templates, if applicable
imports:
  #  path relative to the configuration file
- path: path/to/template.jinja
  name: my-template
- path: path/to/another/template.py
  name: another-template

resources:
  - name: NAME_OF_RESOURCE
    type: TYPE_OF_RESOURCE
    properties:
      property-a: value
      property-b: value
      ...
      property-z: value
  - name: NAME_OF_RESOURCE
    type: TYPE_OF_RESOURCE
    properties:
      property-a: value
      property-b: value
      ...
      property-z: value

Setiap bagian menentukan bagian deployment yang berbeda:

  • Bagian imports adalah daftar file template yang akan digunakan oleh konfigurasi. Deployment Manager memperluas template yang diimpor untuk membentuk konfigurasi akhir Anda.

  • Bagian resources adalah daftar resource yang membentuk deployment ini. Resource dapat berupa:

Anda juga dapat menyertakan bagian opsional lainnya, seperti bagian outputs dan metadata. Bagian outputs memungkinkan Anda mengekspos data dari template dan konfigurasi sebagai output untuk template lain dalam deployment yang sama yang dapat digunakan atau sebagai output bagi pengguna akhir Anda, sedangkan bagian metadata memungkinkan Anda menggunakan fitur lainnya, seperti menetapkan dependensi eksplisit di antara resource.

Setidaknya, konfigurasi harus selalu mendeklarasikan bagian resources, diikuti dengan daftar resource. Bagian lainnya bersifat opsional.

Mendeklarasikan jenis resource

Setiap resource dalam konfigurasi Anda harus ditetapkan sebagai jenis. Jenis dapat berupa jenis dasar yang dikelola Google, jenis komposit, penyedia jenis, atau template yang diimpor.

Jenis dasar yang dikelola Google adalah jenis yang di-resolve ke resource Google Cloud. Misalnya, instance Cloud SQL atau bucket Cloud Storage adalah jenis dasar yang dikelola Google. Anda dapat mendeklarasikan jenis ini menggunakan sintaksis berikut:

type: <api>.<api-version>.<resource-type>

Misalnya, instance Compute Engine akan memiliki jenis berikut:

type: compute.v1.instance

Untuk database BigQuery, jenisnya mungkin:

type: bigquery.v2.dataset

Untuk melihat daftar semua jenis yang didukung, gunakan perintah berikut:

gcloud deployment-manager types list

Untuk daftar lengkap jenis dasar yang dikelola Google yang didukung, lihat Jenis Resource yang Didukung.

Jika Anda menggunakan komposit atau penyedia jenis, deklarasikan jenis sebagai berikut:

# Composite type

resources:
- name: my-composite-type
  type: [PROJECT]/composite:[TYPE_NAME]

Untuk penyedia jenis:

# Base type

resources:
- name: my-base-type
  type: [PROJECT_ID]/[TYPE_PROVIDER_NAME]:[TYPE_NAME]

Anda juga dapat membuat fasilitas menggunakan penyedia jenis yang dikelola Google (beta). Untuk mengetahui daftar penyedia jenis Google Cloud, lihat Penyedia Jenis yang Didukung.

Jika Anda ingin menggunakan template, deklarasikan template sebagai jenis, dengan nama atau jalur template sebagai nilai type. Misalnya, konfigurasi berikut mengimpor template yang disebut my_vm_template.jinja dan menyediakannya sebagai jenis:

imports:
- path: path/to/template/my_vm_template.jinja
  name: my-template.jinja

resources:
- name: my-first-virtual-machine
  type: my-template.jinja

Untuk informasi selengkapnya tentang template, baca Membuat Template Dasar.

Mendeklarasikan properti resource

Setelah mendeklarasikan jenis resource, Anda juga harus memberikan name pada resource dan menentukan properti yang diinginkan untuk resource tersebut. Misalnya, file konfigurasi berikut menentukan instance virtual machine yang disebut vm-created-by-deployment-manager dan properti yang diinginkannya. Deployment Manager menggunakan informasi ini untuk membuat instance VM yang memiliki properti ini.

# Copyright 2016 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

resources:
- name: vm-created-by-deployment-manager
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: zones/us-central1-a/machineTypes/n1-standard-1
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: projects/debian-cloud/global/images/family/debian-11
    networkInterfaces:
    - network: global/networks/default

Untuk menentukan properties resource, gunakan dokumentasi API untuk resource tersebut:

  • Lihat format permintaan dalam metode insert atau create untuk resource.
  • Jika URI permintaan berisi zona, tambahkan zona ke properti.
  • Untuk array, gunakan sintaksis daftar YAML untuk mencantumkan elemen array. Misalnya, jika membuat instance Compute Engine menggunakan API, Anda harus menyediakan array disk untuk dilampirkan ke instance, dalam format berikut:

    "disks": [
      {
        "type": "PERSISTENT",
        "deviceName": "disk1",
        ...
      },
      {
        "type": "PERSISTENT",
        "deviceName": "disk2",
        ...
      }
    ]
    

    Di konfigurasi Deployment Manager, tambahkan disk ini menggunakan sintaksis berikut:

    disks:
    - deviceName: disk1
      type: PERSISTENT
      ...
    - deviceName: disk2
      type: PERSISTENT
    

Anda juga dapat memberikan properti yang dapat ditulis dari resource tersebut. Untuk menentukan apakah properti dapat ditulis, gunakan dokumentasi referensi API untuk jenis resource. Misalnya, referensi Compute Engine menandai properti tertentu yang hanya merupakan output, sehingga Anda tidak dapat menentukan properti ini dalam konfigurasi karena tidak dapat diubah.

Beberapa API memerlukan kumpulan properti minimum untuk membuat resource. Misalnya, Persistent disk Compute Engine memerlukan nama disk, sumber gambar, ukuran disk, dan sebagainya saat membuat disk baru. Untuk informasi tentang resource tertentu, tinjau referensi API untuk resource tersebut.

Menentukan properti template

Jika mengimpor template untuk digunakan dalam konfigurasi, Anda akan menggunakan bagian properties untuk menentukan nilai untuk properti template, bukan properti resource. Atau, jika template tidak memiliki properti template, Anda dapat menghilangkan bagian properties sepenuhnya.

Membuat resource dari berbagai layanan Google Cloud

Terakhir, file konfigurasi dapat membuat resource dari berbagai layanan Google Cloud. Misalnya, file konfigurasi berikut membuat resource dari Compute Engine dan BigQuery:

# Copyright 2016 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

resources:
- name: vm-created-by-deployment-manager
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: zones/us-central1-a/machineTypes/n1-standard-1
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: projects/debian-cloud/global/images/family/debian-11
    networkInterfaces:
    - network: global/networks/default

- name: big-query-dataset
  type: bigquery.v2.dataset
  properties:
    datasetReference:
      datasetId: example_id

Jenis dan properti resource yang didukung

Lihat daftar lengkap resource yang didukung Google dalam dokumentasi Jenis Resource yang Didukung.

Langkah selanjutnya

  • Lihat pratinjau konfigurasi sebelum Anda berkomitmen untuk men-deploy-nya.
  • Setelah Anda puas dengan konfigurasinya, gunakan konfigurasi tersebut untuk membuat deployment.
  • Terakhir, sebaiknya pertimbangkan untuk mengolah ulang file konfigurasi untuk menggunakan template.