Documentation de référence sur la syntaxe

Cette page décrit la syntaxe utilisée par Deployment Manager. Utilisez ce guide comme référence pour la syntaxe à utiliser dans vos configurations et modèles.

Syntaxe pour les configurations et les modèles

Syntaxe de base

  • resources : un ensemble de ressources à créer.
    • name : le nom utilisé pour cette instanciation de la ressource concernée.
    • type : le type de la ressource. Cela peut être un type de base comme compute.v1.instance ou un modèle importé. Une liste complète des ressources prises en charge est disponible dans la documentation Types de ressources pris en charge.
    • properties : les propriétés de la ressource concernée. Pour en savoir plus à ce sujet, consultez la rubrique Propriétés de modèle.
    • metadata : options de configuration supplémentaires pour la ressource concernée. La liste des champs disponibles est présentée dans la rubrique Métadonnées.

Exemple

resources:
- name: vm-instance
  type: compute.v1.instance
  properties:
    machineType: zones/us-central1-a/machineTypes/n1-standard-1
    ...

Contrôle des accès

Si vous souhaitez définir des stratégies IAM sur vos ressources, vous devez utiliser une section accessControl :

  1. Ajoutez la section accessControl à la configuration de premier niveau pour chaque ressource à laquelle vous souhaitez appliquer des stratégies de contrôle d'accès.

  2. Spécifiez la stratégie gcpIamPolicy souhaitée pour la ressource. Chaque stratégie IAM peut contenir plusieurs liaisons. Chaque liaison associe une liste d'utilisateurs à un rôle.

Pour obtenir des informations détaillées sur le contrôle des accès aux ressources, consultez la page Définir le contrôle des accès d'une configuration.

Par exemple, la section accessControl suivante ajoute des liaisons qui attribuent ces rôles aux utilisateurs :

Utilisateur Rôle
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"

Références

Les références sont un moyen de faire mention de la valeur d'une autre propriété dans votre configuration. Le fait de spécifier une référence crée également une dépendance explicite entre les deux ressources, ce qui implique que la ressource référencée sera toujours créée avant la ressource qui la mentionne. Par exemple, si la ressource A fait référence à la ressource B, la ressource B sera toujours créée avant la ressource A.

Pour déclarer une référence, vous devez utiliser la syntaxe suivante afin de définir la valeur d'une propriété sur cette référence :

$(ref.[RESOURCE_NAME].[PATH_TO_PROPERTY])

Exemples

$(ref.exampleInstance.networkInterfaces[0].natIp)
$(ref.exampleInstance.serviceAccounts[0].email)

En savoir plus sur les références.

Variables d'environnement

Les variables d'environnement sont des variables prédéfinies qui renseignent automatiquement certains éléments d'information déterminés d'après votre déploiement. Utilisez des variables d'environnement dans votre modèle pour renseigner les éléments d'information connus qui sont utilisés de façon répétée. Étant donné que les valeurs des variables d'environnement sont uniques pour chaque déploiement, vous pouvez également les utiliser pour créer des noms uniques dans le cas où vous déployez le même modèle à plusieurs reprises.

Pour une liste complète des variables d'environnement disponibles, consultez la rubrique Variables d'environnement.

Pour utiliser une variable d'environnement :

{{   env["deployment"] }} # Jinja

context.env["deployment"] # Python

Exemple

- type: compute.v1.instance
  name: vm-{{ env["deployment"] }}

Propriétés du modèle

Une propriété de modèle est une propriété arbitraire que vous créez. Au lieu de coder une valeur en dur, vous pouvez déclarer une propriété de modèle et définir la valeur de la propriété dans la configuration de niveau supérieur. Vous n'avez ainsi pas besoin de fournir la propriété et la valeur directement dans le modèle. Pour créer une propriété de modèle, utilisez la syntaxe suivante :

{{ properties["property-name"] }} # Jinja

context.properties["property-name"] # Python

Ensuite, dans votre configuration de niveau supérieur ou votre modèle parent, définissez la valeur de la propriété :

imports:
- path: vm_template.jinja

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

En savoir plus sur les propriétés de modèle.

Résultats

Dans la section des sorties, vous pouvez définir des paires valeur/clé arbitraires qui exposent certaines informations relatives à votre déploiement. Pour cela, vous devez fournir la clé et définir la valeur sous la forme d'une chaîne statique, d'une référence à une propriété, d'une variable de modèle ou d'une variable d'environnement.

  • outputs : déclare une liste de sorties que les utilisateurs peuvent appeler dans leurs propriétés de ressources.
    • name : le nom de la propriété de sortie.
    • value : la valeur de la propriété de sortie.

Exemple

resources:
- name: vm-instance
  type: compute.v1.instance
  ...

outputs:
- name: databaseIp
  value: $(ref.vm-instance.networkInterfaces[0].natIp)
- name: databaseName
  value: example-database

En savoir plus sur les sorties.

Métadonnées

La section metadata contient des métadonnées spéciales que vous pouvez appliquer par ressource. Deployment Manager utilise des métadonnées uniques qui déclenchent certaines fonctionnalités. Par exemple, la fonction dependsOn repose sur une entrée de métadonnées.

Depends on

La propriété dependsOn crée des dépendances explicites entre vos ressources. Par exemple, si vous spécifiez que la ressource A dépend de la ressource B, la ressource B sera toujours créée avant la ressource A.

metadata: the metadata for this resource
  dependsOn: Any explicit dependencies to another resource.

Exemple

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

En savoir plus sur la création de dépendances explicites.

Syntaxe pour les schémas

Un schéma vous permet de contrôler la façon dont vos utilisateurs peuvent interagir avec vos modèles. La syntaxe suivante peut être utilisée dans votre fichier de schéma. En savoir plus sur les schémas.

info

La propriété info contient des méta-informations sur le schéma. Elle inclut notamment des informations telles que le titre, le numéro de version, la description, etc.

Ajoutez au minimum un titre et une description dans cette propriété.

Exemple

info:
  title: MongoDB Template
  author: Jane
  description: Creates a MongoDB cluster
  version: 1.0

imports

Le champ imports contient la liste des fichiers requis pour les modèles utilisant ce schéma. Lorsque vous importez un modèle avec un schéma comportant une liste d'importations, Deployment Manager vérifie que tous les fichiers de la propriété imports ont été importés avec le modèle.

Exemple

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

required

Le champ required contient la liste des éléments du champ properties requis dans le modèle qui utilise le schéma. Les éléments qui ne sont pas spécifiés dans ce champ required sont considérés comme facultatifs.

Exemple

required:
  - name

properties:
  name:
    type: string
    description: Name of your Mongo Cluster

  size:
    type: integer
    default: 2
    description: Number of Mongo Slaves

properties

Le champ properties contient les règles de schéma JSON applicables à ce document. Les éléments décrits dans le champ properties peuvent être définis par les utilisateurs du modèle. Vous pouvez utiliser toutes les validations de schéma JSON prises en charge pour ces propriétés, telles que :

  • type (chaîne, booléen, entier, nombre, etc.)
  • default
  • minimum / exclusiveMinimum / maximum / exclusiveMaximum
  • minLength / maxLength
  • pattern
  • not X / allOf X, Y / anyOf X, Y / oneOf X, Y

Il est au minimum recommandé d'inclure un type et une description pour le champ afin que les utilisateurs sachent quelles valeurs peuvent être utilisées pour la propriété. En outre, une bonne pratique consiste à inclure une valeur par défaut pour les propriétés facultatives.

Lisez la documentation Validation de schéma JSON pour obtenir une liste des mots-clés de validation.

Exemple

properties:
    name:
    type: string
    description: Name of your Mongo Cluster
    size:
    type: integer
    default: 2
    description: Number of Mongo Slaves
    minimum: 1

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Cloud Deployment Manager