Crear una configuración básica

En esta página se describe cómo crear una configuración que se pueda usar para crear una implementación. Para obtener más información sobre las implementaciones, consulta el artículo Crear una implementación.

Un archivo de configuración define todos los Google Cloud recursos que componen una implementación. Para crear un despliegue, debes tener un archivo de configuración. Los archivos de configuración deben escribirse con la sintaxis YAML.

Antes de empezar

Estructura del archivo de configuración

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

#  imported templates, if applicable
imports:
  #  path relative to the configuration file
- path: path/to/template.jinja
  name: my-template
- path: path/to/another/template.py
  name: another-template

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

Cada una de las secciones define una parte diferente de la implementación:

  • La sección imports es una lista de archivos de plantilla que usará la configuración. Deployment Manager expande de forma recursiva las plantillas importadas para formar la configuración final.

  • La sección resources es una lista de los recursos que componen este despliegue. Un recurso puede ser:

También puedes incluir otras secciones opcionales, como las secciones outputs y metadata. La sección outputs te permite exponer datos de tus plantillas y configuraciones como salidas para que otras plantillas de la misma implementación los usen o como salidas para tus usuarios finales, mientras que la sección metadata te permite usar otras funciones, como establecer dependencias explícitas entre recursos.

Como mínimo, una configuración siempre debe declarar la sección resources, seguida de una lista de recursos. El resto de las secciones son opcionales.

Declarar un tipo de recurso

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

Los tipos base gestionados por Google son tipos que se resuelven en recursos de Google Cloud . Por ejemplo, una instancia de Cloud SQL o un segmento de Cloud Storage es un tipo base gestionado por Google. Puedes declarar estos tipos con 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

En el caso de una base de datos de BigQuery, el tipo puede ser:

type: bigquery.v2.dataset

Para ver una lista de todos los tipos admitidos, usa el siguiente comando:

gcloud deployment-manager types list

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

Si usas un proveedor de tipos compuesto, declara el tipo de la siguiente manera:

# Composite type

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

En el caso de 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 proveedores de tipos gestionados por Google (beta). Para ver una lista de proveedores de tipos, consulta Proveedores de tipos admitidos. Google Cloud

Si quiere usar plantillas, declare la plantilla como un tipo, con el nombre o la ruta de la plantilla como valor de type. Por ejemplo, la siguiente configuración importa una plantilla llamada my_vm_template.jinja y la proporciona como 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, consulta el artículo Crear una plantilla básica.

Declarar propiedades de recursos

Después de declarar el tipo de recurso, también debe asignarle un name y especificar las propiedades que quiera para el recurso. Por ejemplo, el siguiente archivo de configuración define una instancia de máquina virtual llamada vm-created-by-deployment-manager y sus propiedades deseadas. Deployment Manager usa 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-11
    networkInterfaces:
    - network: global/networks/default

Para determinar el properties de un recurso, consulta la documentación de la API del recurso:

  • Consulta el formato de la solicitud en el método insert o create del recurso.
  • Si el URI de solicitud contiene la zona, añádela a las propiedades.
  • En el caso de las matrices, utilice la sintaxis de lista de YAML para enumerar los elementos de la matriz. Por ejemplo, si creas una instancia de Compute Engine con la API, debes proporcionar una matriz de discos que se adjuntarán a la instancia con el siguiente formato:

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

    En la configuración de Deployment Manager, añade estos discos con la siguiente sintaxis:

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

También puede proporcionar cualquier propiedad de escritura de ese recurso. Para determinar si una propiedad se puede escribir, consulta la documentación de referencia de la API del tipo de recurso. Por ejemplo, la referencia de Compute Engine marca determinadas propiedades que son de solo salida, por lo que no puedes definirlas en tu configuración, ya que son inmutables.

Algunas APIs requieren un conjunto mínimo de propiedades para crear un recurso. Por ejemplo, un disco persistente de Compute Engine requiere el nombre del disco, el origen de la imagen, el tamaño del disco, etc., al crear un disco nuevo. Para obtener información sobre un recurso concreto, consulta la referencia de la API de ese recurso.

Definir propiedades de plantillas

Si importa una plantilla para usarla en su configuración, debe usar la sección properties para definir los valores de las propiedades de la plantilla en lugar de las propiedades del recurso. Si la plantilla no tiene propiedades de plantilla, puedes omitir la sección properties.

Crear recursos a partir de diferentes Google Cloud servicios

Por último, un archivo de configuración puede crear recursos de diferentes Google Cloud servicios. Por ejemplo, el siguiente archivo de configuración crea recursos 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-11
    networkInterfaces:
    - network: global/networks/default

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

Tipos de recursos y propiedades admitidos

Consulta la lista completa de recursos gestionados por Google admitidos en la documentación sobre tipos de recursos admitidos.

Siguientes pasos