Uma das vantagens de usar modelos é a capacidade de criar e definir propriedades de modelos personalizados. As propriedades do modelo são variáveis arbitrárias que define nos ficheiros de modelo. Qualquer ficheiro de configuração ou ficheiro de modelo que use o modelo em questão pode fornecer um valor para a propriedade do modelo sem alterar o modelo diretamente. Isto permite-lhe abstrair a propriedade para que possa alterar o valor da propriedade para cada configuração única sem atualizar o modelo subjacente.
Por exemplo, a linha seguinte especifica uma propriedade do modelo no URL do tipo de máquina:
machineType: zones/{{ properties["zone"] }}/machineTypes/n1-standard-1
Numa configuração que usa este modelo, pode definir o valor de zone
na secção properties
do modelo:
imports: - path: vm_template.jinja resources: - name: my-vm type: vm_template.jinja properties: zone: us-central1-a
O Deployment Manager sabe que tem de transmitir o valor de zone
ao modelo subjacente.
Antes de começar
- Se quiser usar os exemplos de linhas de comando neste guia, instale a ferramenta de linhas de comando`gcloud`.
- Se quiser usar os exemplos de API neste guia, configure o acesso à API.
- Compreenda como criar um modelo básico.
- Compreenda como criar uma configuração
Criar uma propriedade de modelo
Para criar uma propriedade de modelo:
Jinja
No Jinja, defina uma propriedade com a seguinte sintaxe:
{{ properties["PROJECT_NAME"] }}
Por exemplo:
Python
Em Python, defina uma propriedade com a seguinte sintaxe:
context.properties["PROPERTY_NAME"]
Por exemplo:
Para ver o exemplo completo em Python, consulte o repositório do GitHub do Deployment Manager.
Definir valores para propriedades de modelos na configuração de nível superior
Na configuração de nível superior, pode definir valores para propriedades de modelos através da sintaxe:
imports: - path: vm_template.jinja resources: - name: my-vm type: vm_template.jinja properties: zone: us-central1-a
Tem de definir valores para todas as propriedades do modelo no modelo. Por exemplo, se um modelo tiver propriedades do modelo zone
, image
e network
, tem de definir valores para todas essas propriedades na configuração de nível superior.
Se determinadas propriedades do modelo tiverem valores predefinidos, considere usar esquemas para definir estes valores predefinidos. Uma propriedade de modelo com um valor predefinido pode ser omitida da configuração de nível superior se o valor predefinido for adequado para a implementação.
Definir valores para propriedades de modelos na linha de comandos
Em vez de fornecer valores para as propriedades do modelo no ficheiro principal que importa o modelo, o Deployment Manager oferece a capacidade de definir estes valores diretamente na Google Cloud CLI. Pode ignorar a criação do ficheiro YAML de nível superior. O Deployment Manager gera automaticamente uma configuração de nível superior para a sua implementação com base nas informações do seu pedido.
Por exemplo, suponha que tem o seguinte modelo com uma propriedade
do modelo denominada zone
:
Com a CLI do Google Cloud, pode transmitir este ficheiro de modelo diretamente
e fornecer os valores para as propriedades do modelo na linha de comandos. Por exemplo, o pedido seguinte é transmitido no modelo e especifica a propriedade zone
diretamente na linha de comandos:
gcloud deployment-manager deployments create a-single-vm --template vm_template.jinja \
--properties zone:us-central1-a
Tenha em atenção o seguinte:
Todos os valores são analisados como valores YAML. Por exemplo,
version: 3
é transmitido como um número inteiro. Se quiser especificá-lo como uma string, coloque aspas simples escapadas à volta do valor,version: \'3\'
.Os valores booleanos não são sensíveis a maiúsculas e minúsculas, pelo que
TRUE
,true
eTrue
são tratados da mesma forma.Tem de transmitir todas as propriedades necessárias definidas pelo modelo. Não pode fornecer apenas um subconjunto das propriedades. Se determinadas propriedades tiverem valores predefinidos, pode omitir a propriedade da linha de comandos.
Para especificar várias propriedades, indique pares de chave:valor separados por vírgulas. A ordem pela qual especifica os pares não importa. Por exemplo:
gcloud deployment-manager deployments create my-igm \ --template vm_template.jinja \ --properties zone:us-central1-a,machineType:n1-standard-1,image:debian-9
Depois de executar este comando, o Deployment Manager cria uma implementação com o modelo que forneceu. Pode confirmar que a implementação foi criada através da Google Cloud consola ou da CLI gcloud. Para ver informações sobre a visualização de uma implementação, leia o artigo Visualizar um manifesto.
O que se segue?
- Preencha informações sobre os seus projetos e implementações através de variáveis de ambiente.
- Adicione um modelo permanentemente ao seu projeto como um tipo composto.
- Alojamento de modelos externos para partilhar com outras pessoas.