Este documento descreve como configurar apps para se conectar de maneira programática entre duas instâncias de máquina virtual (VM) usando login SSH e SO. Ativar apps para usar o SSH pode ser útil para automatizar processos de gerenciamento de sistemas.
Todas as amostras de código usadas neste guia estão hospedadas na página do GoogleCloudPlatform/python-docs-samples do GitHub.
Antes de começar
- Configure o SSH para uma conta de serviço.
- Configure o Login do SO no seu projeto ou em uma VM executada como uma conta de serviço.
-
Configure a autenticação, caso ainda não tenha feito isso.
Com isso, você confirma sua identidade para acesso a Google Cloud serviços e APIs do. Para executar
código ou amostras de um ambiente de desenvolvimento local, faça a autenticação no
Compute Engine com uma destas opções:
Selecione a guia para como planeja usar as amostras nesta página:
Console
Quando você usa o Google Cloud console para acessar Google Cloud serviços e APIs, não é necessário configurar a autenticação.
gcloud
-
Instale a Google Cloud CLI. Após a instalação, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud initAo usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
- Defina uma região e uma zona padrão.
Configurar um app SSH
Configure seu app para gerenciar chaves SSH e iniciar conexões SSH com VMs do Compute Engine. De modo geral, o app precisa fazer o seguinte:
- Importe a biblioteca de Login do SO do Google para criar bibliotecas de cliente, o que permite a autenticação com a API Login do SO.
- Inicialize o objeto da API OS Login para permitir que o app use o Login do SO.
- Implemente um método
create_ssh_key()que gere uma chave SSH para a conta de serviço da VM e adicione a chave pública à conta de serviço. - Chame o
get_login_profile()método da API do Login do SO para conseguir o nome de usuário POSIX usado pela conta de serviço. - Implemente um método
run_ssh()para executar um comando SSH remoto. - Remova os arquivos de chave SSH temporários.
App SSH de amostra
O app de exemplo oslogin_service_account_ssh.py demonstra uma possível implementação de um app SSH. Neste exemplo, o aplicativo usa o método run_ssh() para executar um comando em uma instância remota e retornar a resposta ao comando.
Executar o app SSH
Depois de criar um app que usa SSH, é possível executá-lo seguindo um processo semelhante ao exemplo a seguir, que instala e executa o app de amostra oslogin_service_account_ssh.py. As bibliotecas instaladas podem ser diferentes,
dependendo da linguagem de programação que o app usar.
Como alternativa, você pode criar um app que importa oslogin_service_account_ssh.py e
o executa diretamente.
Conecte-se à VM que hospeda o app SSH.
Na VM, instale
pipe a biblioteca de cliente do Python 3:sudo apt update && sudo apt install python3-pip -y && pip install --upgrade google-cloud-os-login requests
Opcional: se você estiver usando o app de exemplo
oslogin_service_account_ssh.py, faça o download em GoogleCloudPlatform/python-docs-samples:curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/python-docs-samples/master/compute/oslogin/oslogin_service_account_ssh.py
Execute o app SSH. O app de exemplo usa
argparsepara aceitar variáveis da linha de comando. Neste exemplo, instrua o app a instalar e executarcowsayem outra VM no projeto.python3 service_account_ssh.py \ --cmd 'sudo apt install cowsay -y && cowsay "It works!"' \ --project=PROJECT_ID --instance=VM_NAME --zone=ZONE
Substitua:
PROJECT_ID: o ID do projeto da VM a que o aplicativo está se conectando.VM_NAME: o nome da VM a que o app está se conectando.ZONE: a zona da VM a que o aplicativo está se conectando.
O resultado será assim:
⋮ ___________ It works! ----------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
A seguir
- Faça o download e confira o exemplo de código completo. A amostra completa contém um pequeno exemplo de como usar todos esses métodos juntos. Faça o download desse exemplo, altere-o e execute-o de acordo com as suas necessidades.
- Saiba mais sobre como as conexões SSH funcionam no Compute Engine, incluindo configuração e armazenamento de chaves SSH.