Ao desenvolver uma app, é muito provável que precise de arquiteturas complexas. Para facilitar a replicação e a resolução de problemas da implementação, recomendamos que divida a configuração em modelos.
Um modelo é um ficheiro separado que define um conjunto de recursos. Pode reutilizar modelos em diferentes implementações, o que cria consistência em implementações complexas.
Pode usar Python ou Jinja2 para criar modelos para o Deployment Manager. Recomendamos que use modelos Python, porque o Python permite uma maior flexibilidade e mais funcionalidades à medida que expande a sua app.
Modelos Python
Se optar por escrever modelos em Python, os seus modelos têm de cumprir estes requisitos:
O modelo tem de ser escrito em Python 3.x
O modelo tem de definir um método denominado
GenerateConfig(context)
ougenerate_config(context)
. Se usar ambos os nomes de métodos no mesmo modelo, o métodogenerate_config()
tem prioridade.O objeto
context
contém metadados sobre a implementação e o seu ambiente, como o nome da implementação, o projeto atual, etc. Vai usar estas variáveis específicas da implementação nos passos posteriores.O método tem de devolver um dicionário Python.
Examinar modelos de exemplo
No repositório de amostras, abra vm-template.py
:
cd deploymentmanager-samples/examples/v2/step_by_step_guide/step5_create_a_template/python
nano vm-template.py # use your preferred text editor
Este modelo define a primeira máquina virtual (VM) dos exemplos anteriores:
Abra o segundo modelo, vm-template-2.py
, que define a segunda VM:
Em ambos os modelos, substitua MY_PROJECT pelo ID do seu projeto.
Importar modelos
Depois de criar modelos, tem de os importar para a sua configuração. Abra o novo two-vms.yaml
:
cd deploymentmanager-samples/examples/v2/step_by_step_guide/step5_create_a_template/python
nano two-vms.yaml # use your preferred text editor
Este ficheiro de configuração tem uma nova secção imports
que chama os dois modelos de VM, vm-template.py
e vm-template-2.py
:
Uma nota sobre os nomes de recursos
Quando usa um modelo, os nomes dos recursos são definidos através do campo name
fornecido no modelo e não do nome no ficheiro de configuração.
Por exemplo, neste caso, as instâncias de VM são criadas com os nomes nos modelos, the-first-vm
e the-second-vm
. Os valores vm-1
e vm-2
, definidos na configuração, são usados para dar um nome a uma instanciação do modelo, mas não são nomes de recursos.
Guardar a configuração e implementá-la
Para implementar a configuração, execute este comando:
gcloud deployment-manager deployments create deployment-with-templates --config two-vms.yaml
Para ver a sua implementação, execute este comando:
gcloud deployment-manager deployments describe deployment-with-templates
Olhando para o futuro: usar vários modelos
No passo seguinte, combine modelos para que a sua configuração chame apenas um modelo para implementar todos os seus recursos.
Eliminar a implementação
Antes de continuar, recomendamos que elimine a implementação para evitar custos. Não precisa desta implementação para o passo seguinte. Execute o seguinte comando para eliminar a implementação:
gcloud deployment-manager deployments delete deployment-with-templates