Utiliser des variables d'environnement consacrées au déploiement

Pour chacun de vos déploiements, Deployment Manager crée des variables d'environnement prédéfinies qui contiennent des informations déterminées d'après votre déploiement. Utilisez ces variables d'environnement dans vos modèles Python ou Jinja2 pour obtenir des informations sur votre projet ou déploiement.

Avant de commencer

Variables d'environnement disponibles

Les variables d'environnement suivantes sont automatiquement définies par Deployment Manager. Elles sont remplacées par des valeurs appropriées partout où vous les utilisez dans vos modèles. Par exemple, utilisez la variable project_number pour ajouter le numéro de projet au nom d'un compte de service.

Variable d'environnement Valeur
deployment Le nom du déploiement.
name Le nom (name) déclaré dans la configuration qui utilise le modèle. Cela peut être utile si vous souhaitez que le nom que vous déclarez dans la configuration corresponde au nom de la ressource définie dans les modèles sous-jacents.
project L'ID du projet concerné par le déploiement.
project_number Le numéro de projet associé au déploiement.
current_time L'horodatage UTC : cette valeur indique le moment où le déploiement a débuté.
type Le type de ressource déclaré dans la configuration de premier niveau.
username L'utilisateur actuel de Deployment Manager.

Utiliser une variable d'environnement

Utilisez la syntaxe suivante pour ajouter des variables d'environnement à vos modèles :

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

context.env["deployment"] # Python

Dans votre modèle, utilisez les variables comme dans ces exemples :

Jinja

- type: compute.v1.instance
  name: vm-{{ env["deployment"] }}
  properties:
    machineType: zones/us-central1-a/machineTypes/f1-micro
    serviceAccounts:
    - email: {{ env['project_number'] }}-compute@developer.gserviceaccount.com
      scopes:
      - ...

Python

def GenerateConfig(context):
  resources = []
  resources.append ({
    'name': 'vm-' + context.env["deployment"],
    'type': 'compute.v1.instance',
    'properties': {
       'serviceAccounts': [{
         'email': context.env['project_number'] + '-compute@developer.gserviceaccount.com',
         'scopes': [...]
       }]
    }
    ...}]
  return {'resources': resources}

Étape suivante

  • 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
  • Ajouter des schémas pour vous assurer que les utilisateurs interagissent correctement avec vos modèles