En este documento se describe cómo utilizar plantillas externas en la implementación que están alojadas en algún sitio de Internet en lugar de la máquina local.
Puedes almacenar plantillas en un host externo en cualquier lugar de Internet y llamar a estas plantillas desde la configuración. Alojar plantillas de manera externa ofrece ciertas ventajas en comparación con almacenar plantillas de forma local:
- Se comparten las plantillas fácilmente con otros.
- Se garantiza que las configuraciones estén utilizando siempre la plantilla más actualizada.
- Se administran automáticamente las importaciones y los esquemas relevantes.
Deployment Manager siempre obtiene la última versión de plantillas externas cada vez que vuelves a implementar la configuración. Si mantienes las plantillas, las implementaciones siempre estarán actualizadas. Deployment Manager también manejará la importación de plantillas dependientes si se hace referencia a estas en la plantilla externa.
Ejemplo
Esta configuración importa una plantilla externa:
resources:
- name: my-frontend
type: gs://my-frontend-templates/webserver-frontend.jinja
Antes de comenzar
- Si deseas usar los ejemplos de línea de comandos de esta guía, instala la herramienta de línea de comandos de gcloud.
- Si deseas usar los ejemplos de la API en esta guía, configura el acceso a la API.
- Lee la documentación sobre Configuración.
- Lee la documentación sobre Plantillas.
Aloja plantillas externas
Puedes alojar plantillas externas en Google Cloud Storage o en una ubicación de acceso público, como GitHub. Siempre que haya una URL asociada al archivo y tengas acceso a las plantillas, Deployment Manager podrá hacer la descarga. Si el archivo utiliza un esquema para importar otras plantillas, también debes alojar esas plantillas en la misma URL base.
En Google Cloud Storage
Para alojar plantillas en Google Cloud Storage:
- Crea un depósito para las plantillas, o usa un depósito existente.
- Sube las plantillas y los archivos de plantillas relacionados, como esquemas, al depósito.
- Si planeas usar las plantillas de un proyecto de Google Cloud Platform diferente del proyecto al que pertenecen las plantillas, configura los controles de acceso para permitir ese acceso.
Alojar las plantillas en Google Cloud Storage te permite controlar quién tiene acceso a las plantillas porque puedes configurar las opciones de control de acceso en el bucket de Cloud Storage pertinente o en la plantilla específica.
Por el contrario, alojar las plantillas en otras URL de acceso público requiere que las plantillas estén a disposición del público general.
En una URL de acceso público
De manera alternativa, puedes alojar plantillas externas fuera de Google Cloud Storage, siempre que las plantillas sean de acceso público. Por ejemplo, puedes alojar plantillas en GitHub y hacer referencia a las plantillas con el uso de la URL de GitHub.
Para GitHub específicamente, debes proporcionar la URL de GitHub sin procesar para que Deployment Manager obtenga la plantilla en lugar de la página de GitHub HTML. Por ejemplo, una URL sin procesar luce así:
https://raw.githubusercontent.com/GoogleCloudPlatform/deploymentmanager-samples/master/examples/v2/single_vm/jinja/vm_template.jinja
Llamar a una plantilla externa
Llama a una plantilla externa como lo harías con una plantilla local, pero proporciona la URL completa del archivo de plantilla como tipo: Por ejemplo:
resources:
- name: my-salt-cluster
type: gs://v2/saltstack/salt_cluster.jinja
Para una URL de GitHub:
resources:
- name: my-salt-cluster
type: https://raw.githubusercontent.com/GoogleCloudPlatform/deploymentmanager-samples/master/examples/v2/single_vm/vm_template.jinja
Si una plantilla externa importa otras plantillas o si existe un esquema adjunto, puedes almacenar los archivos relacionados en el mismo directorio o en un subdirectorio relativo y, además, incluir estas otras plantillas con una URL relativa. Deployment Manager buscará estas otras plantillas con el uso de la ruta relativa según la URL base.
Por ejemplo, si la configuración se veía de la siguiente manera:
resources:
- name: my-salt-cluster
type: gs://v2/saltstack/salt_cluster.jinja
Y había un archivo de esquema llamado salt_cluster.jinja.schema
que importaba estos archivos:
imports:
- path: minion.py
- path: master.py
- path: examples/source/example.py
Deployment Manager descargará y, además, importará todos los archivos necesarios para la plantilla de forma automática.