Dicas de uso do gcloud compute


Esta página contém dicas que podem ser úteis quando você usa 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 da gcloud compute disponíveis, use o comando integrado "help" (--help), a documentação de referência publicada ou a documentação principal da gcloud.

Antes de começar

  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine selecionando uma das seguintes opções:
    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.

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 corresponder aos nomes de recursos (por exemplo, nomes de instâncias ou discos). Consulte o comando gcloud compute instances list.
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 a servir de classificação, se aplicável. Para classificar em ordem decrescente, adicione um til ("~") antes do valor. Essa sinalização interage com outras sinalizações aplicadas nesta ordem: --flatten,--sort-by, --filter, --limit.

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 mostrar 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 saída padrão dos comandos describe é o formato YAML, mas é possível usar a sinalização --format para optar entre os formatos de saída JSON, YAML e texto. A saída formatada JSON é útil na análise da saída 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://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

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

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 e2-standard-2 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 -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 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 saída de um 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 saída de 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 saída YAML é retornada por padrão. Para alterar a saída para JSON ou texto (uma propriedade por linha), use a sinalização --format. Por exemplo, para retornar a saída 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:

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://www.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 a CLI do Google 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 da CLI gcloud para acessar os recursos. Se os tokens de atualização estiverem comprometidos, talvez isso seja necessário. Para revogar a permissão da CLI gcloud:

  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 Google Cloud SDK 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 saber mais sobre as implicações de uma redefinição, leia a documentação Redefinir uma instância.