Crear una configuración básica

En esta página se describe cómo crear una configuración que puede utilizarse para crear una implementación. A fin de obtener más información sobre las implementaciones, lee Crear una implementación.

Un archivo de configuración define todos los recursos de Google Cloud Platform que conforman una implementación. Debes tener un archivo de configuración para crear una implementación. Un archivo de configuración debe escribirse en sintaxis YAML.

Antes de comenzar

Estructura del archivo de configuración

Un archivo de configuración se escribe en formato YAML y tiene la siguiente estructura:

imports:
- path: path/to/template.jinja
  name: my-template
- path: path/to/another/template.py

resources:
  - name: NAME_OF_RESOURCE
    type: TYPE_OF_RESOURCE
    properties:
      property-a: value
      property-b: value
      ...
      property-z: value
  - name: NAME_OF_RESOURCE
    type: TYPE_OF_RESOURCE
    properties:
      property-a: value
      property-b: value
      ...
      property-z: value

En cada una de las secciones se define una parte diferente de la implementación:

  • Las secciones imports son una lista de archivos de plantillas que utilizará la configuración. De manera recurrente, Deployment Manager expande las plantillas importadas para formar la configuración final.

  • La sección resources es una lista de recursos que conforman esta implementación. Un recurso puede ser:

    • Un tipo de base administrado por Google como, por ejemplo, una instancia de VM de Compute Engine.
    • Una plantilla importada
    • Un tipo compuesto.
    • Un proveedor de tipos.

También puedes incluir otras secciones opcionales como, por ejemplo, las secciones outputs y metadata. La sección outputs te permite exponer los datos de las plantillas y las configuraciones como salidas para que otras plantillas en la misma implementación los utilicen o como salidas para los usuarios finales, al tiempo que la sección metadata te permite utilizar otras características, como establecer dependencias explícitas entre recursos.

Como mínimo, una configuración siempre debe anunciar la sección resources, seguida por una lista de recursos. Otras opciones son opcionales.

Declarar un tipo de recurso

Cada recurso en la configuración debe especificarse como un tipo. Los tipos pueden ser un tipo de base administrado por Google, un tipo compuesto, un proveedor de tipos o una plantilla importada.

Los tipos de base administrados por Google son tipos que se resuelven en recursos de GCP. Por ejemplo, una instancia de Cloud SQL o un depósito de Cloud Storage son un tipo de base administrado por Google. Puedes anunciar estos tipos con el uso de la siguiente sintaxis:

type: <api>.<api-version>.<resource-type>

Por ejemplo, una instancia de Compute Engine tendría el siguiente tipo:

type: compute.v1.instance

Para una base de datos de BigQuery, el tipo podría ser:

type: bigquery.v2.dataset

Para obtener una lista de todos los tipos admitidos, utiliza el siguiente comando:

gcloud deployment-manager types list

Para obtener una lista completa de los tipos de base administrados por Google, consulta Tipos de recursos admitidos.

Si utilizas un tipo compuesto o un proveedor de tipos, anuncia el tipo de la siguiente manera:

# Composite type

resources:
- name: my-composite-type
  type: [PROJECT]/composite:[TYPE_NAME]

Para un proveedor de tipos:

# Base type

resources:
- name: my-base-type
  type: [PROJECT_ID]/[TYPE_PROVIDER_NAME]:[TYPE_NAME]

También puedes crear recursos con el uso de proveedores de tipos administrados por Google (Beta). Para obtener una lista de los proveedores de tipos de Google Cloud Platform, consulta Proveedores de tipos admitidos.

Si deseas utilizar plantillas, anuncia la plantilla como un tipo, con el nombre de la plantilla o su ruta como el valor de type. Por ejemplo, la siguiente configuración importa un plantilla denominada my_vm_template.jinja y la proporciona como un tipo:

imports:
- path: path/to/template/my_vm_template.jinja
  name: my-template.jinja

resources:
- name: my-first-virtual-machine
  type: my-template.jinja

Para obtener más información sobre las plantillas, lee Crear una plantilla básica.

Declarar las propiedades del recurso

Después de anunciar el tipo de recurso, también debes asignar un name al recurso y especificar las propiedades que deseas para tal recurso. Por ejemplo, el siguiente archivo de configuración define una instancia de máquina virtual denominada vm-created-by-deployment-manager y sus propiedades deseadas. Deployment Manager utilizará esta información para crear una instancia de VM que tenga estas propiedades.

# Copyright 2016 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

resources:
- name: vm-created-by-deployment-manager
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: zones/us-central1-a/machineTypes/n1-standard-1
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: projects/debian-cloud/global/images/family/debian-9
    networkInterfaces:
    - network: global/networks/default

Para determinar las properties de un recurso, utiliza la documentación de la API para el recurso:

  • Consulta el formato de la solicitud en el método insert o create para el recurso.
  • Si el URI de solicitud contiene la zona, agrega la zona a las propiedades.
  • Para los arreglos, utiliza la sintaxis de la lista de YAML a fin de enumerar los elementos del arreglo. Por ejemplo, si estás creando una instancia de Compute Engine mediante la API, debes proporcionar un conjunto de discos para adjuntar a la instancia, en el siguiente formato:

    "disks": [
      {
        "type": "PERSISTENT",
        "deviceName": "disk1",
        ...
      },
      {
        "type": "PERSISTENT",
        "deviceName": "disk2",
        ...
      }
    ]
    

    En la configuración de Deployment Manager, agrega estos discos con el uso de la siguiente sintaxis:

    disks:
    - deviceName: disk1
      type: PERSISTENT
      ...
    - deviceName: disk2
      type: PERSISTENT
    

También puedes proporcionar cualquier propiedad que admita escritura de ese recurso. Para determinar si una propiedad admite escritura, utiliza la documentación de referencia de la API para el tipo de recurso. Por ejemplo, la referencia de Compute Engine marca ciertas propiedades que solo son de salida, por lo que no puedes definir estas propiedades en la configuración, dado que son inmutables.

Algunas API requieren un conjunto mínimo de propiedades para crear un recurso. Un disco persistente de Compute Engine, por ejemplo, requiere el nombre de disco, la fuente de imagen, el tamaño del disco, etc., cuando se crea un disco nuevo. Para obtener información sobre un recurso específico, revisa la referencia de API para ese recurso.

Definir las propiedades de la plantilla

Si importas una plantilla para utilizar en la configuración, deberías utilizar la sección properties para definir valores para las propiedades de la plantilla en lugar de las propiedades del recurso. De manera alternativa, si la plantilla no tiene propiedades de la plantilla, puedes omitir la sección properties por completo.

Crear recursos a partir de servicios diferentes de GCP

Por último, un archivo de configuración puede crear recursos a partir de servicios diferentes de GCP. Por ejemplo, el siguiente archivo de configuración crea recursos a partir de Compute Engine y BigQuery:

# Copyright 2016 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

resources:
- name: vm-created-by-deployment-manager
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: zones/us-central1-a/machineTypes/n1-standard-1
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: projects/debian-cloud/global/images/family/debian-9
    networkInterfaces:
    - network: global/networks/default

- name: big-query-dataset
  type: bigquery.v2.dataset
  properties:
    datasetReference:
      datasetId: example_id

Propiedades y tipos de recursos admitidos

Consulta la lista completa de recursos administrados por Google en la documentación Tipos de recursos admitidos.

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Cloud Deployment Manager