Riferimento alla sintassi

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 le configurazioni e i modelli

Sintassi di base

  • resources: un insieme di risorse da creare.
    • name: il nome della creazione dell'istanza della risorsa.
    • type: il tipo di risorsa. Può essere un tipo di base come compute.v1.instance, un provider di tipi come gcp-types/compute-v1:addresses o un modello importato. Consulta l'elenco dei provider di tipi supportati.
    • properties: le proprietà della risorsa. Per un'introduzione, consulta Proprietà dei modelli.
    • metadata: configurazione aggiuntiva per questa risorsa. Consulta un elenco dei 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

Per impostare i criteri IAM sulle tue risorse, utilizza una sezione accessControl:

  1. Aggiungi la sezione accessControl alla configurazione di primo livello per ogni risorsa a cui vuoi applicare i criteri di controllo dell'accesso#39;accesso.

  2. Specifica il valore gcpIamPolicy per la risorsa. Ogni criterio IAM può contenere un elenco di associazioni. Ogni associazione associa un elenco di entità a un ruolo.

Per informazioni dettagliate sul controllo dell'accesso alle risorse, consulta Impostare il controllo dell'accesso in una configurazione.

Ad esempio, nella seguente sezione accessControl vengono aggiunte associazioni che concedono questi ruoli agli utenti:

Utente Ruolo
alice@example.com roles/pubsub.editor
  • my-other-app@appspot.gserviceaccount.com
  • jane@example.com
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 i references alle proprietà di altre risorse invece di fornire direttamente valori. Ad esempio, se vuoi creare un gestore di gruppi di istanze che utilizza un modello di istanza dello stesso deployment, invece di digitare esplicitamente il link completo al modello di istanza, puoi utilizzare un riferimento con la sintassi $(ref.instance-template.selfLink).

Per sapere a quali proprietà puoi creare riferimenti, vedi il metodo get per l'API della risorsa. Ad esempio, per un elenco di tutte le proprietà per un'istanza VM, consulta la risposta per il metodo instances.get().

Puoi dichiarare i riferimenti utilizzando una sintassi simile alla notazione "dot" di JSONPath. Per dichiarare un riferimento, utilizza la seguente sintassi:

$(ref.RESOURCE_NAME.PATH_TO_PROPERTY)

Per le proprietà che sono elenchi, come le interfacce di rete 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 variabili di ambiente che contengono informazioni sul deployment, come il nome del progetto corrente, 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. Anziché eseguire l'hardcoded di un valore, puoi dichiarare una proprietà modello e impostarne il valore nella configurazione di primo livello, anziché 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

Quindi, nella configurazione di primo livello o nel modello principale, imposta il valore della proprietà:

imports:
- path: vm_template.jinja

resources:
- name: my-vm
  type: vm_template.jinja
  properties:
   property-name: example-value

Scopri di più sulle proprietà modello.

Output

Nella sezione degli output, puoi definire coppie chiave/valore arbitrarie che espongono determinate informazioni sul deployment. Puoi fornire la chiave e impostare 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 nelle proprietà delle loro risorse.
    • 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ù sugli Output.

Metadati

La sezione metadata contiene metadati speciali che puoi applicare in base alla risorsa. Deployment Manager dispone di 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 tue risorse. Ad esempio, specificare che la Risorsa A dipende dalla Risorsa B assicura 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 per gli schemi

Uno schema consente di controllare in che modo gli utenti possono interagire con i modelli. Nel file di schema è possibile utilizzare la seguente sintassi. Scopri di più sugli schemi.

info

La proprietà info contiene meta informazioni sullo schema. Sono incluse informazioni come un titolo, un numero di versione, una 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 dei file corrispondenti necessari per i modelli che utilizzano questo schema. Quando carichi un modello con uno schema che include un elenco di importazioni, Deployment Manager controlla che tutti i file nella proprietà di importazione siano stati caricati insieme al modello.

Esempio

imports:
  - path: helper.py
    name: mongodb_helper.py

obbligatorio

Il campo obbligatorio contiene un elenco di elementi del campo delle proprietà necessari nel modello che utilizza lo schema. Tutti gli elementi non specificati in questo campo obbligatorio sono considerati facoltativi.

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 utenti del modello possono impostare gli elementi descritti nel campo delle proprietà. Puoi utilizzare tutte le convalide dello schema JSON supportate per queste proprietà, ad esempio:

  • type (string, boolean, integer, number, ...)
  • default
  • minimum / exclusiveMinimum / maximum / exclusiveMaximum
  • minLength / maxLength
  • pattern
  • not X / allOf X, Y / anyOf X, Y / oneOf X, Y

È buona norma includere almeno un tipo e una descrizione del campo in modo che gli utenti sappiano qual è un valore accettabile per la proprietà. Per le proprietà facoltative, è inoltre buona norma includere un valore predefinito.

Leggi la documentazione relativa alla convalida dello schema JSON 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