Creazione di una configurazione di base

Questa pagina descrive come creare una configurazione che possa essere utilizzata per creare un deployment. Per saperne di più sui deployment, consulta Creazione di un deployment.

Un file di configurazione definisce tutte le risorse Google Cloud che compongono un deployment. Per creare un deployment, devi disporre di un file di configurazione. Un file di configurazione deve essere scritto con la sintassi YAML.

Prima di iniziare

Struttura del file di configurazione

Un file di configurazione è scritto in formato YAML e ha la seguente struttura:

#  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

Ognuna delle sezioni definisce una parte diversa del deployment:

  • Le sezioni imports sono un elenco di file modello che verranno utilizzati dalla configurazione. Deployment Manager espande in modo ricorsivo tutti i modelli importati per formare la configurazione finale.

  • La sezione resources contiene un elenco di risorse che compongono questo deployment. Una risorsa può essere:

Puoi anche includere altre sezioni facoltative, ad esempio le sezioni outputs e metadata. La sezione outputs ti consente di esporre i dati di modelli e configurazioni come output per altri modelli nello stesso deployment da utilizzare o come output per gli utenti finali, mentre la sezione metadata ti consente di utilizzare altre funzionalità, come l'impostazione di dipendenze esplicite tra le risorse.

Come minimo, una configurazione deve sempre dichiarare la sezione resources, seguita da un elenco di risorse. Le altre sezioni sono facoltative.

Dichiarazione di un tipo di risorsa

Ogni risorsa della configurazione deve essere specificata come tipo. I tipi possono essere un tipo di base gestito da Google, un tipo composito, un provider di tipi o un modello importato.

I tipi di base gestiti da Google sono tipi che si risolvono nelle risorse Google Cloud. Ad esempio, un'istanza Cloud SQL o un bucket Cloud Storage è un tipo di base gestito da Google. Puoi dichiarare questi tipi utilizzando la seguente sintassi:

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

Ad esempio, un'istanza Compute Engine avrà il tipo seguente:

type: compute.v1.instance

Per un database BigQuery, il tipo potrebbe essere:

type: bigquery.v2.dataset

Per un elenco di tutti i tipi supportati, utilizza il seguente comando:

gcloud deployment-manager types list

Per un elenco completo dei tipi di base supportati gestiti da Google, consulta Tipi di risorse supportati.

Se utilizzi un provider di dati compositi o un provider di tipi, dichiara il tipo come segue:

# Composite type

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

Per un fornitore di tipi:

# Base type

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

Puoi anche creare risorse utilizzando provider di tipi gestiti da Google (beta). Per un elenco dei provider di tipi Google Cloud, consulta Fornitori dei tipi supportati.

Se vuoi utilizzare i modelli, dichiara il modello come tipo, utilizzando il nome o il percorso del modello come valore type. Ad esempio, la configurazione seguente importa un modello denominato my_vm_template.jinja e lo fornisce come tipo:

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

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

Per saperne di più sui modelli, consulta Creazione di un modello di base.

Dichiarazione delle proprietà delle risorse

Dopo aver dichiarato il tipo di risorsa, devi anche assegnare un name alla risorsa e specificare le proprietà desiderate per la risorsa. Ad esempio, il seguente file di configurazione definisce un'istanza di una macchina virtuale denominata vm-created-by-deployment-manager e le proprietà desiderate. Deployment Manager usa queste informazioni per creare un'istanza VM con queste proprietà.

# 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

Per determinare il valore properties di una risorsa, utilizza la documentazione dell'API per la risorsa:

  • Controlla il formato della richiesta nel metodo insert o create per la risorsa.
  • Se l'URI della richiesta contiene la zona, aggiungila alle proprietà.
  • Per gli array, utilizza la sintassi dell'elenco YAML per elencare gli elementi dell'array. Ad esempio, se stai creando un'istanza Compute Engine utilizzando l'API, devi fornire un array di dischi da collegare all'istanza nel seguente formato:

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

    Nella configurazione di Deployment Manager, aggiungi questi dischi utilizzando la seguente sintassi:

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

Puoi anche fornire qualsiasi proprietà scrivibile di questa risorsa. Per determinare se una proprietà è scrivibile, utilizza la documentazione di riferimento dell'API per il tipo di risorsa. Ad esempio, il riferimento Compute Engine contrassegna alcune proprietà che sono solo di output, quindi non puoi definire queste proprietà nella configurazione, poiché sono immutabili.

Alcune API richiedono un insieme minimo di proprietà per creare una risorsa. Un disco permanente di Compute Engine, ad esempio, richiede il nome del disco, l'origine dell'immagine, la dimensione del disco e così via, quando viene creato un nuovo disco. Per informazioni su una risorsa specifica, consulta il riferimento API per la risorsa.

Definizione delle proprietà del modello

Se importi un modello da utilizzare nella configurazione, utilizzerai la sezione properties per definire i valori delle proprietà del modello anziché delle proprietà delle risorse. In alternativa, se il modello non ha proprietà per il modello, puoi omettere del tutto la sezione properties.

Creazione di risorse da servizi Google Cloud diversi

Infine, un file di configurazione può creare risorse da diversi servizi Google Cloud. Ad esempio, il seguente file di configurazione crea risorse da Compute Engine e 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

Tipi di risorse e proprietà supportati

Consulta l'elenco completo delle risorse gestite da Google nella documentazione sui tipi di risorse supportati.

Passaggi successivi