Crear una implementación con gcloud o la API

En esta página se describe cómo crear una implementación. Una implementación es una creación de instancias de un conjunto de recursos definidos en una configuración. Proporcionas una configuración válida en una solicitud para crear la implementación. Una implementación puede contener varios recursos en una variedad de servicios de Google Cloud. Cuando creas una implementación, Deployment Manager crea todos los recursos descritos en las API de Google Cloud respectivas.

Antes de comenzar

Crea una implementación

Cuando creas una implementación, creas un recurso de implementación que contiene un conjunto de recursos. Cada recurso se define de manera explícita en una configuración que proporcionas en tu solicitud.

gcloud

Con Google Cloud CLI, usa el comando deployments create:

gcloud deployment-manager deployments create my-first-deployment \
    --config vm.yaml

La marca --config es una ruta relativa a tu archivo de configuración YAML.

De forma predeterminada, si tu configuración incluye recursos que ya están en tu proyecto, la implementación adquiere esos recursos y se los puede administrar mediante ella. Si no deseas adquirir un recurso, debes usar la opción --create-policy, como en el siguiente comando gcloud beta:

gcloud beta deployment-manager deployments create my-first-deployment \
    --config vm.yaml --create-policy CREATE

Para obtener información sobre qué políticas puedes usar cuando creas implementaciones, consulta Establecer la política de creación de recursos.

Si tu implementación se crea correctamente, puedes obtener una descripción de ella.

gcloud deployment-manager deployments describe my-first-deployment

API

En la API, realiza una solicitud insert() con la configuración proporcionada en línea, en el cuerpo de la solicitud:

POST https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments

{
 "name": "example-config-with-templates",
 "target": {
  "config": {
   "content": "resources:\n- name: vm-created-by-cloud-config\n  type: compute.v1.instance\n  properties:\n    zone: us-central1-a\n    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/n1-standard-1\n    disks:\n    - deviceName: boot\n      type: PERSISTENT\n      boot: true\n      autoDelete: true\n      initializeParams:\n        diskName: disk-created-by-cloud-config\n        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20151104\n    networkInterfaces:\n    - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default\n"
  }
 }
}

Si importas plantillas, también debes proporcionarlas como parte del cuerpo de la solicitud. Por ejemplo, la siguiente solicitud a la API tiene un target que importa una plantilla, llamada vm_template.jinja:

POST https://www-www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments

{
 "name": "my-example-config-with-templates-2",
 "target": {
  "config": {
    "content": "imports:\n- path: vm_template.jinja\n\nresources:\n- name: my-vm\n  type: vm_template.jinja"
  },
  "imports": [
   {
    "content": "resources:\n- name: vm-created-by-cloud-config\n  type: compute.v1.instance\n  properties:\n    zone: us-central1-a\n    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/n1-standard-1\n    disks:\n    - deviceName: boot\n      type: PERSISTENT\n      boot: true\n      autoDelete: true\n      initializeParams:\n        diskName: disk-created-by-cloud-config\n        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20151104\n    networkInterfaces:\n    - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default",
    "name": "vm_template.jinja"
   }
  ]
 }
}

Establecer la política de creación de recursos

Cuando creas una implementación nueva, si un recurso que quieres crear ya existe en tu proyecto, la implementación lo adquiere. En esos casos, Deployment Manager no crea un nuevo recurso. Si no quieres adquirir un recurso existente, debes usar la política CREATE para tu implementación.

Puedes usar las siguientes políticas para crear tus recursos:

  • CREATE_OR_ACQUIRE: [Predeterminado] Deployment Manager adquiere recursos que existen en el proyecto o los crea si no existen. A fin de adquirir un recurso, Deployment Manager revisa tu configuración para las propiedades del recurso que intentas crear. Si existe un recurso con las mismas propiedades, Deployment Manager adquiere ese recurso como parte de tu implementación.

    Las propiedades que Deployment Manager revisa dependen del tipo de recurso que estás creando y pueden incluir lo siguiente:

    • El name del recurso
    • El type del recurso
    • El zone o region del recurso, si corresponde

    Las propiedades son parte del URL para la solicitud a la API GET del recurso. Si deseas ver qué propiedades usa Deployment Manager a fin de adquirir un recurso, consulta la documentación de la API para el método GET del recurso. Por ejemplo, en las instancias de Compute Engine, la URL de la solicitud para el método instances.get incluye resourceId (name en tu configuración), zone y project.

  • CREATE: Deployment Manager crea recursos que no existen. Si alguno de los recursos en tu configuración ya existe en el proyecto, la implementación fallará.

  • ACQUIRE: Deployment Manager adquiere recursos que ya existen con los mismos criterios que CREATE_OR_ACQUIRE.

    Usa la política ACQUIRE si ya tienes varios recursos en tu proyecto y quieres administrarlos juntos, como una sola implementación.

    En tu plantilla o configuración, debes proveer las propiedades que se requieren para esos recursos como si los estuvieras creando. Si alguno de los recursos de tu configuración no existe en el proyecto, la implementación fallará.

Enumerar las implementaciones

Consulta una lista de tus implementaciones en la consola de Google Cloud, la API o Google Cloud CLI.

Consola

Ve a la página Implementaciones en la consola de Google Cloud.

gcloud

Con Google Cloud CLI, usa el subcomando deployments list:

gcloud deployment-manager deployments list

API

En la API, realiza una solicitud GET vacía en la colección de implementaciones:

GET https://www.googleapis.com/deploymentmanager/v2beta1/projects/myproject/global/deployments

¿Qué sigue?