Referência de sintaxe

Esta página descreve a sintaxe usada pelo Deployment Manager. Use este guia como referência para a sintaxe que será usada em configurações e modelos.

Sintaxe de configurações e modelos

Sintaxe básica

  • resources: um conjunto de recursos para criação.
    • name - o nome da instanciação deste recurso.
    • type - o tipo de recurso. Pode ser um tipo de base como compute.v1.instance, um provedor de tipos como gcp-types/compute-v1:addresses ou um modelo importado. Consulte a lista de provedores de tipos compatíveis.
    • properties - as propriedades deste recurso. Para ver a introdução, consulte Propriedades do modelo.
    • metadata - configuração extra para este recurso. Consulte uma lista de campos em Metadados.

Exemplo

resources: - name: vm-instance   type: compute.v1.instance   properties:     machineType: zones/us-central1-a/machineTypes/n1-standard-1     ... 

Controle de acesso

Se você quiser definir políticas de IAM nos seus recursos, use uma seção accessControl:

  1. Adicione a seção accessControl à configuração de nível superior de cada recurso em que você quiser aplicar políticas de controle de acesso.

  2. Especifique o gcpIamPolicy pretendido para o recurso. Cada política do IAM pode conter uma lista de vinculações. Cada vinculação associa uma lista de principal a um papel.

Para informações detalhadas sobre como controlar o acesso a recursos, consulte Como definir o controle de acesso em uma configuração.

Por exemplo, a seção accessControl a seguir adiciona vinculações que fazem a concessão destes papéis aos usuários:

User Papel
[email protected] roles/pubsub.editor
roles/pubsub.publisher
resources: - name: a-new-pubsub-topic   type: pubsub.v1.topic   properties:     ...    accessControl:     gcpIamPolicy:       bindings:       - role: roles/pubsub.editor         members:         - "user:[email protected]"       - role: roles/pubsub.publisher         members:         - "user:[email protected]"         - "serviceAccount:[email protected]" 

Referências

Para ver mais exemplos e informações sobre quando usar referências, saiba mais sobre criar referências .

É possível usar referências às propriedades de outros recursos em vez de fornecer valores diretamente. Por exemplo, se você quiser criar um gerenciador de grupo de instâncias que use um modelo da mesma implantação, em vez de digitar explicitamente o link completo do modelo de instância, use uma referência com a sintaxe $(ref.instance-template.selfLink).

Para ver as propriedades com que é possível criar referências, consulte o método get para a API do recurso. Por exemplo, para ver uma lista de todas as propriedades de uma instância de VM, consulte a resposta para o método instances.get().

Para declarar referências, use uma sintaxe semelhante à notação de "ponto" JSONPath. Use a seguinte sintaxe para declarar uma referência:

$(ref.RESOURCE_NAME.PATH_TO_PROPERTY) 

Para propriedades que estão em formato de listas, como as interfaces de rede de instâncias do Compute Engine, use a seguinte sintaxe:

$(ref.RESOURCE_NAME.LIST_PROPERTY[index].ITEM) 

Exemplos

$(ref.exampleInstance.networkInterfaces[0].natIp) $(ref.exampleInstance.serviceAccounts[0].email) 

Variáveis de ambiente específicas à implantação

Quando você cria uma implantação, o Deployment Manager cria variáveis de ambiente contendo informações sobre sua implantação, como o nome do projeto atual, o nome da implantação e assim por diante.

Para ver uma lista completa de variáveis de ambiente disponíveis, consulte Variáveis de ambiente.

Para usar uma variável de ambiente:

 {{ env["deployment"] }} # Jinja  context.env["deployment"] # Python

Exemplo

 - type: compute.v1.instance   name: vm-{{ env["deployment"] }} 

Propriedades do modelo

Uma propriedade de modelo é uma propriedade arbitrária criada por você. Em vez de embutir um valor em código, você pode declarar uma propriedade de modelo e definir seu valor na configuração de nível superior, o que é diferente de fornecer estaticamente a propriedade e o valor diretamente no modelo. Para criar uma propriedade de modelo, use a sintaxe:

 {{ properties["property-name"] }} # Jinja  context.properties["property-name"] # Python

Em seguida, na configuração de nível superior ou no modelo pai, defina o valor da propriedade:

imports: - path: vm_template.jinja  resources: - name: my-vm   type: vm_template.jinja   properties:    property-name: example-value 

Saiba mais sobre Propriedades do modelo.

Outputs

Na seção "outputs", você pode definir pares chave/valor arbitrários que expõem determinadas informações sobre a implantação. Você fornece a chave e define o valor como uma string estática, uma referência a uma propriedade, uma variável de modelo ou uma variável de ambiente.

  • outputs - declara uma lista de saídas que os usuários podem chamar nas propriedades do recurso.
    • name - nome da propriedade de saída.
    • value - valor da propriedade de saída.

Exemplo

resources: - name: vm-instance   type: compute.v1.instance   ...  outputs: - name: databaseIp   value: $(ref.vm-instance.networkInterfaces[0].natIp) - name: databaseName   value: example-database 

Saiba mais sobre Saídas.

Metadados

A seção metadata contém metadados especiais que podem ser aplicados por recurso. O Deployment Manager tem metadados únicos que acionam determinados recursos. Por exemplo, o recurso dependsOn depende de uma entrada de metadados.

Depends on

A propriedade dependsOn cria dependências explícitas entre seus recursos. Por exemplo, especificar que o Recurso A depende do Recurso B assegura que o segundo seja sempre criado antes do primeiro.

metadata: the metadata for this resource   dependsOn: Any explicit dependencies to another resource. 

Exemplo

resources: - name: vm-instance   type: compute.v1.instance   properties:     machineType: zones/us-central1-a/machineTypes/n1-standard-1     ...   metadata:     dependsOn:     - persistent-disk-1     - a-new-network-1 

Saiba mais sobre a criação de dependências explícitas.

Sintaxe de esquemas

Esquema é uma maneira de controlar como os usuários podem interagir com os modelos. A sintaxe a seguir pode ser usada no arquivo de esquema. Saiba mais sobre Esquemas.

info

A propriedade info contém meta informações sobre o esquema. Isso inclui informações como título, número da versão, descrição etc.

Forneça pelo menos um título e uma descrição nesta propriedade.

Exemplo

info:   title: MongoDB Template   author: Jane   description: Creates a MongoDB cluster   version: 1.0 

imports

O campo imports contém uma lista de arquivos correspondentes, obrigatórios para modelos que usam este esquema. Quando você faz upload de um modelo com um esquema que tem uma lista de importações, o Deployment Manager verifica se o upload de todos os arquivos na propriedade imports foi feito com o modelo.

Exemplo

imports:   - path: helper.py     name: mongodb_helper.py 

required

O campo required contém uma lista de elementos do campo properties obrigatórios no modelo que usa o esquema. Qualquer elemento não especificado no campo required é considerado opcional.

Exemplo

required:   - name  properties:   name:     type: string     description: Name of your Mongo Cluster    size:     type: integer     default: 2     description: Number of Mongo Secondaries 

properties

O campo properties contém as regras de esquema JSON deste documento. Os elementos descritos no campo properties podem ser definidos pelos usuários do modelo. Use todas as validações de esquema JSON compatíveis com essas propriedades, como:

  • type (string, booleano, inteiro, número, ...)
  • default
  • minimum / exclusiveMinimum / maximum / exclusiveMaximum
  • minLength / maxLength
  • pattern
  • not X / allOf X, Y / anyOf X, Y / oneOf X, Y

É prática recomendada incluir pelo menos um tipo e uma descrição do campo para que os usuários saibam o que é um valor aceitável para a propriedade. Para propriedades opcionais, também é prática recomendada incluir um valor padrão.

Leia a documentação sobre Validação do esquema JSON para ver uma lista de palavras-chave de validação.

Exemplo

properties:   name:     type: string     description: Name of your Mongo Cluster    size:     type: integer     default: 2     description: Number of Mongo Secondaries     minimum: 1 

Próximas etapas