En esta página se describe la sintaxis que usa Deployment Manager. Usa esta guía como referencia para saber qué sintaxis usar en tus configuraciones y plantillas.
Sintaxis de las configuraciones y las plantillas
Sintaxis básica
resources
: conjunto de recursos que se van a crear.name
: nombre de esta instanciación de este recurso.type
: el tipo de recurso. Puede ser un tipo base comocompute.v1.instance
, un proveedor de tipos comogcp-types/compute-v1:addresses
o una plantilla importada. Consulta la lista de proveedores de tipos admitidos.properties
: las propiedades de este recurso. Para obtener una introducción, consulta Propiedades de las plantillas.metadata
: configuración adicional de este recurso. Consulta la lista de campos de Metadatos.
Ejemplo
resources:
- name: vm-instance
type: compute.v1.instance
properties:
machineType: zones/us-central1-a/machineTypes/n1-standard-1
...
Control de acceso
Si quieres definir políticas de gestión de identidades y accesos en tus recursos, utiliza una accessControl
sección:
Añade la sección
accessControl
a la configuración de nivel superior de cada recurso al que quieras aplicar políticas de control de acceso.Especifica el
gcpIamPolicy
que quieras para el recurso. Cada política de gestión de identidades y accesos puede contener una lista de vinculaciones. Cada enlace vincula una lista de principales a un rol.
Para obtener información detallada sobre cómo controlar el acceso a los recursos, consulta Configurar el control de acceso en una configuración.
Por ejemplo, en la siguiente sección accessControl
se añaden enlaces que conceden estos roles a los usuarios:
Usuario | Rol |
---|---|
alice@example.com |
roles/pubsub.editor |
|
roles/pubsub.publisher |
resources:
- name: a-new-pubsub-topic
type: pubsub.v1.topic
properties:
...
accessControl:
gcpIamPolicy:
bindings:
- role: roles/pubsub.editor
members:
- "user:alice@example.com"
- role: roles/pubsub.publisher
members:
- "user:jane@example.com"
- "serviceAccount:my-other-app@appspot.gserviceaccount.com"
Referencias
Para obtener información sobre cuándo usar referencias y ver más ejemplos, consulta el artículo sobre cómo crear referencias.
Puedes usar referencias a las propiedades de otros recursos en lugar de proporcionar valores directamente. Por ejemplo, si quieres crear un gestor de grupos de instancias que use una plantilla de instancia de la misma implementación, en lugar de escribir explícitamente el enlace completo de la plantilla de instancia, puedes usar una referencia con la sintaxis $(ref.instance-template.selfLink)
.
Para ver a qué propiedades puedes crear referencias, consulta el método get
de la API del recurso. Por ejemplo, para ver una lista de todas las propiedades de una instancia de VM, consulta la respuesta del método instances.get()
.
Las referencias se declaran con una sintaxis similar a la notación de puntos de JSONPath. Usa la siguiente sintaxis para declarar una referencia:
$(ref.RESOURCE_NAME.PATH_TO_PROPERTY)
En el caso de las propiedades que son listas, como las interfaces de red de las instancias de Compute Engine, utiliza la siguiente sintaxis:
$(ref.RESOURCE_NAME.LIST_PROPERTY[index].ITEM)
Ejemplos
$(ref.exampleInstance.networkInterfaces[0].natIp)
$(ref.exampleInstance.serviceAccounts[0].email)
Variables de entorno específicas para el despliegue
Cuando creas una implementación, Deployment Manager crea variables de entorno que contienen información sobre tu implementación, como el nombre del proyecto actual, el nombre de la implementación, etc.
Para ver una lista completa de las variables de entorno disponibles, consulta el artículo Variables de entorno.
Para usar una variable de entorno, sigue estos pasos:
{{ env["deployment"] }} # Jinja context.env["deployment"] # Python
Ejemplo
- type: compute.v1.instance name: vm-{{ env["deployment"] }}
Propiedades de la plantilla
Una propiedad de plantilla es una propiedad arbitraria que usted crea. En lugar de codificar un valor, puedes declarar una propiedad de plantilla y definir el valor de la propiedad en la configuración de nivel superior, en lugar de proporcionar la propiedad y el valor de forma estática directamente en la plantilla. Para crear una propiedad de plantilla, usa la siguiente sintaxis:
{{ properties["property-name"] }} # Jinja context.properties["property-name"] # Python
A continuación, en la configuración de nivel superior o en la plantilla principal, define el valor de la propiedad:
imports:
- path: vm_template.jinja
resources:
- name: my-vm
type: vm_template.jinja
properties:
property-name: example-value
Más información sobre las propiedades de las plantillas
Resultados
En la sección de resultados, puedes definir pares clave-valor arbitrarios que expongan cierta información sobre tu implementación. Usted proporciona la clave y define el valor como una cadena estática, una referencia a una propiedad, una variable de plantilla o una variable de entorno.
outputs
: declara una lista de salidas a las que los usuarios pueden llamar en las propiedades de sus recursos.name
: nombre de la propiedad de salida.value
: valor de la propiedad de salida.
Ejemplo
resources:
- name: vm-instance
type: compute.v1.instance
...
outputs:
- name: databaseIp
value: $(ref.vm-instance.networkInterfaces[0].natIp)
- name: databaseName
value: example-database
Más información sobre las salidas
Metadatos
La sección metadata
contiene metadatos especiales que puede aplicar a cada recurso. Deployment Manager tiene metadatos únicos que activan determinadas funciones. Por ejemplo, la función dependsOn
se basa en una entrada de metadatos.
Depende de
La propiedad dependsOn
crea dependencias explícitas entre tus recursos.
Por ejemplo, si se especifica que el recurso A depende del recurso B, se asegura de que el recurso B se cree siempre antes que el recurso A.
metadata: the metadata for this resource
dependsOn: Any explicit dependencies to another resource.
Ejemplo
resources:
- name: vm-instance
type: compute.v1.instance
properties:
machineType: zones/us-central1-a/machineTypes/n1-standard-1
...
metadata:
dependsOn:
- persistent-disk-1
- a-new-network-1
Más información sobre cómo crear dependencias explícitas
Sintaxis de los esquemas
Un esquema es una forma de controlar cómo pueden interactuar los usuarios con tus plantillas. Puede usar la siguiente sintaxis en su archivo de esquema. Consulta más información sobre los esquemas.
información
La propiedad info
contiene metainformación sobre el esquema. Esto incluye información como el título, el número de versión, la descripción, etc.
Como mínimo, proporciona un título y una descripción en esta propiedad.
Ejemplo
info:
title: MongoDB Template
author: Jane
description: Creates a MongoDB cluster
version: 1.0
importaciones
El campo imports
contiene una lista de los archivos correspondientes que se necesitan para las plantillas que usan este esquema. Cuando subes una plantilla con un esquema que tiene una lista de importaciones, Deployment Manager comprueba que todos los archivos de la propiedad imports se hayan subido junto con la plantilla.
Ejemplo
imports:
- path: helper.py
name: mongodb_helper.py
obligatorio
El campo obligatorio contiene una lista de elementos del campo de propiedades que son obligatorios en la plantilla que usa el esquema. Los elementos que no se especifiquen en este campo obligatorio se considerarán opcionales.
Ejemplo
required:
- name
properties:
name:
type: string
description: Name of your Mongo Cluster
size:
type: integer
default: 2
description: Number of Mongo Secondaries
properties
El campo properties
contiene las reglas del esquema JSON de este documento.
Los usuarios de la plantilla pueden definir los elementos descritos en el campo de propiedades.
Puedes usar todas las validaciones de esquemas JSON admitidas para estas propiedades, como las siguientes:
type
(cadena, booleano, entero, número, etc.)default
minimum / exclusiveMinimum / maximum / exclusiveMaximum
minLength / maxLength
pattern
not X / allOf X, Y / anyOf X, Y / oneOf X, Y
Como mínimo, es recomendable incluir un tipo y una descripción del campo para que los usuarios sepan qué valor es aceptable para la propiedad. En el caso de las propiedades opcionales, también es recomendable incluir un valor predeterminado.
Consulta la documentación de validación de esquemas JSON para ver una lista de palabras clave de validación.
Ejemplo
properties:
name:
type: string
description: Name of your Mongo Cluster
size:
type: integer
default: 2
description: Number of Mongo Secondaries
minimum: 1
Siguientes pasos
- Consulta información sobre las referencias.
- Consulta información sobre las variables de entorno.
- Consulta información sobre las propiedades de las plantillas.
- Consulta información sobre las salidas.
- Consulta información sobre los esquemas.