Stocker des modèles sur un hôte externe

Ce document explique comment utiliser des modèles externes hébergés sur Internet plutôt que sur votre machine locale dans votre déploiement.

Vous pouvez stocker des modèles sur un hôte externe n'importe où sur Internet et les appeler depuis votre configuration. L'hébergement de modèles en externe présente certains avantages par rapport au stockage local :

  • Vous pouvez partager facilement des modèles avec d'autres utilisateurs.
  • Vous êtes sûr que les configurations utilisent toujours le modèle le plus récent.
  • Vous pouvez gérer automatiquement les importations et les schémas pertinents.

Deployment Manager récupère toujours la dernière version des modèles externes chaque fois que vous redéployez votre configuration. Si vous assurez la maintenance de vos modèles, vos déploiements seront toujours à jour eux aussi. Deployment Manager gère également pour vous l'importation d'autres modèles dépendants si ceux-ci sont référencés dans le modèle externe.

Exemple

Cette configuration importe un modèle externe :

resources:
- name: my-frontend
  type: gs://my-frontend-templates/webserver-frontend.jinja

Avant de commencer

Héberger des modèles externes

Vous pouvez héberger des modèles externes dans Google Cloud Storage ou à un emplacement accessible publiquement, tel que GitHub. Tant qu'il existe une URL renvoyant vers le fichier et que vous avez accès aux modèles, Deployment Manager peut le télécharger. Si le fichier importe d'autres modèles à l'aide d'un schéma, vous devez également héberger ces modèles dans la même URL de base.

Dans Google Cloud Storage

Pour héberger des modèles dans Google Cloud Storage :

  1. Créez un bucket pour les modèles ou utilisez un bucket existant.
  2. Importez vos modèles et fichiers de modèles associés (tels que des schémas) dans le bucket.
  3. Si vous prévoyez d'utiliser les modèles d'un projet Google Cloud Platform différent de celui auquel appartiennent les modèles, définissez des autorisations d'accès.

L'hébergement de modèles dans Google Cloud Storage vous permet de contrôler qui a accès à ces modèles, car vous pouvez définir des options de contrôle des accès sur le bucket Cloud Storage correspondant ou sur le modèle spécifique.

En revanche, vous devez rendre vos modèles largement disponibles pour pouvoir les héberger sur d'autres URL accessibles publiquement.

Sur une URL accessible publiquement

Vous pouvez également héberger des modèles externes en dehors de Google Cloud Storage, à condition qu'ils soient accessibles publiquement. Vous pouvez par exemple héberger des modèles sur GitHub et les référencer à l'aide de l'URL GitHub.

Dans le cas de GitHub, vous devez fournir l'URL GitHub brute pour que Deployment Manager récupère le modèle au lieu de la page HTML GitHub. Une URL brute ressemble à ceci :

https://raw.githubusercontent.com/GoogleCloudPlatform/deploymentmanager-samples/master/examples/v2/single_vm/jinja/vm_template.jinja

Appeler un modèle externe

Appelez un modèle externe comme vous appelleriez un modèle local, mais fournissez l'URL complète du fichier modèle en tant que type. Exemple :

resources:
- name: my-salt-cluster
  type: gs://v2/saltstack/salt_cluster.jinja

Pour une URL GitHub :

resources:
- name: my-salt-cluster
  type: https://raw.githubusercontent.com/GoogleCloudPlatform/deploymentmanager-samples/master/examples/v2/single_vm/vm_template.jinja

Si un modèle externe importe d'autres modèles ou si un schéma l'accompagne, vous pouvez stocker les fichiers associés dans le même répertoire ou sous-répertoire relatif, et inclure ces autres modèles avec une URL relative. Deployment Manager recherche ces autres modèles à l'aide du chemin d'accès relatif basé sur l'URL de base.

Par exemple, si votre configuration ressemble à ceci :

resources:
- name: my-salt-cluster
  type: gs://v2/saltstack/salt_cluster.jinja

Et qu'un fichier de schéma nommé salt_cluster.jinja.schema a importé ces fichiers :

imports:
- path: minion.py
- path: master.py
- path: examples/source/example.py

Alors Deployment Manager télécharge et importe automatiquement tous les fichiers nécessaires au modèle.