Uma das vantagens de usar modelos é a capacidade de criar e definir propriedades de modelo personalizadas. As propriedades de modelo são variáveis arbitrárias definíveis nos arquivos de modelo. Qualquer arquivo de configuração ou de modelo que usa o modelo em questão pode fornecer um valor para a propriedade sem alterar diretamente o modelo. Dessa forma, é possível abstrair a propriedade, a fim de alterar o valor dela para cada configuração exclusiva, sem a necessidade de atualizar o modelo subjacente.
Por exemplo, a linha a seguir especifica uma propriedade de modelo no URL do tipo de máquina:
machineType: zones/{{ properties["zone"] }}/machineTypes/n1-standard-1
Em uma configuração que usa esse modelo, é possível definir o valor de zone
na seçã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 saberá transferir o valor de zone
para o modelo de base.
Antes de começar
- Para usar os exemplos de linha de comando deste guia, instale a ferramenta de linha de comando "gcloud".
- Para usar os exemplos de API deste guia, configure o acesso de API.
- Entenda como criar um modelo básico.
- Entenda como criar uma configuração.
Como criar uma propriedade de modelo
Para criar uma propriedade de modelo:
Jinja
No Jinja, defina uma propriedade usando a seguinte sintaxe:
{{ properties["PROJECT_NAME"] }}
Exemplo:
Python
No Python, defina uma propriedade usando a seguinte sintaxe:
context.properties["PROPERTY_NAME"]
Exemplo:
Para ver o exemplo completo em Python, consulte o repositório do GitHub no Deployment Manager.
Como configurar valores de propriedades de modelo na configuração de nível superior
Na configuração de nível superior, é possível definir os valores das propriedades de modelo usando a sintaxe:
imports: - path: vm_template.jinja resources: - name: my-vm type: vm_template.jinja properties: zone: us-central1-a
É necessário definir os valores de todas as propriedades no modelo. Por exemplo, se um modelo tiver as propriedades de modelo zone
, image
, network
, você precisará definir valores para todas elas na configuração de nível superior.
Se algumas propriedades de modelo tiverem valores padrão, considere usar esquemas para definir tais valores. Uma propriedade de modelo com valor padrão pode ser omitida da configuração de nível superior se esse valor for apropriado para a implantação.
Como configurar valores para propriedades de modelo na linha de comando
Em vez de fornecer valores para propriedades de modelo no arquivo pai que importa o modelo, o Deployment Manager permite definir esses valores diretamente na CLI do Google Cloud. É possível ignorar a criação do arquivo YAML de nível superior. O Deployment Manager gerará automaticamente uma configuração de nível superior para a implantação com base nas informações da solicitação.
Por exemplo, suponha que você tenha o seguinte modelo com uma propriedade de modelo chamada zone
:
Com a Google Cloud CLI, é possível transmitir esse arquivo de modelo diretamente
e insira os valores das propriedades do modelo na linha de comando. Por
exemplo, a solicitação a seguir é transferida no modelo e especifica a
propriedade zone
diretamente na linha de comando:
gcloud deployment-manager deployments create a-single-vm --template vm_template.jinja \
--properties zone:us-central1-a
Lembre-se:
Todos os valores são analisados como valores de YAML. Por exemplo,
version: 3
é transmitido como um número inteiro. Se você quiser especificá-lo como uma string, coloque aspas simples com escape em volta do valor,version: \'3\'
.Os valores booleanos não diferenciam maiúsculas de minúsculas, por isso,
TRUE
,true
eTrue
são tratados da mesma maneira.É preciso que todas as propriedades obrigatórias sejam definidas pelo modelo. Não é possível fornecer apenas um subconjunto de propriedades. Se algumas propriedades tiverem valores padrão, será possível omiti-las da linha de comando.
Para especificar várias propriedades, forneça pares de chave-valor separados por vírgulas. A ordem na qual os pares são especificados não é importante. 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
Após executar esse comando, o Deployment Manager cria uma implantação usando o modelo que você forneceu. Confirme que a implantação foi criada usando o console do Google Cloud ou a CLI gcloud. Para mais informações sobre como visualizar a implantação, leia Como ver um manifesto.
Próximas etapas
- Preencha informações sobre projetos e implantações usando as variáveis de ambiente.
- Adicione um modelo permanentemente ao projeto como tipo composto.
- Hospede modelos externamente para compartilhá-los com outros.