Como criar uma implantação usando gcloud ou a API

Nesta página você aprende como criar uma implantação. Implantação é uma instanciação de um conjunto de recursos definidos em uma configuração. Você fornece uma configuração válida na solicitação para criar a implantação. Uma implantação pode conter vários recursos em uma variedade de serviços do Google Cloud. Quando você cria uma implantação, o Deployment Manager cria todos os recursos descritos nas respectivas APIs do Google Cloud.

Antes de começar

Como criar uma implantação

Ao criar uma implantação, você cria um recurso de implantação que contém uma coleção de recursos. Todo recurso é definido explicitamente em uma configuração fornecida na solicitação.

gcloud

Com a Google Cloud CLI, use o comando deployments create:

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

A sinalização --config é um caminho relativo para seu arquivo de configuração YAML.

Por padrão, se sua configuração incluir recursos que já estão em seu projeto, esses recursos serão adquiridos pela implantação e poderão ser gerenciados usando a implantação. Se não quiser adquirir um recurso, você precisa usar a opção --create-policy, como no seguinte comando gcloud beta:

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

Para ver informações sobre quais políticas você pode usar ao criar implantações, consulte Como definir a política para criar recursos.

Caso a implantação seja criada com êxito, você verá uma descrição da implantação:

gcloud deployment-manager deployments describe my-first-deployment

API

Na API, faça uma solicitação insert() com a configuração fornecida in-line no corpo da solicitação:

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"
  }
 }
}

Caso importe modelos, você também precisa fornecer esses modelos como parte do corpo da solicitação. Por exemplo, a seguinte solicitação de API tem um target que importa um modelo, denominado 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"
   }
  ]
 }
}

Como definir a política para criar recursos

Quando você cria uma implantação, se um recurso a ser criado já existir em seu projeto, ele será adquirido pela implantação. Nesses casos, o Deployment Manager não criará um novo recurso. Se você não quiser adquirir um recurso existente, deverá usar a política CREATE em sua implantação.

Você pode usar as seguintes políticas para criar seus recursos:

  • CREATE_OR_ACQUIRE - [Padrão] o Deployment Manager adquire recursos que existem no projeto ou cria recursos caso eles não existam. Para adquirir um recurso, o Deployment Manager verifica sua configuração para as propriedades do recurso que você está tentando criar. Se houver um recurso com as mesmas propriedades, o Deployment Manager adquire esse recurso como parte da implantação.

    As propriedades verificadas pelo Deployment Manager dependem do tipo de recurso que você está criando e podem incluir:

    • O name do recurso
    • O type do recurso
    • O zone ou region do recurso, se aplicável

    As propriedades fazem parte do URL da solicitação da API GET para o recurso. Para saber quais propriedades o Deployment Manager usa para adquirir um recurso, consulte a documentação da API para o método GET do recurso. Por exemplo, para instâncias do Compute Engine, o URL de solicitação para o método instances.get inclui o resourceId (name na sua configuração), zone e project.

  • CREATE: o Deployment Manager cria recursos que não existem. Se algum dos recursos em sua configuração já existir no projeto, a implantação falhará.

  • ACQUIRE: o Deployment Manager adquire recursos que já existem usando os mesmos critérios que CREATE_OR_ACQUIRE.

    Use a política ACQUIRE se você já tiver vários recursos em seu projeto e quiser gerenciá-los juntos, como uma única implantação.

    Em seu modelo ou sua configuração, você precisa informar as propriedades necessárias para esses recursos como se eles estivessem sendo criados. Se algum dos recursos em sua configuração não existir no projeto, a implantação falhará.

Listagem das implantações

Veja uma lista das suas implantações no console do Google Cloud, na API ou na Google Cloud CLI.

Console

Acesse a página Implantações no console do Google Cloud.

gcloud

Com a Google Cloud CLI, use o subcomando deployments list:

gcloud deployment-manager deployments list

API

Na API, faça uma solicitação GET vazia para a coleção Deployments:

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

A seguir