Criar uma implementação através do gcloud ou da API

Esta página descreve como criar uma implementação. Uma implementação é uma instanciação de um conjunto de recursos definidos numa configuração. Fornece uma configuração válida no pedido de criação da implementação. Uma implementação pode conter vários recursos, em vários Google Cloud serviços. Quando cria uma implementação, o Deployment Manager cria todos os recursos descritos nas APIs respetivas. Google Cloud

Antes de começar

Criar uma implementação

Quando cria uma implementação, está a criar um recurso de implementação que contém uma coleção de recursos. Cada recurso é definido explicitamente numa configuração que fornece no seu pedido.

gcloud

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

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

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

Por predefinição, se a sua configuração incluir recursos que já se encontram no seu projeto, esses recursos são adquiridos pela implementação e podem ser geridos através da implementação. Se não quiser adquirir um recurso, tem de 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 as políticas que pode usar quando cria implementações, consulte o artigo Definir a política para criar recursos.

Se a implementação for criada com êxito, pode obter uma descrição da implementação:

gcloud deployment-manager deployments describe my-first-deployment

API

Na API, faça um pedido insert() com a configuração fornecida inline, no corpo do pedido:

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

Se importar modelos, também tem de fornecer esses modelos como parte do corpo do pedido. Por exemplo, o seguinte pedido de API tem um target que importa um modelo com o nome 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"
   }
  ]
 }
}

Definir a política para a criação de recursos

Quando cria uma nova implementação, se um recurso que quer criar já existir no seu projeto, é adquirido pela implementação. Nestes casos, o Deployment Manager não cria um novo recurso. Se não quiser adquirir um recurso existente, tem de usar a política CREATE para a sua implementação.

Pode usar as seguintes políticas para criar os seus recursos:

  • CREATE_OR_ACQUIRE - [Predefinição] O Deployment Manager adquire recursos que existem no projeto ou cria recursos se não existirem. Para adquirir um recurso, o Deployment Manager verifica a sua configuração para as propriedades do recurso que está a tentar criar. Se existir um recurso com as mesmas propriedades, o Deployment Manager adquire esse recurso como parte da sua implementação.

    As propriedades que o Deployment Manager verifica dependem do tipo de recurso que está a criar e podem incluir:

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

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

  • CREATE - O Deployment Manager cria recursos que não existem. Se algum dos recursos na sua configuração já existir no projeto, a implementação falha.

  • ACQUIRE - O Deployment Manager adquire recursos já existentes, usando os mesmos critérios que CREATE_OR_ACQUIRE.

    Use a política ACQUIRE se já tiver vários recursos no seu projeto e quiser geri-los em conjunto como uma única implementação.

    No modelo ou na configuração, tem de fornecer as propriedades necessárias para estes recursos como se os estivesse a criar. Se algum dos recursos na sua configuração não existir no projeto, a implementação falha.

Apresentar as suas implementações

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

Consola

Aceda à página Implementações na Google Cloud consola.

gcloud

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

gcloud deployment-manager deployments list

API

Na API, faça um pedido GET vazio à coleção Deployments:

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

O que se segue?