Dicas de uso do gcloud compute

Nesta página, você verá dicas que podem ser úteis quando ao usar a ferramenta de linha de comando gcloud para gerenciar os recursos do Compute Engine. Para uma lista completa de todos os comandos e sinalizações gcloud compute disponíveis, use o comando integrado de ajuda (--help), a documentação de referência publicada ou a documentação principal da gcloud.

Antes de começar

Como buscar informações sobre recursos

Há duas maneiras de buscar informações sobre os recursos do Compute Engine: usando o comando list para retornar uma lista de recursos e usando o comando describe para retornar detalhes sobre um recurso específico.

Como buscar recursos com os comandos list

Os comandos list são projetados para retornar uma tabela legível com os dados mais relevantes dos recursos solicitados. Se quiser, é possível filtrar os resultados para retornar uma lista menor com resultados mais relevantes.

Expressão regular para filtragem por nomes
Use a sintaxe RE2 para fazer a correspondência de nomes de recursos, como nomes de instâncias ou discos. Consulte a lista de instâncias do gcloud compute.
Sinalizações do comando
--limit

O número máximo de resultados a serem retornados. Essa sinalização é especialmente útil quando utilizada com a sinalização --sort-by descrita na seção Como buscar recursos com os comandos "describe".

--sort-by SORT_BY

Um campo para fazer a classificação, se aplicável. Para classificar em ordem decrescente, inclua um til ("~") antes do valor.

Como buscar recursos com os comandos describe

Os comandos describe foram desenvolvidos para exibir dados sobre um recurso. Forneça o nome do recurso no comando describe. Se não conseguir se lembrar do nome, execute o comando list para ver uma lista de recursos. Por exemplo, os dois comandos a seguir ilustram um cenário em que é possível listar imagens para encontrar o nome de uma imagem e o projeto associado a ela, assim é possível fornecer essas informações como entradas em 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 resposta padrão aos comandos describe é o formato YAML, mas é possível usar a sinalização --format para optar entre os formatos JSON, YAML e texto. A resposta formatada JSON é útil na análise da resposta e o texto formatado coloca cada propriedade em uma 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://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a",
        "https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-b",
        "https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f"
      ]
    }

Exemplos

Exemplos de comandos list

Ao listar os recursos, você recebe uma tabela de dados resumidos de fácil leitura. Por exemplo, para retornar dados de resumo sobre instâncias no projeto, use o comando instances list:

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

Os resultados dos comandos list podem ser filtrados com expressões regulares incluindo a sinalização --filter com um operador key ~ value. Por exemplo, filtre a lista de instâncias para incluir apenas aquelas com "test" no nome:

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

Para retornar uma lista de operações de zona com um status de DONE e sem um httpStatus de 200, aplique um filtro zone em um comando operations list e grep nos resultados:

gcloud compute operations list --filter="zone:(us-central1-a)" | grep DONE | grep 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 uma lista de discos em us-central1-a, classificados em ordem decrescente 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 ser útil ter o link do URI completo do recurso, como nas solicitações em que você está transmitindo a resposta ao comando list para outro comando ou aplicativo que receba uma lista de links de recursos. Para mostrar os links de recurso de URI completos, use a sinalização --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 resposta ao comando list anterior em um comando que exclui instâncias, use:

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

Exemplos de comandos describe

Especifique uma instância, incluindo a zona, para receber detalhes sobre ela. Por exemplo, para retornar informações sobre a instância chamada "example-instance" na zona "asia-east1-b", use o comando instances describe:

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

Com esse comando, uma resposta YAML é retornada por padrão. Para alterar a resposta para JSON ou texto (uma propriedade por linha), use a sinalização --format. Por exemplo, para retornar a resposta no formato 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 receber 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 em um 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 a seguir recebe as configuraçõ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://compute.googleapis.com/compute/v1/projects/myproject/global/networks/default",
          "networkIP": "10.240.111.51"
        }
       ],
       ...
       "status": "RUNNING"
       ...
    }

Como verificar com qual usuário você tem autorização de acesso

Use o seguinte comando para descobrir com qual conta você tem autorização de acesso:

gcloud auth list
    

Como revogar um token de atualização

Para revogar as credenciais de uma conta na máquina em que você usa o SDK do Cloud, use:

gcloud auth revoke
    

Isso forçará você a usar a reautenticação usando gcloud init.

Se necessário, também revogue a permissão do SDK do Cloud para acessar seus recursos. Se os tokens de atualização estiverem comprometidos, por exemplo, talvez isso seja necessário. Para revogar a permissão do SDK do Cloud:

  1. Faça login na página Conta do Google.
  2. Clique em Segurança e, em seguida, em Ver tudo na seção Permissões da conta.
  3. Selecione SDK do Google Cloud e clique em Revogar acesso.

Como reinicializar uma instância

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

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

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