Los siguientes componentes son los elementos fundamentales de Deployment Manager.
Configuración
Una configuración describe todos los recursos que quieres para una sola implementación.
Una configuración es un archivo escrito con sintaxis YAML que incluye una lista de los recursos que quieres crear y sus respectivas propiedades. Una configuración debe contener una sección resources:
seguida de la lista de recursos que se van a crear.
Cada recurso debe contener tres componentes:
name
: cadena definida por el usuario para identificar este recurso, comomy-vm
,project-data-disk
othe-test-network
.type
: el tipo de recurso que se va a implementar, comocompute.v1.instance
ocompute.v1.disk
. Los tipos de recursos base se describen y se enumeran en la documentación sobre los tipos de recursos admitidos.properties
: los parámetros de este tipo de recurso. Deben coincidir con las propiedades del tipo, comozone: asia-east1-a
yboot: true
.
Este es un ejemplo de configuración:
resources:
- name: the-first-vm
type: compute.v1.instance
properties:
zone: us-central1-a
machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/f1-micro
disks:
- deviceName: boot
type: PERSISTENT
boot: true
autoDelete: true
initializeParams:
sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20150423
networkInterfaces:
- network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default
accessConfigs:
- name: External NAT
type: ONE_TO_ONE_NAT
Plantillas
Una configuración puede contener plantillas, que son partes del archivo de configuración que se han abstraído en elementos de creación individuales. Una vez que hayas creado una plantilla, podrás reutilizarla en las implementaciones que necesites. Del mismo modo, si te das cuenta de que estás reescribiendo configuraciones que comparten propiedades muy similares, puedes abstraer las partes compartidas en plantillas. Las plantillas son mucho más flexibles que los archivos de configuración individuales y están diseñadas para facilitar la portabilidad entre implementaciones.
Los archivos de plantilla se escriben en Python o Jinja2. El sistema Deployment Manager interpreta cada plantilla de forma recursiva e inserta los resultados en el archivo de configuración. Por lo tanto, la interpretación de cada plantilla da como resultado la misma sintaxis YAML para los recursos que la definida anteriormente para el propio archivo de configuración.
Para crear una plantilla sencilla, consulta el artículo Crear una plantilla básica.
Las configuraciones se describen como totalmente ampliadas o sin ampliar. Una configuración totalmente desplegada describe todos los recursos y propiedades de la implementación, incluido el contenido de los archivos de plantilla importados. Por ejemplo, puedes proporcionar una configuración sin expandir que utilice una plantilla de la siguiente manera:
imports:
- path: vm_template.jinja
resources:
- name: vm-instance
type: vm_template.jinja
properties:
zone: us-central1-a
project: myproject
Una vez expandido, el archivo de configuración contendría el contenido de todas las plantillas, como se muestra a continuación:
resources:
- name: the-first-vm
type: compute.v1.instance
properties:
zone: us-central1-a
machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/f1-micro
disks:
- deviceName: boot
type: PERSISTENT
boot: true
autoDelete: true
initializeParams:
sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20150423
networkInterfaces:
- network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default
accessConfigs:
- name: External NAT
type: ONE_TO_ONE_NAT
Recurso
Un recurso representa un único recurso de la API. Puede ser un recurso de API proporcionado por un tipo base gestionado por Google o un recurso de API proporcionado por un proveedor de tipos. Por ejemplo, una instancia de Compute Engine es un recurso único, una instancia de Cloud SQL es un recurso único, etc.
Para especificar un recurso, debes indicar el tipo de ese recurso. Consulta la sección Tipos de este artículo para obtener más información.
Tipos
Para crear un recurso en Deployment Manager, debes especificar un type
. Un tipo puede representar un único recurso de API, conocido como tipo base, o un conjunto de recursos, conocido como tipo compuesto, que se creará como parte de tu implementación.
Por ejemplo, para crear una instancia de VM de Compute Engine, especifica el tipo base correspondiente en tu configuración de la siguiente manera:
resources:
- name: the-first-vm
type: compute.v1.instance # The type of resource to deploy
...
Deployment Manager ofrece una lista de tipos básicos que mantiene Google y que puedes usar inmediatamente. Puede consultar una lista de estos tipos en la documentación sobre tipos de recursos y propiedades admitidos.
Tipos base y proveedores de tipos
Un tipo base crea un único recurso primitivo. Por ejemplo, los tipos base propiedad de Google incluyen compute.v1.instance
, storage.v1.bucket
y sqladmin.v1beta4.database
, que se sirven mediante la API V1 de Compute Engine, la API V1 de Cloud Storage y la API Admin V1beta4 de Cloud SQL, respectivamente.
Los tipos base se admiten en una API RESTful que admite operaciones de creación, lectura, actualización y eliminación (CRUD). También puedes crear tipos base adicionales añadiendo un proveedor de tipos si los tipos propiedad de Google no satisfacen tus necesidades. Al crear un proveedor de tipos, se exponen todos los recursos de una API como tipos base que puedes usar. Para crear un proveedor de tipos, debes proporcionar un documento de descriptor de API, que puede ser una especificación de OpenAPI o un Discovery de Google, ajustar las asignaciones de entrada necesarias para la API y registrar el tipo en Deployment Manager. Una vez creados, tú y otros usuarios con acceso a tu proyecto podréis usar los tipos proporcionados por el proveedor.
Cuando añades un proveedor de tipos, todos los recursos que proporciona la API y que son compatibles con una interfaz RESTful con operaciones Create, Read, Update y Delete (CRUD) se expondrán como tipos que puedes usar en tu implementación.
Crear tu propio proveedor de tipos es un proceso avanzado, por lo que Google te recomienda que lo hagas solo si conoces bien la API que quieres integrar.
Para saber cómo crear un proveedor de tipos, consulta Integración con Deployment Manager.
Cuando llamas a un tipo base en tus plantillas o configuraciones, usas una de las siguientes sintaxis en función del tipo.
En el caso de los tipos base gestionados por Google, usa lo siguiente:
type: [API].[VERSION].[RESOURCE]
Por ejemplo,
compute.v1.instance
.En el caso de los proveedores de tipos gestionados por Google (beta), usa lo siguiente:
type: gcp-types/[PROVIDER]:[RESOURCE]
Para ver una lista de los proveedores de tipos admitidos, consulta Proveedores de tipos admitidos Google Cloud .
Para los tipos base proporcionados por un proveedor de tipos, usa lo siguiente:
type: [PROJECT_ID]/[TYPE_PROVIDER]:[COLLECTION]
Donde
[COLLECTION]
es la ruta al recurso de la API que se va a desplegar.
Tipos compuestos
Un tipo compuesto contiene una o varias plantillas preconfiguradas para funcionar conjuntamente. Estas plantillas se amplían a un conjunto de tipos base cuando se despliegan en un despliegue. Los tipos compuestos son básicamente plantillas alojadas que puedes añadir a Deployment Manager. Puedes crear tipos compuestos para soluciones comunes de forma que la solución se pueda reutilizar fácilmente o crear configuraciones complejas que puedas reutilizar en el futuro.
Por ejemplo, puedes crear un tipo compuesto que implemente un grupo de instancias gestionado con balanceo de carga de red. Un balanceador de carga de red requiere variosGoogle Cloud recursos y cierta configuración entre ellos, por lo que puedes configurar estos recursos una vez y registrar el tipo en Deployment Manager. Después, tú y otros usuarios con acceso a tu proyecto podréis llamar a ese tipo e implementarlo en configuraciones futuras.
Para llamar a un tipo compuesto en tu configuración, usa lo siguiente:
type: [PROJECT_ID]/composite:[TYPE_NAME]
Por ejemplo:
resources:
- name: my-composite-type
type: myproject/composite:example-composite-type
Para saber cómo crear un tipo compuesto, consulta el artículo Añadir un tipo compuesto a Deployment Manager.
Archivo de manifiesto
Un manifiesto es un objeto de solo lectura que contiene la configuración original que has proporcionado, incluidas las plantillas importadas, así como la lista de recursos totalmente ampliada, creada por Deployment Manager. Cada vez que actualiza un despliegue, Deployment Manager genera un archivo de manifiesto nuevo para reflejar el nuevo estado del despliegue. Cuando se soluciona un problema con una implementación, es útil ver el manifiesto.
Para obtener más información, consulta Ver un manifiesto.
Implementación
Un despliegue es un conjunto de recursos que se despliegan y gestionan juntos mediante una configuración.
Para obtener más información, consulta el artículo Crear una implementación.
Siguientes pasos
- Sigue los pasos de la guía de inicio rápido de Deployment Manager.
- Consulta la guía paso a paso.
- Consulta información sobre las configuraciones y las implementaciones.