Ansible ? Sério ? Eu na Infra com DevOPS
Falei no outro artigo sobre Vagrant, uma introdução, da ferramenta, então agora vou falar sobre o Ansible e seu poder.
Ansible é uma ferramenta para agilizar comandos repetitivos, quem nunca de infra teve que percorrer 50 máquinas, para aplicar o mesmo comando ?
Quem já passou por isso, deve se lembrar da expressão de Shell abaixo:
for IP in $(seq 1 10);do ssh root@192.168.1.${I} 'chmod 644 /var/log/auth.log' ; done
É, esse comando acima está bem simples em comparação ao que passamos no dia-a-dia como SysAdmin Linux, mas se a gente já conhecesse o Ansible, tudo isso poderia ser substituído com a expressão abaixo.
ansible -a 'chmod 644 /var/log/auth.log' all
Primeira atenção fica que no Ansible não precisamos de Agent, basta termos o que chamamos no GNU/Linux de chave de confiança.
Quem já usou SSH sabe do que estou falando. ( Em minhas analogias chamo isso de Chave e Fechadura ) Mas o termo certo é "Par de Chaves ou Chave de confiança"
Através desse processo de confiança, o Ansible, tendo a Chave Privada, consegue acessar todos os Hosts que tiverem a chave pública ( Fechadura =P )
Detalhe no comando citado anteriormente, é que a palavra all, pode ser substituída por um dicionário, que pode ser criado a qualquer momento no arquivo
#vim /etc/ansible/hosts
Esse arquivo teria que ter uma palavra chave e a sequencia de IPS
[servidores] 192.168.1.[1:10]
O Ansible é feito em Python utilizando a API Paramiko, para faciliar o SSH em diversas máquinas, resumindo a opera, ele é o Loop em ShellScript que fazíamos antes, só que agora com a facilidade do que chamamos de PlayBook.
Isso mesmo, além do poder do parâmetro -a 'COMANDO' que facilita muito nossa vida, podemos utilizar o Ansible para realizar roteiros pré-prontos e aplicar em diversos servidores, sendo assim uma excelente ferramenta para quem é de Infra, Desenvolvimento ou a galera que é adepta da Cultura DevOPS.
Vamos pegar o mesmo exemplo que dei neste artigo e converter ele para um PlayBook, sendo assim teríamos um arquivo no caminho
#vim /etc/ansible/playbooks/acesso.yml
Dentro desse arquivo que vem na extensão '.yml' que significa ( YAML Is not Markup Language ) ou seja, esse formato de arquivo é considerado um documento.
Lembra muito XML, bora ver o conteúdo e ele em execução:
#ansible-playbook /etc/ansbile/playbooks/acessos.yml
Olha que interessante, consegui fazer as modificações apenas convocando o playbook, e o mais interessante, no parâmetro hosts, eu posso dizer quais os servidores eu quero aplicar.
Claro que ferramenta serve para muitas coisas, eu quiz aqui apenas dar uma pequena demonstração e realizar o mesmo processo, em métodos diferentes.
Espero que tenham gostado desse breve artigo, mostrando um pouco sobre a ferramenta, um forte abraço e sucesso a todos.
Site Reliability Engineer Specialist | Porto Seguro
7 aFicou muito bom Antonio Thomacelli Gomes, só vale pontuar que o YAML pesa FORTE na identação de linhas, caso contrário a rapaziada vai sofrer muito debugando.