Cuando desarrollas una app, lo más probable es que requieras arquitecturas complejas. Para facilitar la replicación de tu implementación y la resolución de problemas en ella, te recomendamos que dividas la configuración en plantillas.
Una plantilla es un archivo separado que define un conjunto de recursos. Puedes volver a usar plantillas en diferentes implementaciones, lo que crea coherencia en implementaciones complejas.
Puedes usar Python o Jinja2 a fin de crear plantillas para Deployment Manager. Te recomendamos que uses plantillas de Python, ya que te brinda una mayor flexibilidad y más funciones a medida que escalas tu app.
Plantillas de Python
Si eliges escribir plantillas en Python, estas deben cumplir los siguientes requisitos:
La plantilla debe escribirse en Python 3.x.
La plantilla debe definir un método llamado
GenerateConfig(context)
ogenerate_config(context)
. Si usas ambos nombres de método en la misma plantilla, el métodogenerate_config()
tendrá prioridad.El objeto
context
contiene metadatos sobre la implementación y el entorno, como el nombre de la implementación, el proyecto actual, etcétera. En los próximos pasos, usarás estas variables específicas de la implementación.El método debe mostrar un diccionario de Python.
Examina plantillas de muestra
Desde el repositorio de muestras, abre 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
Esta plantilla define la primera máquina virtual (VM) de los ejemplos anteriores:
Abre la segunda plantilla, vm-template-2.py
, que define la segunda VM:
En ambas plantillas, reemplaza MY_PROJECT por el ID del proyecto.
Importa plantillas
Después de crear las plantillas, debes importarlas a tu configuración. Abre el two-vms.yaml
nuevo:
cd deploymentmanager-samples/examples/v2/step_by_step_guide/step5_create_a_template/python
nano two-vms.yaml # use your preferred text editor
Este archivo de configuración tiene una sección imports
nueva que llama a las dos plantillas de VM, vm-template.py
y vm-template-2.py
:
Una nota sobre los nombres de recursos
Cuando usa una plantilla, los nombres de tus recursos se definen con el campo name
provisto en la plantilla, no el nombre en el archivo de configuración.
Por ejemplo, en este caso, las instancias de VM se crean con los nombres en las plantillas, the-first-vm
y the-second-vm
. Los valores vm-1
y vm-2
, definidos en la configuración, se usan para nombrar una instancia de la plantilla, pero no son nombres de recursos.
Guarda tu configuración y, luego, impleméntala
Para implementar la configuración, ejecuta este comando:
gcloud deployment-manager deployments create deployment-with-templates --config two-vms.yaml
Para ver tu implementación, ejecuta este comando:
gcloud deployment-manager deployments describe deployment-with-templates
De cara al futuro: usa plantillas múltiples
En el siguiente paso, combinarás plantillas de modo que tu configuración solo llame a una plantilla para implementar todos tus recursos.
Borrar tu implementación
Antes de continuar, te recomendamos que borres la implementación para evitar cargos. No necesitas esta implementación para el siguiente paso. Ejecuta el siguiente comando para borrar la implementación:
gcloud deployment-manager deployments delete deployment-with-templates