Skip to content

Ansible: Como automatizar a configuração de servidores

Vamos colocar a cultura DevOps em prática? Nesta série de tutoriais demonstramos 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 a ferramenta para dar aquele apt-get upgrade em todos os servidores de uma só vez.

 

DevSecOps: Baixe agora a Avaliação e descubra seu nível de maturidade. Conheça os próximos passos para implantar segurança em escala em sua aplicação e infra cloud-native.

 

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

Você pode instalar o Ansible com o seguinte comando:

# apt-get install ansible

Você precisa colocar todos os hosts que deseja gerenciar 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

A plataforma 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, 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.