Almacena plantillas en un host externo

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

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:

  1. Crea un bucket para las plantillas, o usa un bucket existente.
  2. Sube las plantillas y los archivos de plantillas relacionados, como esquemas, al bucket.
  3. 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 plantillas en Google Cloud Storage te permite controlar quién tiene acceso a las plantillas, ya que puedes configurar opciones de control de acceso en el bucket de Cloud Storage correspondiente 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 hay un esquema complementario, puedes almacenar los archivos relacionados en el mismo directorio o subdirectorio relativo y, luego, incluir estas otras plantillas con una URL relativa. Deployment Manager buscará estas otras plantillas con la ruta de acceso 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.