L'utilisation de modèles offre plusieurs avantages, parmi lesquels la possibilité de créer et de définir des propriétés de modèle personnalisées. Celles-ci sont des variables arbitraires que vous définissez dans des fichiers de modèle. Chaque fichier de modèle ou fichier de configuration utilisant le modèle en question peut fournir une valeur à la propriété du modèle, sans altérer directement celui-ci. Ainsi, vous pouvez extraire la propriété et en modifier la valeur pour chaque configuration unique, sans avoir à mettre à jour le modèle sous-jacent.
Par exemple, la ligne suivante spécifie une propriété de modèle dans l'URL du type de machine :
machineType: zones/{{ properties["zone"] }}/machineTypes/n1-standard-1
Dans une configuration utilisant ce modèle, vous pouvez définir la valeur de zone
dans la section properties
du modèle :
imports: - path: vm_template.jinja resources: - name: my-vm type: vm_template.jinja properties: zone: us-central1-a
Deployment Manager saura qu'il doit transmettre la valeur de zone
au modèle sous-jacent.
Avant de commencer
- Si vous voulez vous servir des exemples de ligne de commande de ce guide, installez l'outil de ligne de commande gcloud.
- Si vous voulez utiliser les exemples d'API de ce guide, configurez l'accès aux API.
- Assurez-vous d'avoir bien compris comment créer un modèle de base.
- Assurez-vous d'avoir bien compris comment créer une configuration.
Créer une propriété de modèle
Pour créer une propriété de modèle :
Jinja
En Jinja, définissez une propriété à l'aide la syntaxe suivante :
{{ properties["PROJECT_NAME"] }}
Exemple :
Python
En Python, définissez une propriété à l'aide la syntaxe suivante :
context.properties["PROPERTY_NAME"]
Exemple :
Pour obtenir l'exemple complet en Python, consultez le dépôt GitHub de Deployment Manager.
Définir des valeurs pour les propriétés de modèle dans la configuration de premier niveau
Dans la configuration de premier niveau, vous pouvez définir des valeurs pour les propriétés de modèle à l'aide de la syntaxe suivante :
imports: - path: vm_template.jinja resources: - name: my-vm type: vm_template.jinja properties: zone: us-central1-a
Vous devez définir des valeurs pour toutes les propriétés du modèle au sein de ce dernier. Par exemple, si un modèle possède des propriétés zone
, image
et network
, vous devez définir des valeurs pour toutes ces propriétés dans la configuration de premier niveau.
Si certaines propriétés de modèle possèdent des valeurs par défaut, envisagez de les définir à l'aide de schémas. Une propriété de modèle avec une valeur par défaut peut être omise de la configuration de premier niveau si cette valeur est adaptée au déploiement.
Définir des valeurs pour les propriétés de modèle dans l'outil de ligne de commande
Plutôt que de fournir des valeurs aux propriétés de modèle dans le fichier parent qui importe le modèle, Deployment Manager offre la possibilité de les définir directement dans la Google Cloud CLI. Vous n'avez pas besoin de créer de fichier YAML de niveau supérieur. Deployment Manager génère automatiquement une configuration de premier niveau pour votre déploiement en fonction des informations de votre requête.
Par exemple, supposons que vous disposiez du modèle suivant, qui comprend une propriété de modèle appelée zone
:
Avec la Google Cloud CLI, vous pouvez transmettre directement ce fichier de modèle
et indiquez les valeurs de vos propriétés de modèle sur la ligne de commande. Par exemple, la requête suivante transmet le modèle et spécifie directement la propriété zone
sur la ligne de commande :
gcloud deployment-manager deployments create a-single-vm --template vm_template.jinja \
--properties zone:us-central1-a
Points à noter :
Toutes les valeurs sont analysées en tant que valeurs YAML. Par exemple, la valeur
version: 3
est transmise au format d'entier. Si vous souhaitez la définir en tant que chaîne, placez la valeur entre guillemets simples avec échappement :version: \'3\'
.Les valeurs booléennes ne sont pas sensibles à la casse. Les valeurs
TRUE
,true
etTrue
sont donc traitées de la même manière.Vous devez transmettre toutes les propriétés requises définies par le modèle. Vous ne pouvez pas vous limiter à un sous-ensemble des propriétés. Si certaines propriétés possèdent des valeurs par défaut, vous pouvez les omettre dans la ligne de commande.
Pour spécifier plusieurs propriétés, fournissez des paires valeur/clé séparées par des virgules. L'ordre dans lequel vous spécifiez les paires n'a pas d'importance. Exemple :
gcloud deployment-manager deployments create my-igm \ --template vm_template.jinja \ --properties zone:us-central1-a,machineType:n1-standard-1,image:debian-9
Une fois cette commande exécutée, Deployment Manager crée un déploiement à partir du modèle fourni. Vous pouvez vérifier que le déploiement a bien été créé à l'aide de la console Google Cloud ou de la gcloud CLI. Pour savoir comment afficher un déploiement, consultez la section Afficher un fichier manifeste.
Étapes suivantes
- Renseigner des informations relatives à vos projets et déploiements à l'aide de variables d'environnement
- Ajouter un modèle qui sera associé de façon permanente à votre projet en tant que type composite
- Héberger des modèles en externe pour les partager avec d'autres utilisateurs