Introdução

Empresas que operam infraestrutura híbrida — combinando servidores on-premise de chão de fábrica com recursos em nuvem — frequentemente utilizam a AWS EC2 como nó de controle para orquestrar automações Ansible. Rodar o Ansible a partir de uma instância EC2 traz vantagens como alta disponibilidade, escalabilidade e integração nativa com outros serviços AWS, como Systems Manager e Secrets Manager. Neste tutorial, vamos mostrar como provisionar uma instância EC2, instalar o Ansible e configurá-la como control node para gerenciar outros recursos na nuvem ou on-premise.

Pré-requisitos

Passo 1: Provisionando a instância EC2

Acesse o console da AWS e crie uma instância com as seguintes características recomendadas:

Se preferir usar a AWS CLI para criar a instância:

aws ec2 run-instances \
  --image-id ami-0abcdef1234567890 \
  --instance-type t3.micro \
  --key-name minha-chave \
  --security-group-ids sg-0123456789abcdef0 \
  --subnet-id subnet-0123456789abcdef0 \
  --count 1 \
  --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=ansible-control-node}]'

Passo 2: Conectando via SSH

Ajuste as permissões da chave privada e conecte-se à instância:

chmod 400 minha-chave.pem
ssh -i minha-chave.pem ubuntu@<IP_PUBLICO_DA_INSTANCIA>

Passo 3: Instalando o Ansible na instância EC2

Com acesso à instância, atualize os pacotes e instale o Ansible:

sudo apt update && sudo apt upgrade -y
sudo apt install software-properties-common -y
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible -y
ansible --version

Passo 4: Configurando credenciais para gerenciar outras instâncias EC2

Para que o Ansible controle outras instâncias na AWS, copie a chave privada usada para acessá-las (ou gere uma chave dedicada) para dentro do control node:

scp -i minha-chave.pem minha-chave.pem ubuntu@<IP_PUBLICO>:~/.ssh/
chmod 400 ~/.ssh/minha-chave.pem

Instalando o plugin de inventário dinâmico da AWS

O Ansible oferece um plugin de inventário dinâmico que consulta a API da AWS automaticamente, dispensando a manutenção manual de arquivos de hosts:

sudo apt install python3-pip -y
pip3 install boto3 botocore
ansible-galaxy collection install amazon.aws

Crie o arquivo aws_ec2.yml na raiz do projeto:

plugin: amazon.aws.aws_ec2
regions:
  - us-east-1
filters:
  tag:Environment: producao
keyed_groups:
  - key: tags.Role
    prefix: role

Teste o inventário dinâmico com:

ansible-inventory -i aws_ec2.yml --graph

Passo 5: Executando um playbook de exemplo

Crie um playbook simples para validar a automação entre instâncias:

---
- name: Configuracao basica dos servidores EC2
  hosts: all
  become: true
  tasks:
    - name: Atualizar cache de pacotes
      apt:
        update_cache: yes

    - name: Instalar pacotes essenciais
      apt:
        name:
          - htop
          - curl
          - unzip
        state: present

Execute com:

ansible-playbook -i aws_ec2.yml configuracao-basica.yml

Boas práticas

ansibleawsec2cloudautomacao
← Voltar para o blog