Como realizar o script de comandos da CLI gcloud

Além de executar comandos da Google Cloud CLI na linha de comando, é possível executá-los usando scripts ou outras automações, por exemplo, ao usar o Jenkins para fins de automação de Google Cloud tarefas.

O SDK Google Cloud vem com várias ferramentas, como filtragem, formatação e a flag --quiet, que permitem processar a saída e automatizar tarefas de maneira eficaz.

Noções básicas de scripts com o SDK Google Cloud

Para um guia detalhado sobre como criar scripts básicos com a CLI gcloud, consulte esta postagem do blog: Scripting with gcloud: a beginner’s guide to automating Google Cloud tasks (em inglês).

Autorização

Ao criar scripts com o SDK Google Cloud, é necessário considerar métodos de autorização. O SDK Google Cloud oferece duas opções:

  • Autorização da conta de usuário
  • autorização da conta de serviço

É recomendável usar a autorização da conta de usuário se você estiver executando um script ou outra automação em uma única máquina.

Para autorizar o acesso e executar outras etapas comuns de configuração do SDK Google Cloud:

gcloud init

A autorização da conta de serviço será recomendada se você estiver implantando um script ou outra automação entre máquinas em um ambiente de produção. Também é o método de autorização recomendado se você estiver executando comandos da CLI gcloud em uma instância de máquina virtual do Compute Engine em que todos os usuários tenham acesso ao root.

Para usar a autorização de conta de serviço, use uma conta de serviço atual ou crie uma nova na página "Contas de serviço":

Acesse a página Contas de serviço

Para criar e fazer o download da chave privada associada como um arquivo de chave formatado em JSON, escolha Gerenciar chaves no menu de ações da conta de serviço.

Para executar a autorização, execute gcloud auth activate-service-account:

gcloud auth activate-service-account --key-file [KEY_FILE]

É possível usar o SSH em sua instância de VM usando gcloud compute ssh, que cuida da autenticação. Os arquivos de configuração SSH podem ser configurados usando gcloud compute config-ssh.

Para instruções detalhadas sobre como autorizar ferramentas do SDK Google Cloud, consulte Autenticar para a CLI gcloud.

Como desativar prompts

Alguns comandos da CLI gcloud são interativos, solicitando aos usuários a confirmação de uma operação ou pedindo mais informações para um comando inserido.

Na maioria dos casos, isso não é conveniente para a execução de comandos em um script ou outra automação. É possível desativar os prompts dos comandos da CLI gcloud definindo a disable_prompts propriedade na sua configuração como True ou usando a flag global --quiet ou -q. A maioria dos comandos interativos tem valores padrão quando a confirmação extra ou a entrada é obrigatória. Caso os prompts estejam desativados, os valores padrão são usados.

Por exemplo:

gcloud debug targets list --quiet

Como filtrar e formatar uma saída

Para criar scripts com a CLI gcloud, é importante ter uma saída previsível. É aí que as flags --filter e --format ajudam. Elas garantem que, quando você executa um comando usando a CLI gcloud, produz saída que adere às suas especificações de formato (como json, yaml, csv e texto) e filtro (nomes de VM prefixados com "teste", ano de criação após 2015, etc.).

Se você quiser fazer um tutorial interativo sobre como usar as flags de filtro e formato, inicie o tutorial usando o botão a seguir:

Abrir no Cloud Shell

Os exemplos a seguir mostram usos comuns de formatação e filtragem com comandos da CLI gcloud:

Liste instâncias criadas na zona us-central1-a:

gcloud compute instances list --filter="zone:us-central1-a"

Lista no formato JSON os projetos em que os rótulos correspondem a valores específicos. Por exemplo, label.env é "test" e label.version é "alpha":

gcloud projects list --format="json" \
  --filter="labels.env=test AND labels.version=alpha"

Liste projetos com data e hora de criação especificadas no fuso horário local:

gcloud projects list \
  --format="table(name, project_id, createTime.date(tz=LOCAL))"

Liste projetos que foram criados após uma data específica no formato da tabela:

gcloud projects list \
  --format="table(projectNumber,projectId,createTime)" \
  --filter="createTime.date('%Y-%m-%d', Z)='2016-05-11'"

Observe que, no último exemplo, foi usada uma projeção na chave. O filtro é aplicado na chave createTime depois que a formatação de data é definida.

Liste uma tabela aninhada de cotas de uma região:

gcloud compute regions describe us-central1 \
  --format="table(quotas:format='table(metric,limit,usage)')"

Imprima uma lista nivelada de cotas globais no formato CSV:

gcloud compute project-info describe --flatten='quotas[]' \
  --format='csv(quotas.metric,quotas.limit,quotas.usage)'

Liste recursos de instância de computação com decorações e títulos de caixas, ordenadas por nome no formato da tabela:

gcloud compute instances list \
  --format='table[box,title=Instances](name:sort=1,zone:label=zone,status)'

Liste o endereço de e-mail do usuário autenticado do projeto:

gcloud info --format='value(config.account)'

Para exemplos mais detalhados das capacidades de configuração de saída integradas às flags