Sugestões de utilização do gcloud compute

Esta página contém sugestões que podem ser úteis quando usa a gcloudferramenta de linha de comandos para gerir os recursos do Compute Engine. Para ver uma lista completa de todos os sinalizadores e comandos gcloud compute disponíveis, pode usar a ajuda de comandos integrada (--help), a documentação de referência publicada ou a documentação principal do gcloud.

Antes de começar

  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Trusted Cloud by S3NS serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:
    1. Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init
    2. Set a default region and zone.

A obter informações sobre recursos

Pode obter informações sobre os recursos do Compute Engine de duas formas: usando o comando list para devolver uma lista de recursos e usando o comando describe para devolver detalhes sobre um recurso específico.

Obter recursos com comandos list

Os comandos list foram concebidos para devolver uma tabela legível dos dados mais relevantes para os recursos pedidos. Opcionalmente, pode filtrar os resultados para devolver uma lista mais curta com resultados mais relevantes.

Filtragem de expressões regulares para nomes
Pode usar a sintaxe RE2 para fazer corresponder nomes de recursos (por exemplo, nomes de instâncias ou discos). Consulte o comando gcloud compute instances list.
Sinalizadores de comandos
--limit

O número máximo de resultados a devolver. Esta flag é particularmente útil quando usada com a flag --sort-by, conforme descrito na secção Obter recursos com comandos describe.

--sort-by SORT_BY

Um campo pelo qual ordenar, se aplicável. Para fazer uma ordenação descendente, adicione um til ("~") ao valor. Esta flag interage com outras flags que são aplicadas nesta ordem: --flatten,--sort-by, --filter, --limit.

Obter recursos com comandos describe

Os comandos describe foram concebidos para apresentar dados sobre um recurso. Tem de indicar o nome do recurso no comando describe. Se não se lembrar do nome do recurso, pode executar um comando list para obter uma lista de recursos. Por exemplo, os dois comandos seguintes ilustram um cenário em que pode listar imagens para obter o nome de uma imagem e o respetivo projeto associado, de modo a poder fornecê-los como entradas para um comando describe:

gcloud compute images list
NAME                                PROJECT        FAMILY     DEPRECATED STATUS
...
centos-7-v20170620                  centos-cloud   centos-7              READY
...
debian-9-stretch-v20170619          debian-cloud   debian-9              READY
...
gcloud compute images describe debian-9-stretch-v20170619 --project debian-cloud

A saída predefinida dos comandos describe é o formato YAML, mas pode usar a flag --format para escolher entre os formatos de saída JSON, YAML e de texto. A saída formatada em JSON pode ser útil se estiver a analisar a saída, enquanto a saída formatada em texto coloca cada propriedade numa linha separada.

gcloud compute regions describe us-central1 --format json
{
  "creationTimestamp": "2013-09-06T10:36:54.847-07:00",
  "description": "us-central1",
  "id": "6837843067389011605",
  "kind": "compute#region",
  "name": "us-central1",
  ...
  "status": "UP",
  "zones": [
    "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a",
    "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-b",
    "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f"
  ]
}

Exemplos

Exemplos de comandos list

Quando lista recursos, recebe uma tabela de fácil leitura com dados de resumo. Por exemplo, para devolver dados de resumo sobre instâncias no seu projeto, use o comando instances list:

gcloud compute instances list
NAME               ZONE          MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
example-instance   asia-east1-b  e2-standard-2 10.240.95.199  107.167.182.44  RUNNING
example-instance2  us-central1-a e2-standard-2 10.240.173.254 23.251.148.121  RUNNING
test-instance      us-central1-a e2-standard-2 10.240.118.207 23.251.153.172  RUNNING

Pode filtrar os resultados dos comandos list com expressões regulares incluindo a flag --filter com um operador key ~ value. Por exemplo, filtre a lista de instâncias para incluir apenas as instâncias com "test" no nome da instância:

gcloud compute instances list --filter="name ~ .*test.*"
NAME           ZONE          MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
test-instance  us-central1-a e2-standard-2 10.240.118.207 23.251.153.172  RUNNING

Para devolver uma lista de operações de zonas que tenham um status de DONE e não tenham um httpStatus de 200, aplique um filtro zone num comando operations list e, de seguida, grep os resultados:

gcloud compute operations list --filter="zone:(us-central1-a)" | grep DONE | grep -v 200
NAME                                                    HTTP_STATUS TYPE   TARGET                               STATUS
operation-1397752585735-4f73fa25b4b58-f0920fd5-254d709f 400         delete us-central1-a/disks/example-instance DONE
operation-1398357613036-4f7cc80cb41e0-765bcba6-34bbd040 409         insert us-central1-a/instances/i-1          DONE
operation-1398615481237-4f8088aefbe08-cc300dfa-2ce113cf 409         insert us-central1-a/instances/i-2          DONE

Para obter uma lista de discos em us-central1-a, ordenada por ordem descendente por nome (--sort-by ~NAME), use um comando disks list:

gcloud compute disks list --sort-by ~NAME --filter="zone:(us-central1-a)"

Em alguns cenários, pode querer ter o link URI completo para o recurso, como pedidos em que está a transmitir o resultado de um comando para outro comando ou aplicação que recebe uma lista de links de recursos.list Para mostrar links de recursos URI completos, use o sinalizador --uri com um comando list.

gcloud compute instances list --uri --filter="name~'^example-.*'"
https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance1
https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance2

Para usar a saída do comando list anterior num comando que elimina instâncias, use:

gcloud compute instances delete $(gcloud compute instances list --uri --filter="name~'^example-.*'")

Exemplos de comandos describe

Para obter detalhes sobre apenas uma instância, especifique a instância, incluindo a zona. Por exemplo, para devolver informações sobre a instância denominada "example-instance" na zona "asia-east1-b", pode usar o comando instances describe:

gcloud compute instances describe example-instance --zone asia-east1-b

Por predefinição, devolve a saída YAML. Para alterar a saída para JSON ou texto (uma propriedade por linha), use a flag --format. Por exemplo, para devolver a saída de texto para a mesma instância, use:

gcloud compute instances describe example-instance --zone asia-east1-b --format text
---
canIpForward:                                False
creationTimestamp:                           2014-04-19T06:43:04.087-07:00
disks[0].autoDelete:                         False
disks[0].boot:                               True
disks[0].deviceName:                         example-instance
...

Para obter detalhes sobre uma operação específica, use o comando operations list para encontrar o URI totalmente qualificado da operação:

gcloud compute operations list --filter="zone:(us-central1-a)"
NAME                                                    TYPE   TARGET                                      HTTP_STATUS STATUS
operation-1406155165815-4fee4032850d9-7b78077c-a170c5c0 delete us-central1-a/instances/example-instance    200         DONE
operation-1406155180632-4fee4040a67c1-bf581ed8-ab5af2b8 delete us-central1-a/instances/example-instance-2  200         DONE
...

Em seguida, use o URI num comando operations describe:

gcloud compute operations describe \
operation-1406155165815-4fee4032850d9-7b78077c-a170c5c0 --zone us-central1-a
endTime: '2014-07-23T15:40:02.463-07:00'
id: '31755455923038965'
insertTime: '2014-07-23T15:39:25.910-07:00'
kind: compute#operation
name: operation-1406155165815-4fee4032850d9-7b78077c-a170c5c0
operationType: delete
progress: 100
...

O comando seguinte obtém as definições da instância no formato JSON (--format json).

gcloud compute instances describe example-instance \
    --zone us-central1-a
    --format json
{
   ...
   "name": "example-instance",
   "networkInterfaces": [
    {
      "accessConfigs": [
        {
          "kind": "compute#accessConfig",
          "name": "external-nat",
          "natIP": "107.167.187.66",
          "type": "ONE_TO_ONE_NAT"
        }
      ],
      "name": "nic0",
      "network": "https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default",
      "networkIP": "10.240.111.51"
    }
   ],
   ...
   "status": "RUNNING"
   ...
}

Verificar como utilizador tem autorização

Use o seguinte comando para saber a conta com a qual tem autorização:

gcloud auth list

Revogar um token de atualização

Para revogar as credenciais de uma conta na máquina onde está a usar a CLI Google Cloud, use:

gcloud auth revoke

Isto obriga-o a voltar a autenticar-se através de gcloud init.

Também pode revogar a autorização da CLI gcloud para aceder aos seus recursos. Pode fazê-lo se, por exemplo, os seus tokens de atualização forem comprometidos. Para revogar a autorização para a CLI gcloud:

  1. Inicie sessão na página da sua Conta Google.
  2. Clique em Segurança e, de seguida, em Ver tudo na secção Autorizações da conta.
  3. Selecione SDK do Google Cloud e clique em Revogar acesso.

Reiniciar uma instância

Para repor uma instância denominada "example-instance" na zona "us-central1-a", use o comando instances reset:

gcloud compute instances reset example-instance --zone us-central1-a

Para obter informações sobre as implicações de uma reposição, leia a documentação Reponha uma instância.