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
- Conta ativa na AWS com permissões para criar instâncias EC2 e security groups.
- AWS CLI instalado e configurado localmente (opcional, mas recomendado).
- Par de chaves SSH (key pair) criado na região desejada.
- Conhecimento básico de VPC, subnets e security groups.
Passo 1: Provisionando a instância EC2
Acesse o console da AWS e crie uma instância com as seguintes características recomendadas:
- AMI: Ubuntu Server 22.04 LTS.
- Tipo de instância: t3.micro (suficiente para testes; use t3.medium ou superior em produção).
- Security Group: libere a porta 22 (SSH) apenas para os IPs de origem confiáveis.
- Par de chaves: selecione ou crie um key pair (.pem) para acesso SSH.
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 --versionPasso 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.pemInstalando 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.awsCrie 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: roleTeste o inventário dinâmico com:
ansible-inventory -i aws_ec2.yml --graphPasso 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: presentExecute com:
ansible-playbook -i aws_ec2.yml configuracao-basica.ymlBoas práticas
- Nunca exponha a porta 22 para 0.0.0.0/0; restrinja o acesso SSH por IP ou via VPN.
- Utilize AWS Systems Manager Session Manager como alternativa ao SSH tradicional para reduzir a superfície de ataque.
- Armazene credenciais sensíveis no AWS Secrets Manager ou no Ansible Vault, nunca em texto plano nos playbooks.
- Use tags consistentes nas instâncias EC2 para aproveitar ao máximo o inventário dinâmico.
- Configure IAM Roles com permissões mínimas necessárias (princípio do menor privilégio) para a instância de controle.