Creazione di una configurazione di base

Questa pagina descrive come creare una configurazione che può essere utilizzata per creare un deployment. Per scoprire di più sui deployment, leggi Creare un deployment.

Un file di configurazione definisce tutte le Google Cloud risorse che compongono un deployment. Per creare un deployment, devi disporre di un file di configurazione. Un file di configurazione deve essere scritto in 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 

Ogni sezione definisce una parte diversa del deployment:

  • La sezione imports è 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 è un elenco delle risorse che compongono questo deployment. Una risorsa può essere:

Puoi anche includere altre sezioni facoltative, come le sezioni outputs e metadata. La sezione outputs ti consente di esporre i dati dei tuoi modelli e delle tue configurazioni come output affinché altri modelli nella stessa implementazione possano utilizzarli o come output per i tuoi 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.

Dichiarare un tipo di risorsa

Ogni risorsa nella configurazione deve essere specificata come tipo. I tipi possono essere un tipo di base gestito da Google, un tipo composto, un fornitore di tipi o un modello importato.

I tipi di base gestiti da Google sono tipi che vengono risolti in 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 avrebbe il seguente tipo:

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 gestiti da Google supportati, consulta Tipi di risorse supportati.

Se utilizzi un provider di tipi o composito, dichiara il tipo nel seguente modo:

# 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 i provider di tipi gestiti da Google (beta). Per un elenco dei provider di tipi, vedi Provider di tipi supportati. Google Cloud

Se vuoi utilizzare i modelli, dichiara il modello come tipo, con il nome o il percorso del modello come valore di type. Ad esempio, la seguente configurazione 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, leggi Creare un modello di base.

Dichiarare le proprietà delle risorse

Dopo aver dichiarato il tipo di risorsa, devi anche assegnarle un name e specificare le proprietà che vuoi per la risorsa. Ad esempio, il seguente file di configurazione definisce un'istanza di macchina virtuale denominata vm-created-by-deployment-manager e le relative proprietà desiderate. Deployment Manager utilizza 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 properties di una risorsa, utilizza la documentazione API per la risorsa:

  • Consulta 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 crei 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 della risorsa. Per determinare se una proprietà è scrivibile, utilizza la documentazione di riferimento dell'API per il tipo di risorsa. Ad esempio, il riferimento di Compute Engine contrassegna alcune proprietà che sono solo di output, quindi non puoi definirle nella configurazione, in quanto sono immutabili.

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

Definizione delle proprietà del modello

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

Creazione di risorse da diversi servizi Google Cloud

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 supportate nella documentazione Tipi di risorse supportati.

Passaggi successivi