Como usar variáveis de ambiente específicas da implantação

Para cada uma das suas implantações, o Deployment Manager cria variáveis de ambiente predefinidas, contendo informações inferidas da sua implantação. Use essas variáveis de ambiente nos modelos Python ou Jinja2 para conseguir informações sobre seu projeto ou sua implantação.

Antes de começar

Variáveis de ambiente disponíveis

As variáveis de ambiente a seguir são definidas automaticamente pelo Deployment Manager. Elas serão substituídas em todos os lugares que você as utilizar nos modelos. Por exemplo, use a variável project_number para adicionar o número do projeto ao nome de uma conta de serviço.

Variável de ambiente Valor
deployment O nome da implantação.
name O name declarado na configuração que está usando o modelo. Isso poderá ser útil se você quiser que o nome declarado na configuração seja o nome do recurso nos modelos de base.
project O código do projeto da implantação.
project_number O número do projeto da implantação.
current_time O carimbo de data/hora UTC correspondente ao início da expansão da implantação.
type O tipo de recurso declarado na configuração de nível superior.
username O usuário atual do Deployment Manager.

Como usar uma variável de ambiente

Use a seguinte sintaxe para adicionar uma variável de ambiente aos modelos:

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

context.env["deployment"] # Python

No modelo, use as variáveis conforme mostrado nestes exemplos:

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}

A seguir