Skip to content

Arquivos ansible e roteiro para criação de um host KVM no Google Cloud Compute Engine para fins de laboratório.

License

Notifications You must be signed in to change notification settings

lucaslellis/gcp_laboratorio_kvm

Repository files navigation

Pré-requisitos

  • Sistema Operacional suportado pelo Ansible (Linux ou Mac OS - no documento é usado o Ubuntu 20.04 via Windows Subsystem for Linux - WSL)
  • Conta no Google Cloud e projeto criado no Compute Engine - https://console.cloud.google.com
  • Conta na Cloudflare para DDNS - https://cloudflare.com/ - Opcional

Google Cloud SDK

Instalação

sudo apt-get install apt-transport-https ca-certificates gnupg
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -

sudo apt-get update && sudo apt-get install google-cloud-sdk git

Configuração

gcloud init

Adicionar chave privada ao projeto

# Caso não tenha uma chave já criada
ssh-keygen -t rsa

# Criar arquivo com as chaves já existentes
gcloud compute project-info describe | grep ssh-rsa > ~/google-cloud-ssh.txt

# Editar o arquivo e incluir no fim a chave desejada
echo `whoami`':'`cat ~/.ssh/id_rsa.pub` >> ~/google-cloud-ssh.txt

# Importar o arquivo criado
gcloud compute project-info add-metadata --metadata-from-file ssh-keys="${HOME}/google-cloud-ssh.txt"

Cloudflare (Opcional)

  • Caso você tenha um domínio e uma conta na Cloudflare, é possível gerar um token de API, usando o template "Edit Zone DNS", a fim de fazer a atualização do registro de DNS da máquina para o IP Externo.

    As variáveis abaixo devem ser definidas no arquivo vars.yml:

    cloudflare_email: <seu email cadastrado na cloudflare>
    cloudflare_token: <API TOKEN>
    cloudflare_zone: <exemplo: whatever.com>
    cloudflare_record: <exemplo: vm01.gcp.whatever.com>
    

Ansible

Instalação

sudo apt install software-properties-common
sudo apt update
sudo add-apt-repository ppa:ansible/ansible
sudo apt update
sudo apt install -y ansible python3-requests python3-google-auth openssh-client

Criar conta de serviço no Google Cloud Engine

  • Menu Principal -> IAM & Admin -> Service Accounts

  • Create Service Account

  • Criar a conta de acordo com as imagens abaixo

  • Clicar na conta criada e ir em Keys -> Add Key -> Create New Key

  • O arquivo .json deve ser baixado e armazenado em local seguro

Configuração

Preparar vim para arquivos YAML

cat > ~/.vimrc <<'ENDEND'

filetype indent off
set tabstop=2 shiftwidth=2 expandtab
set cursorcolumn cursorline

ENDEND

Clonar repositório Git

# Criar pasta do projeto

cd ~
git clone https://github.com/lucaslellis/gcp_laboratorio_kvm.git

Preencher arquivos de variáveis (consultar arquivos de exemplo disponíveis na pasta)

cd ~/gcp_laboratorio_kvm

cp inventory.gcp.yml.template inventory.gcp.yml
cp vars.yml.template vars.yml

vi inventory.gcp.yml

vi vars.yml

Verificar configurações

# Verificar que o arquivo de configuração correto está sendo usado:

ansible --version | grep config

# Exemplo:
lucas@<...>:~/gcp_laboratorio_kvm$ ansible --version | grep config
config file = /home/lucas/gcp_laboratorio_kvm/ansible.cfg
configured module search path = ['/home/lucas/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
lucas@<...>:~/gcp_laboratorio_kvm$ ansible --version | grep 'config file'
  config file = /home/lucas/gcp_laboratorio_kvm/ansible.cfg
lucas@<...>:~/gcp_laboratorio_kvm$ ansible-config dump --changed-only
INVENTORY_ENABLED(/home/lucas/gcp_laboratorio_kvm/ansible.cfg) = ['gcp_compute']
# Verificar inventário (a senha solicitada será a mesma definida na criptografia):
 
ansible-inventory --ask-vault-pass inventory.gcp.yml --list

Criação da máquina para o KVM

ansible-playbook --ask-vault-pass -i inventory.gcp.yml vm01.yml

Conectar na máquina criada

gcloud compute ssh vm01 -- -L5901:localhost:5901

A opção "-- -L5901:localhost:5901" faz o tunelamento da porta do VNC.

Definir senha do VNC e iniciar serviço

vncpasswd

sudo systemctl start vncserver@:1.service

Conectar no VNC para validar configuração

Resultado esperado:

Caso apareçam pop-ups de warning ou erro "XFCE Policy Kit", favor ignorar.

Validar instalação do Vagrant

cd ~/vagrant/linux00
vagrant up

# Aguardar subida da máquina

vagrant ssh

Comandos para ligar e desligar a máquina

# Desligar
gcloud compute instances stop vm01

# Ligar
gcloud compute instances start vm01

# Colocar para hibernar
gcloud compute instances suspend vm01

# Ligar novamente a partir da hibernacao
gcloud compute instances resume vm01

Destruir recursos criados (caso não vá mais usar)

ansible-playbook --ask-vault-pass -i inventory.gcp.yml vm01-destroy.yml

About

Arquivos ansible e roteiro para criação de um host KVM no Google Cloud Compute Engine para fins de laboratório.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published