Esta página descreve a sintaxe usada pelo Deployment Manager. Use este guia como referência para saber que sintaxe usar nas suas configurações e modelos.
Sintaxe para configurações e modelos
Sintaxe básica
resources
: um conjunto de recursos a criar.name
- O nome desta instanciação deste recurso.type
- O tipo de recurso. Pode ser um tipo base, comocompute.v1.instance
, um fornecedor de tipos, comogcp-types/compute-v1:addresses
, ou um modelo importado. Consulte a lista de fornecedores de tipos suportados.properties
- As propriedades deste recurso. Para uma introdução, consulte o artigo Propriedades do modelo.metadata
– Configuração adicional para este recurso. Veja uma lista dos campos em Metadados.
Exemplo
resources:
- name: vm-instance
type: compute.v1.instance
properties:
machineType: zones/us-central1-a/machineTypes/n1-standard-1
...
Controlo de acesso
Se quiser definir políticas IAM nos seus recursos, usa uma accessControl
secção:
Adicione a secção
accessControl
à configuração de nível superior para cada recurso ao qual quer aplicar políticas de controlo de acesso.Especifique o
gcpIamPolicy
pretendido para o recurso. Cada política IAM pode conter uma lista de associações. Cada associação associa uma lista de responsáveis a uma função.
Para obter informações detalhadas sobre o controlo do acesso aos recursos, consulte o artigo Definir o controlo de acesso numa configuração.
Por exemplo, a secção accessControl
seguinte adiciona associações que concedem estas funções aos utilizadores:
Utilizador | Função |
---|---|
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 informações sobre quando usar referências e mais exemplos, saiba mais sobre como criar referências.
Pode usar referências às propriedades de outros recursos em vez de fornecer valores diretamente. Por exemplo, se quiser criar um gestor de grupos de instâncias que use um modelo de instância da mesma implementação, em vez de escrever explicitamente o link completo do modelo de instância, pode usar uma referência com a sintaxe $(ref.instance-template.selfLink)
.
Para ver a que propriedades pode criar referências, consulte o método get
da API do recurso. Por exemplo, para uma lista de todas as propriedades de uma instância de VM, consulte a resposta do método instances.get()
.
Declara referências com uma sintaxe semelhante à notação "ponto" JSONPath. Use a seguinte sintaxe para declarar uma referência:
$(ref.RESOURCE_NAME.PATH_TO_PROPERTY)
Para propriedades que são listas, como as interfaces de rede para 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 da implementação
Quando cria uma implementação, o Deployment Manager cria variáveis de ambiente que contêm informações sobre a sua implementação, como o nome do projeto atual, o nome da implementação, etc.
Para ver uma lista completa das variáveis de ambiente disponíveis, consulte o artigo 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 que cria. Em vez de codificar um valor, pode declarar uma propriedade do modelo e definir o valor da propriedade na configuração de nível superior, em oposição a 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 principal, 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 acerca das propriedades dos modelos.
Resultados
Na secção de resultados, pode definir pares de chave/valor arbitrários que exponham determinadas informações sobre a sua implementação. 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 resultados que os utilizadores podem chamar nas propriedades dos respetivos recursos.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 as saídas.
Metadados
A secção metadata
contém metadados especiais que pode aplicar por recurso. O Deployment Manager tem metadados únicos que acionam determinadas funcionalidades. Por exemplo, a funcionalidade dependsOn
baseia-se numa entrada de metadados.
Depende de
A propriedade dependsOn
cria dependências explícitas entre os seus recursos.
Por exemplo, especificar que o recurso A depende do recurso B garante que o recurso B é sempre criado antes do recurso A.
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 acerca da criação de dependências explícitas.
Sintaxe para esquemas
Um esquema é uma forma de controlar como os utilizadores podem interagir com os seus modelos. Pode usar a seguinte sintaxe no seu ficheiro de esquema. Saiba mais acerca dos esquemas.
informação
A propriedade info
contém metainformações sobre o esquema. Isto inclui informações como um título, um número de versão, uma descrição, etc.
No mínimo, indique um título e uma descrição nesta propriedade.
Exemplo
info:
title: MongoDB Template
author: Jane
description: Creates a MongoDB cluster
version: 1.0
importações
O campo imports
contém uma lista de ficheiros correspondentes que são necessários para modelos que usam este esquema. Quando carrega um modelo com um esquema que tem uma lista de importações, o Deployment Manager verifica se todos os ficheiros na propriedade de importações foram carregados juntamente com o modelo.
Exemplo
imports:
- path: helper.py
name: mongodb_helper.py
obrigatório
O campo obrigatório contém uma lista de elementos do campo de propriedades que são obrigatórios no modelo que usa o esquema. Todos os elementos não especificados neste campo obrigatório são considerados opcionais.
Exemplo
required:
- name
properties:
name:
type: string
description: Name of your Mongo Cluster
size:
type: integer
default: 2
description: Number of Mongo Secondaries
propriedades
O campo properties
contém as regras do esquema JSON para este documento.
Os elementos descritos no campo de propriedades podem ser definidos pelos utilizadores do modelo.
Pode usar todas as validações de esquemas JSON suportadas para estas propriedades, como:
type
(string, booleano, número inteiro, número, ...)default
minimum / exclusiveMinimum / maximum / exclusiveMaximum
minLength / maxLength
pattern
not X / allOf X, Y / anyOf X, Y / oneOf X, Y
No mínimo, é uma boa prática incluir um tipo e uma descrição do campo para que os utilizadores saibam qual é um valor aceitável para a propriedade. Para propriedades opcionais, também é recomendável incluir um valor predefinido.
Leia a documentação de 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
O que se segue?
- Saiba mais sobre as Referências.
- Saiba mais acerca das variáveis de ambiente.
- Saiba mais acerca das propriedades dos modelos.
- Saiba mais sobre as saídas.
- Saiba mais sobre os esquemas.