En esta página se describe cómo crear un tipo compuesto con Deployment Manager. Después de crear un tipo compuesto, puedes llamar a ese tipo en tu configuración y crear implementaciones.
Un tipo compuesto es una o varias plantillas configuradas para funcionar conjuntamente que se han añadido permanentemente a Deployment Manager. Una vez que lo hayas añadido, podrás usar un tipo compuesto como si fuera un tipo propiedad de Google. Para obtener más información sobre los tipos, consulta el artículo Tipos: descripción general.
Por ejemplo, puedes crear un conjunto de plantillas que desplieguen un grupo de instancias gestionado con balanceo de carga de red. Puede añadir esas plantillas como un tipo compuesto a Deployment Manager y, después, usar la plantilla en configuraciones futuras como lo haría con otros tipos.
También podría interesarte Compartir tipos entre proyectos.
Antes de empezar
- Si quieres usar los ejemplos de línea de comandos de esta guía, instala la herramienta de línea de comandos`gcloud`.
- Si quieres usar los ejemplos de API de esta guía, configura el acceso a la API.
- Usa la API v2beta para los ejemplos de API de esta guía.
Componentes de un tipo compuesto
Para crear un tipo compuesto, debes tener una plantilla de Jinja o Python de nivel superior y, opcionalmente, un conjunto de archivos auxiliares que se resuelvan en tipos básicos. Los tipos compuestos pueden estar formados por recursos que, a su vez, sean otros tipos compuestos. Deployment Manager expandirá estos tipos de forma recursiva durante la implementación.
Un tipo compuesto consta de los siguientes elementos:
- Plantilla de nivel superior: la plantilla de Jinja o Python de nivel superior que se ejecuta durante la expansión cuando se llama al tipo.
- Un esquema: el archivo JSON Schema que describe información sobre la plantilla de nivel superior y cualquier subimportación definida.
- Archivos importados: cualquier archivo adicional necesario para la ejecución, como archivos auxiliares, subplantillas y esquemas relevantes para las subplantillas, si procede. Sin embargo, es opcional. Tu tipo compuesto también puede contener una sola plantilla de nivel superior.
Crear un tipo compuesto
Para crear un tipo compuesto, registra la plantilla de nivel superior de una configuración y sus importaciones y esquema asociados. Crea un tipo compuesto
con gcloud
o con la API.
También te puede interesar el ejemplo que describe cómo crear y llamar a un tipo compuesto.
gcloud
Para ejecutar este comando, debes estar en el directorio en el que hayas almacenado la plantilla de nivel superior y las subplantillas que forman parte de este tipo compuesto.
Con la CLI de gcloud, haz una solicitud types create
y especifica la plantilla de nivel superior y el nombre de tipo que quieras para llamar a este tipo compuesto.
Ejecuta este comando en el directorio local donde tengas los archivos de plantilla.
$ gcloud beta deployment-manager types create [TYPE_NAME] --template=[TOP_LEVEL_TEMPLATE]
donde:
[TYPE_NAME]
es el nombre que quieres asignar a este tipo[TOP_LEVEL_TEMPLATE]
es la ruta relativa a la plantilla de nivel superior que describe este tipo.
API
En la API, haz una solicitud POST
que contenga los campos composite
y name
. En el campo composite
, define lo siguiente:
- El esquema de nivel superior
- El contenido de las plantillas importadas
- El contenido de tu plantilla de nivel superior
El cuerpo de la solicitud a la API tiene la siguiente estructura:
POST https://www.googleapis.com/deploymentmanager/v2beta/projects/[PROJECT_ID]/global/compositeTypes
{
"composite": {
"files": {
"schema": "[CONTENTS_OF_SCHEMA]",
"imports": [
{
"name": "[TEMPLATE_FILE]",
"content": "[CONTENTS_OF_TEMPLATE_FILE]"
},
{
"name": "[ANOTHER_TEMPLATE_IF_NECESSARY]",
"content": "[CONTENTS_OF_TEMPLATES]"
}
],
"template": "[TOP-LEVEL_TEMPLATE_CONTENTS]",
"templateFileType": "[FILE_TYPE]"
}
},
"name": "[TYPE_NAME]"
}
Para ver un ejemplo de cómo crear estas solicitudes, consulta Crear un tipo compuesto de grupo de instancias gestionado con escalado automático.
Para obtener más información, consulta la documentación del método insert
.
Desplegar un tipo compuesto
Los tipos son un recurso por proyecto y se puede acceder a ellos según los permisos descritos en la documentación de control de acceso. Es decir:
- Los editores y lectores de proyectos, así como los editores de tipos, pueden crear y usar los tipos disponibles en ese proyecto.
- Los usuarios con permiso de lectura de tipos pueden obtener una lista de tipos y usar los tipos disponibles para ese proyecto.
También puedes añadir otro proyecto como visor de tipos para que pueda acceder a tus tipos. Consulta Compartir tipos entre proyectos.
Una vez que hayas registrado un tipo compuesto, podrás desplegarlo de la misma forma que llamarías a los tipos gestionados por Google:
types: [PROJECT_ID]/composite:[TYPE_NAME]
Por ejemplo:
resources:
- name: my example-resource
type: example-project/composite:autoscaled-igm
properties:
...
Desplegar un tipo compuesto directamente con la herramienta de línea de comandos
Deployment Manager ofrece la posibilidad de desplegar un tipo compuesto directamente con la CLI de Google Cloud. En lugar de crear un archivo de configuración de nivel superior, la CLI de gcloud generará automáticamente uno.
Por ejemplo, el siguiente comando implementa un tipo compuesto llamado autoscaled-igm
:
gcloud deployment-manager deployments create my-igm \
--composite-type example-project/composite:autoscaled-igm
También puedes definir las propiedades de tu tipo compuesto con la marca --properties
:
gcloud deployment-manager deployments create my-igm \
--composite-type example-project/composite:autoscaled-igm \
--properties zone:us-central1-a
Ten en cuenta lo siguiente:
Todos los valores se analizan como valores YAML. Por ejemplo,
version: 3
se pasa como un número entero. Si quieres especificarlo como una cadena, incluye comillas simples escapadas alrededor del valor,version: \'3\'
.En los valores booleanos no se distingue entre mayúsculas y minúsculas, por lo que
TRUE
,true
yTrue
se tratan de la misma forma.Debes incluir todas las propiedades obligatorias definidas por el tipo compuesto. No puedes proporcionar solo un subconjunto de las propiedades. Si determinadas propiedades tienen valores predeterminados, puede omitir la propiedad de la línea de comandos.
Para especificar varias propiedades, proporcione pares clave:valor separados por comas. No importa el orden en el que especifiques los pares. Por ejemplo:
gcloud deployment-manager deployments create my-igm \ --composite-type example-project/composite:autoscaled-igm \ --properties zone:us-central1-a,machineType:n1-standard-1,image:debian-8
Después de ejecutar este comando, Deployment Manager crea un despliegue con el tipo compuesto que has proporcionado. Puedes confirmar que se ha creado el despliegue mediante la Google Cloud consola o la CLI de gcloud. Para obtener información sobre cómo ver una implementación, consulta el artículo Ver un manifiesto.
Ejemplo: Crear un tipo compuesto
Deployment Manager ofrece muchas configuraciones de ejemplo del repositorio de GitHub de Deployment Manager que puedes usar como tipos compuestos. En este ejemplo, añadirás un tipo compuesto que despliega un servicio de alta disponibilidad con balanceo de carga en varias zonas de una misma región. Para obtener más información, consulta el ejemplo completo.
En este ejemplo, el archivo de configuración de nivel superior es ha-service.py. Todas las subplantillas se importan en los archivos de esquema.
- Descarga los archivos de Python y de esquema del directorio de GitHub. Omitir los archivos de un subdirectorio y los archivos de diagrama.
En el directorio local donde has descargado todos los archivos, ejecuta el siguiente comando para crear un tipo compuesto llamado
ha-service-example
:gcloud beta deployment-manager types create ha-service-example --template=ha-service.py
Obtén una lista de tipos para confirmar que se ha creado correctamente:
gcloud beta deployment-manager types list --provider composite
Describe el nuevo tipo:
gcloud beta deployment-manager types describe ha-service-example --provider composite
Crea una configuración que implemente tu tipo. Sustituye
[PROJECT_ID]
por el ID de tu proyecto:resources: - name: ha-service-example type: [PROJECT_ID]/composite:ha-service-example properties: dockerImage: gcr.io/deployment-manager-examples/nodejsservicestatic zones: - us-central1-b - us-central1-a
Guarda la configuración como
example-config.yaml
. Ten en cuenta que no has tenido que importar ninguna plantilla en tu configuración.Despliega el nuevo tipo compuesto:
gcloud deployment-manager deployments create ha-service-deployment --config example-config.yaml
La API devuelve una lista de recursos creados a partir del tipo:
Waiting for create [operation-1488254932422-5498f5a950d71-2bd3b8c8-b13ddab5]...done. Create operation operation-1488254932422-5498f5a950d71-2bd3b8c8-b13ddab5 completed successfully. NAME TYPE STATE ERRORS INTENT ha-service-deployment-lb-fr compute.v1.forwardingRule COMPLETED [] ha-service-deployment-lb-hc compute.v1.httpHealthCheck COMPLETED [] ha-service-deployment-lb-tp compute.v1.targetPool COMPLETED [] ha-service-deployment-service-us-central1-a-as compute.v1.autoscaler COMPLETED [] ha-service-deployment-service-us-central1-a-igm compute.v1.instanceGroupManager COMPLETED [] ha-service-deployment-service-us-central1-a-it compute.v1.instanceTemplate COMPLETED [] ha-service-deployment-service-us-central1-b-as compute.v1.autoscaler COMPLETED [] ha-service-deployment-service-us-central1-b-igm compute.v1.instanceGroupManager COMPLETED [] ha-service-deployment-service-us-central1-b-it compute.v1.instanceTemplate COMPLETED []
¡Enhorabuena! Has creado tu primer tipo compuesto.
Siguientes pasos
- Compartir tipos con otros proyectos.
- Eliminar un tipo.
- Cree una configuración.
- Crea una implementación.
- Crea un tipo base con un proveedor de tipos.