Usar variáveis de ambiente específicas da implementação

Para cada uma das suas implementações, o Deployment Manager cria variáveis de ambiente predefinidas que contêm informações inferidas da sua implementação. Use estas variáveis de ambiente nos seus modelos Python ou Jinja2 para obter informações sobre o seu projeto ou implementação.

Antes de começar

Variáveis de ambiente disponíveis

As seguintes variáveis de ambiente são definidas automaticamente pelo Deployment Manager. São substituídas em todos os locais onde as usa nos seus 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 implementação.
name O name declarado na configuração que está a usar o modelo. Isto pode ser útil se quiser que o nome que declara na configuração seja o nome do recurso nos modelos subjacentes.
project O ID do projeto desta implementação.
project_number O número do projeto desta implementação.
current_time A data/hora UTC em que a expansão começou para a implementação.
type O tipo de recurso declarado na configuração de nível superior.
username O utilizador atual do Deployment Manager.

Usar uma variável de ambiente

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

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

context.env["deployment"] # Python

No modelo, use as variáveis como 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}

O que se segue?