In questa pagina viene descritta la sintassi utilizzata da Deployment Manager. Utilizza questa guida come riferimento per la sintassi da utilizzare nelle configurazioni e nei modelli.
Sintassi per configurazioni e modelli
Sintassi di base
resources
: un insieme di risorse da creare.name
: il nome dell'istanza di questa risorsa.type
: il tipo di risorsa. Può essere un tipo di base comecompute.v1.instance
, un provider di tipi comegcp-types/compute-v1:addresses
o un modello importato. Consulta l'elenco dei fornitori di tipi supportati.properties
: le proprietà di questa risorsa. Per un'introduzione, vedi Proprietà del modello:metadata
: configurazione aggiuntiva per questa risorsa. Visualizza un elenco di campi in Metadati.
Esempio
resources:
- name: vm-instance
type: compute.v1.instance
properties:
machineType: zones/us-central1-a/machineTypes/n1-standard-1
...
Controllo dell'accesso
Se vuoi impostare i criteri IAM sulle tue risorse, utilizza un accessControl
sezione:
Aggiungi la sezione
accessControl
alla configurazione di primo livello per ogni risorsa per cui vuoi applicare criteri di controllo dell'accesso.Specifica il valore
gcpIamPolicy
desiderato per la risorsa. Ciascun criterio IAM può contiene un elenco di associazioni. Ogni associazione lega un elenco di principali a un ruolo.
Per informazioni dettagliate sul controllo dell'accesso alle risorse, consulta Impostare il controllo dell'accesso in una configurazione.
Ad esempio, la sezione accessControl
seguente aggiunge associazioni che concedono questi ruoli agli utenti:
Utente | Ruolo |
---|---|
alice@example.com |
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:alice@example.com"
- role: roles/pubsub.publisher
members:
- "user:jane@example.com"
- "serviceAccount:my-other-app@appspot.gserviceaccount.com"
Riferimenti
Per informazioni su quando utilizzare i riferimenti e altri esempi, scopri di più sulla creazione dei riferimenti.
Puoi utilizzare riferimenti alle proprietà di altre risorse anziché fornire direttamente i valori. Ad esempio, se vuoi creare un gestore di gruppi di istanze che utilizza un modello di istanza dello stesso deployment, anziché digitare esplicitamente il link completo del modello di istanza, puoi utilizzare un riferimento con la sintassi $(ref.instance-template.selfLink)
.
Per vedere le proprietà a cui puoi creare riferimenti, consulta il metodo get
per
all'API della risorsa. Ad esempio, per un elenco di tutte le proprietà di un'istanza VM, consulta la risposta per il metodo instances.get()
.
Dichiari i riferimenti utilizzando una sintassi simile alla notazione "punto" di JSONPath. Utilizza la seguente sintassi per dichiarare un riferimento:
$(ref.RESOURCE_NAME.PATH_TO_PROPERTY)
Per le proprietà che sono elenchi, come le interfacce di rete per un Per le istanze di Compute Engine, utilizza la seguente sintassi:
$(ref.RESOURCE_NAME.LIST_PROPERTY[index].ITEM)
Esempi
$(ref.exampleInstance.networkInterfaces[0].natIp)
$(ref.exampleInstance.serviceAccounts[0].email)
Variabili di ambiente specifiche per il deployment
Quando crei un deployment, Deployment Manager crea l'ambiente contenenti informazioni sul deployment, come il nome del progetto attuale, il nome del deployment e così via.
Per un elenco completo delle variabili di ambiente disponibili, consulta Variabili di ambiente.
Per utilizzare una variabile di ambiente:
{{ env["deployment"] }} # Jinja context.env["deployment"] # Python
Esempio
- type: compute.v1.instance name: vm-{{ env["deployment"] }}
Proprietà del modello
Una proprietà modello è una proprietà arbitraria creata da te. Invece di strutturando un valore come hardcoded, puoi dichiarare una proprietà di modello e impostare il valore la proprietà nella configurazione di primo livello, invece di fornire in modo statico la proprietà e il valore direttamente nel modello. Per creare una proprietà modello, utilizza la sintassi:
{{ properties["property-name"] }} # Jinja context.properties["property-name"] # Python
Nella configurazione di primo livello o nel modello principale, imposta quindi il valore del parametro proprietà:
imports:
- path: vm_template.jinja
resources:
- name: my-vm
type: vm_template.jinja
properties:
property-name: example-value
Scopri di più sulle proprietà dei modelli.
Output
Nella sezione degli output, puoi definire coppie chiave/valore arbitrarie che mostrano determinate informazioni sul tuo deployment. Fornisci la chiave e imposta il valore come stringa statica, riferimento a una proprietà, variabile di modello o variabile di ambiente.
outputs
- Dichiara un elenco di output che gli utenti possono chiamare nella loro risorsa proprietà.name
- Nome della proprietà di output.value
- Valore della proprietà di output.
Esempio
resources:
- name: vm-instance
type: compute.v1.instance
...
outputs:
- name: databaseIp
value: $(ref.vm-instance.networkInterfaces[0].natIp)
- name: databaseName
value: example-database
Scopri di più su Output.
Metadati
La sezione metadata
contiene metadati speciali che puoi applicare a un
per risorsa. Deployment Manager ha metadati univoci che attivano determinate funzionalità. Ad esempio, la funzionalità dependsOn
si basa su una voce di metadati.
Dipende da
La proprietà dependsOn
crea dipendenze esplicite tra le risorse.
Ad esempio, specificare che la risorsa A dipende dalla risorsa B garantisce che la risorsa B venga sempre creata prima della risorsa A.
metadata: the metadata for this resource
dependsOn: Any explicit dependencies to another resource.
Esempio
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
Scopri di più sulla creazione di dipendenze esplicite.
Sintassi degli schemi
Uno schema ti consente di controllare in che modo gli utenti possono interagire con i tuoi modelli. Nel file dello schema puoi utilizzare la seguente sintassi. Scopri di più sugli schemi.
info
La proprietà info
contiene meta informazioni sullo schema. Sono incluse informazioni quali titolo, numero di versione, descrizione e così via.
Fornisci almeno un titolo e una descrizione in questa proprietà.
Esempio
info:
title: MongoDB Template
author: Jane
description: Creates a MongoDB cluster
version: 1.0
importazioni
Il campo imports
contiene un elenco di file corrispondenti necessari per i modelli che utilizzano questo schema. Quando carichi un modello con uno schema che contiene un elenco di importazioni, Deployment Manager controlla che tutti i file della proprietà imports siano stati caricati insieme al modello.
Esempio
imports:
- path: helper.py
name: mongodb_helper.py
di provisioning.
Il campo obbligatorio contiene un elenco di elementi del campo delle proprietà obbligatori nel modello che utilizza lo schema. Qualsiasi elemento non specificato in questo campo obbligatorio è considerato facoltativo.
Esempio
required:
- name
properties:
name:
type: string
description: Name of your Mongo Cluster
size:
type: integer
default: 2
description: Number of Mongo Secondaries
proprietà
Il campo properties
contiene le regole dello schema JSON per questo documento.
Gli elementi descritti nel campo delle proprietà possono essere impostati dagli utenti del modello.
Puoi utilizzare tutte le convalide dello schema JSON supportate per queste proprietà, ad esempio:
type
(stringa, booleano, numero intero, numero, ...)default
minimum / exclusiveMinimum / maximum / exclusiveMaximum
minLength / maxLength
pattern
not X / allOf X, Y / anyOf X, Y / oneOf X, Y
Come minimo, è buona norma includere un tipo e una descrizione del campo in modo che gli utenti sappiano qual è un valore accettabile per la proprietà. Per facoltativi proprietà, è buona norma includere un valore predefinito.
Leggi Documentazione di JSON Schema Validation per un elenco di parole chiave di convalida.
Esempio
properties:
name:
type: string
description: Name of your Mongo Cluster
size:
type: integer
default: 2
description: Number of Mongo Secondaries
minimum: 1
Passaggi successivi
- Scopri di più sui riferimenti.
- Scopri di più sulle variabili di ambiente.
- Scopri di più sulle proprietà dei modelli.
- Scopri di più sugli Output.
- Scopri di più sugli schemi.