Por onde começar com Ansible?
Ansible é uma ferramenta muito conhecida no mundo DevOps, principalmente por conta do conceito de IaC (Infrastructure as Code).
Esse conceito é muito interessante, pois apenas com um script, é possível configurar diversas máquinas de apenas uma só vez.
Por conta disso, resolvi criar um pequeno projeto para mostrar esse conceito em prática! Nesse projeto, iremos instalar o Docker e subiremos um container no nosso host que chamaremos de "target1"
Para iniciarmos, precisamos utilizar 2 VMs (Máquinas virtuais) ou a máquina host e uma segunda máquina para teste. Por conta disso, a máquina principal, que será o nosso controller , será instalado o Ansible
Para instalar o Ansible, usaremos os comandos no nosso ansible-controller:
sudo yum install epel-releasesudo yum install ansible
O primeiro comando será usado para encontrar o repositório do Ansible. Isso ocorre porque estamos usando como sistema operacional do nosso projeto, o CentOs.
Após instalado o Ansible, faremos um teste, se está funcionando a conexão com o target1. Assim, usamos o ping para receber o resultado e o arquivo inventory.txt para passarmos o host, e senha da nossa VM ansible-target1
ansible target1 -m ping -i inventory.txt
Como resultado, podemos observar o resultado:
Agora, iremos criar o nosso Playbook, onde terão os passos que serão executadas na VM target1
Um outro ponto, como iremos precisar instalar o Docker na nossa VM, precisaremos passar um parâmetro no arquivo anterior, inventory.txt, para utilizarmos o "su" e assim, escalar privilégio do nosso usuário. Dessa maneira, poderemos instalar nosso Docker
Precisaremos criar 2 arquivos:
- Um arquivo com a nossa secret que será encriptada, secret.yml
- Outro arquivo, com a chave para descriptografar o primeiro arquivo. Esse segundo arquivo, chamaremos de vault.txt
Essas informações podem ser vistas aqui no meu Github:
Agora, iremos criar nosso Playbook, onde teremos módulos que são comandos específicos do Ansible e ajudam na criação do nosso arquivo. Como podemos ver no nosso Playbook, "yum", "command" ou "service" 😉
https://docs.ansible.com/ansible/2.9/modules/list_of_all_modules.html
Por fim, podemos observar o nosso Playbook, onde é importante reparar:
hosts: target1 become: yesvars_files:
— secret
→ Usamos o nosso arquivo secret.yml que será lido no Playbook
→ O comando become é importante para podermos utilizar o sudo depois:
become_method: sudo
Aqui, podemos ler nosso Playbook:
Caso queiram rodar o arquivo, usaremos o comando:
ansible-playbook playbook-docker.yml -i inventory.txt --vault-password-file=vault.txt
Nosso output, podemos observar:
Assim, observamos o nosso container rodando no nosso target1
Espero que tenham gostado 💜