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 comocompute.v1.instance
, um provedor de tipos comogcp-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
:
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.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 |
---|---|
alice@example.com |
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:alice@example.com"
- role: roles/pubsub.publisher
members:
- "user:jane@example.com"
- "serviceAccount:my-other-app@appspot.gserviceaccount.com"
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
- Saiba mais sobre Referências.
- Saiba mais sobre Variáveis de ambiente.
- Saiba mais sobre Propriedades de modelo.
- Saiba mais sobre Saídas.
- Saiba mais sobre Esquemas.