Esta página describe la sintaxis que utiliza Deployment Manager. Usa esta guía como referencia para saber qué sintaxis emplear en tus configuraciones y plantillas.
Sintaxis para las configuraciones y plantillas
Sintaxis básica
resources
: un conjunto de recursos para crear.name
: el nombre de esta instanciación de este recurso.type
: el tipo de recurso. Puede ser un tipo de base, comocompute.v1.instance
, un proveedor de tipos, comogcp-types/compute-v1:addresses
, o una plantilla importada. Consulta la lista de proveedores de tipos compatibles.properties
: las propiedades de este recurso. Para obtener una introducción, lee Propiedades de la plantilla.metadata
: configuración adicional para este recurso. Encuentra una lista de campos en Metadatos.
Ejemplo
resources:
- name: vm-instance
type: compute.v1.instance
properties:
machineType: zones/us-central1-a/machineTypes/n1-standard-1
...
Control de acceso
Si deseas establecer políticas de IAM en tus recursos, usa una sección accessControl
:
Agrega la sección
accessControl
a la configuración de nivel superior para cada recurso en el que deseas aplicar las políticas de control de acceso.Especifica la
gcpIamPolicy
deseada para el recurso. Cada política de IAM puede contener una lista de vínculos. Cada vínculo une a cada principal de una lista a una función.
Para obtener información más detallada sobre cómo controlar el acceso a los recursos, lee Define el control de acceso en una configuración.
Por ejemplo, la siguiente sección accessControl
agrega vinculaciones que otorgan estas funciones a los usuarios:
User | Función |
---|---|
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 más ejemplos, consulta cómo crear referencias.
Puedes usar referencias a las propiedades de otros recursos en lugar de proporcionar valores de manera directa. Por ejemplo, si deseas crear un administrador de grupo de instancias que usa una plantilla de instancias de la misma implementación, puedes usar una referencia con la sintaxis $(ref.instance-template.selfLink)
en vez de escribir el vínculo completo de manera explícita.
Si deseas ver para qué propiedades puedes crear referencias, consulta el método get
para la API del recurso. Por ejemplo, para una lista de todas las propiedades de una instancia de VM, consulta la respuesta del método instances.get()
.
Tú declaras las referencias 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)
Para las propiedades que son listas, como las interfaces de red para instancias de Compute Engine, usa 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 de la implementación
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 y demás.
Para ver la lista completa de las variables de entorno, consulta las variables de entorno.
Para usar una variable de entorno:
{{ env["deployment"] }} # Jinja context.env["deployment"] # Python
Ejemplo
- type: compute.v1.instance name: vm-{{ env["deployment"] }}
Propiedades de la plantilla
Una propiedad de una plantilla es una propiedad arbitraria que creas. En lugar codificar un valor específico, puedes declarar la propiedad en la plantilla y determinar su valor en la configuración del nivel superior, en lugar de proveer los datos estáticos de la propiedad y del valor directamente en la plantilla. Para crear una propiedad de una plantilla, usa la siguiente sintaxis:
{{ properties["property-name"] }} # Jinja context.properties["property-name"] # Python
Luego, en tu configuración del nivel superior o en una plantilla madre, determina el valor de la propiedad:
imports:
- path: vm_template.jinja
resources:
- name: my-vm
type: vm_template.jinja
properties:
property-name: example-value
Conoce más sobre las Propiedades de las plantillas.
Resultados
En la sección de resultados, puedes definir pares arbitrarios de claves y valores que expongan una determinada información sobre la implementación. Proporcionas la clave y determinas el valor como una string estática, una referencia a una propiedad, una variable de plantilla o una variable de entorno.
outputs
: declara una lista de resultados a los que los usuarios pueden llamar en las propiedades de sus recursos.name
: nombre de la propiedad de resultado.value
: valor de la propiedad de resultado.
Ejemplo
resources:
- name: vm-instance
type: compute.v1.instance
...
outputs:
- name: databaseIp
value: $(ref.vm-instance.networkInterfaces[0].natIp)
- name: databaseName
value: example-database
Conoce más acerca de los Resultados.
Metadatos
La sección metadata
contiene metadatos especiales que puedes aplicar por recurso. Deployment Manager tiene metadatos únicos que activan ciertos atributos. Por ejemplo, la función dependsOn
se basa en una entrada de metadatos.
dependsOn
La propiedad dependsOn
crea dependencias explícitas entre tus recursos.
Por ejemplo, si especificas que un Recurso A depende de un Recurso B, te aseguras de que siempre se cree el Recurso B antes que el 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
Conoce más acerca de cómo crear dependencias explícitas.
Sintaxis para esquemas
Un esquema es la manera en la que puedes controlar la forma en la que los usuarios interactúan con tus plantillas. Puedes usar la siguiente sintaxis en tu archivo de esquema. Conoce más acerca de los esquemas.
info
La propiedad info
contiene metainformación sobre el esquema. Esta incluye información como el título, el número de versión, una descripción, etcétera.
Como mínimo, proporciona el título y una descripción en esta propiedad.
Ejemplo
info:
title: MongoDB Template
author: Jane
description: Creates a MongoDB cluster
version: 1.0
imports
El campo imports
contiene una lista de los archivos correspondientes que se requieren para las plantillas que usan este esquema. Cuando subes una plantilla con un esquema que tiene una lista de imports, Deployment Manager controla que todos los archivos en la propiedad imports se hayan subido con la plantilla.
Ejemplo
imports:
- path: helper.py
name: mongodb_helper.py
required
El campo required contiene una lista de los elementos del campo de propiedades que se necesitan en la plantilla que usa el esquema. Cualquier elemento que no se especifique en el campo required es opcional.
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 en JSON para este documento.
Los usuarios de la plantilla pueden determinar los elementos que se describen en el campo properties.
Puedes usar todas las validaciones de los esquemas en JSON para estas propiedades, como:
type
(string, booleano, número entero, número, …)default
minimum / exclusiveMinimum / maximum / exclusiveMaximum
minLength / maxLength
pattern
not X / allOf X, Y / anyOf X, Y / oneOf X, Y
Como mínimo, es una buena práctica incluir un tipo y una descripción del campo, para que los usuarios sepan cuál es un valor aceptable para la propiedad. Para propiedades opcionales, resulta útil incluir un valor predeterminado.
Lee la documentación sobre la Validación del Esquema en JSON para ver la lista de palabras clave para la 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
Pasos siguientes
- Aprende acerca de las Referencias.
- Aprende acerca de las Variables de entorno.
- Aprende acerca de las Propiedades de las plantillas.
- Aprende acerca de las Resultados.
- Aprende acerca de las Esquemas.