Skip to main content

Começando com Ansible

·397 words·2 mins
Asafe Felipe
Author
Asafe Felipe

O Ansible é uma ferramenta usada para automação de infraestrutura, ele mantido pela Red Hat, sua maior vantagem é ser “Agentless” (sem a necessidade de instalar software cliente nos servidores gerenciados), ele utiliza o protocolo SSH para comunicação (também existem outros protocolos para conexão), ele é simples e declarativo.

Instalando e executando o primeiro comando
#

O Ansible é escrito em Python e a instalação mais comum é via pip ou gerenciadores de pacote do sistema (apt no Debian/Ubuntu, yum/dnf no Red Hat/CentOS). para instala-lo via pip:

pip install ansible

Agora com o Ansible instalado, podemos testar a conectividade com os agents, basta executar o comando abaixo passando o ip e o usuário do agent.

ansible all -i "<ip_agent>," -u <user> -m ping
Note a vírgula no final do IP

Criando o arquivo de inventário
#

O inventário é o arquivo onde o Ansible define quais máquinas ele vai gerenciar, por padrão, ele fica em /etc/ansible/hosts, mas podemos cria-lo em qualquer lugar do projeto. Também pode definir variáveis por host ou por grupo dentro do mesmo arquivo. Essas variáveis são acessíveis nos playbooks ou nos comandos.

Por exemplo, vamos criar um arquivo chamado hosts.ini:

# Variáveis por host
[web]
192.168.1.10 ansible_user=ubuntu ansible_port=22
192.168.1.11 ansible_user=ec2-user ansible_private_key_file=~/.ssh/aws.pem

# Variáveis por grupo
[db]
192.168.1.20
[db:vars]
ansible_user=postgres
ansible_port=2222

Depois de criar o arquivo, basta rodar o comando:

ansible all -i hosts.ini -m ping

Criando um playbook
#

Um playbook é um arquivo YAML onde podemos descrever o que o Ansible deve fazer em cada host ou grupo de hosts. Vamos criar um arquivo chamado setup.yml com o conteúdo abaixo:

---
- name: Configurar servidores web
  hosts: web
  become: yes
  tasks:
    - name: Atualizar pacotes
      ansible.builtin.apt:
        update_cache: yes
        upgrade: dist

    - name: Instalar Nginx
      ansible.builtin.apt:
        name: nginx
        state: present

Para rodar o playbook, use:

ansible-playbook -i inventory.ini setup.yml

Usando o Ansible no meu Homelab
#

Uso o Ansible para automatizar parte do meu Homelab, coisas como instalar o docker e liberar sua API, também para fazer o deploy do traefik. Ainda estou criando mais playbooks para automatizar ainda mais as coisas dentro do meu Homelab. Caso queria conferir, O projeto está disponível no meu Github:

Não se esqueça de me seguir no LinkedIn

References
#