Blog

ansible logo

Vamos colocar a cultura DevOps em prática? Nesta série de tutoriais Rafael Poeyes demonstra como implantar uma das ferramentas de automação de tarefas mais poderosas e utilizadas atualmente: Ansible.

Introdução: O que é o Ansible

Ansible é um sistema de automação de infraestrutura de TI que permite implantação, configuração e gerenciamento de aplicações centralizado.

Se você tem que realizar qualquer atividade de administração mais de uma vez, ela pode ser automatizada com o Ansible. Assim, em vez de ter que acessar todos os servidores do seu parque para realizar uma atualização de segurança ou instalar um novo pacote, você pode pedir ao Ansible para dar aquele apt-get upgrade em todos os servidores de uma só vez.

Pessoalmente, eu prefiro o Ansible as outras opções disponíveis no mercado porque ele faz o trabalho sem precisar que um agente seja instalado em cada host, além de ser muito mais leve do que seus competidores. Apenas os pacotes Python e SSH são necessários. O SSH é um meio padrão para acesso aos servidores e provavelmente já está instalado em sua distribuição Linux, mas você precisa habilitá-lo, o que alguns podem considerar um risco maior de segurança, embora o Ansible funcione por meio de chaves, que são mais seguras.

1. Instalando e Configurando o Ansible

Você pode instalar o Ansible com o seguinte comando:

# apt-get install ansible

Você precisa colocar todos os hosts que deseja gerenciar com Ansible no arquivo /etc/ansible/hosts.

Você precisará comentar todas as linhas. Vá então para a última linha do arquivo de hosts para criar uma categoria. Digamos que você tenha um cluster de servidores web e outro de banco de dados. Você pode criar duas categorias separadas: web e db.

[ansible]
localhost ansible_host=127.0.0.1

[web]
web1 ansible_host=192.168.1.2
web2 ansible_host=192.168.2.2

[db]
db1 ansible_host=192.168.1.3
db2 ansible_host=192.168.2.3
db3 ansible_host=192.168.1.4
db4 ansible_host=192.168.2.4

Se você quiser fazer uma alteração em todos os hosts de banco de dados, poderá usar o db como seleção, para que apenas aqueles listados sob esta categoria sejam afetados e não outros hosts, como aqueles na categoria web.

As linhas do arquivo /etc/ansible/hosts seguem o padrão abaixo:

NomeHost ansible_host=IP

A variável NomeHost é apenas um nome qualquer para se referir ao seu host e a variável IP refere-se ao endereço de rede do host.

No exemplo acima, estamos listando 2 servidores web nos endereços IP 192.168.[1-2].2, e 4 servidores de banco de dados nos endereços IP 192.168.[1-2].[3-4].

2. Configurando as Chaves SSH

O Ansible trabalha com chaves SSH e, é claro, também trabalha usando senhas para autenticação. Como não recomendamos este último método de acesso, ele não será citado. Se sua chave SSH estiver em todos os hosts administrados pelo Ansible, basta usar Agent Forwarding e estará tudo certo, já que o Ansible permite a opção -A do SSH.

Neste tutorial, usaremos uma chave nova e exclusiva para o Ansible e por isso precisaremos gerá-la com o comando:

# ssh-keygen

Agora adicione a chave SSH gerada aos seus hosts:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@ip

3. Testando o Ansible

Para verificar se é possível executar o comando ping em todos os hosts listados no arquivo /etc/ansible/hosts, digite:

# ansible -m ping all

Isso confirma se os hosts estão ou não online.

Você também pode executar um comando, como o date:

# ansible web -m command -a 'date'

No exemplo acima, executamos o comando date em todos os hosts da categoria web.

4. Conclusão

Neste ponto, o Ansible está configurado e pronto para ser utilizado. Parece bem simples, certo? Bem, ainda não cobrimos o recurso mais poderoso do Ansible: os playbooks. 

Na próxima semana, teremos um novo tutorial com mais detalhes sobre eles.

Nos dias 22 e 23 de Outubro, Gleydson Mazioli participou do The Shellcode Lab,  renomado treinamento ministrado anualmente na Black Hat USA desde 2011.

Desenvolvido inteiramente pela Threat Intelligence Pty Ltd, o curso demonstrou como desenvolver payloads para Linux, Mac e Windows, integrá-los em exploits públicos e no framework de exploração Metasploit.

Os participantes também foram capacitados a criar uma ampla gama de backdoors indo desde execução de comando em 32-bit e minúsculos payloads de egg hunting à payloads de port bind em 64-bit.