Quando você gerencia as instâncias existentes do Serviço da Web da Amazon (AWS) EC2, clicar ao redor do Console de Gerenciamento funciona bem. Mas à medida que sua infraestrutura cresce, gerenciar as instâncias leva muito tempo e se torna complexo. Existe uma maneira melhor de gerenciar as instâncias? Sim! O módulo AWS Ansible EC2 pode ajudar.
Neste tutorial, você aprenderá como o módulo AWS EC2 do Ansible lhe dá um controle poderoso para gerenciar instâncias AWS EC2 em uma abordagem orientada por exemplos.
Continue lendo e comece!
Pré-requisitos
Este tutorial é composto por instruções passo a passo. Se você gostaria de seguir junto, certifique-se de ter o seguinte em vigor:
- Um host controlador Ansible – Este tutorial usa o Ansible v2.11.7 em uma máquina Ubuntu 20.04.3 LTS.
- A remote Linux computer to test out the amazon.aws.ec2_instance Ansible module. This tutorial uses Ubuntu 20.04.3 LTS as the remote node.
- Uma conta AWS.
- Um usuário IAM da AWS, uma chave de acesso ID e uma chave secreta configurados em sua máquina local com acesso para criar e gerenciar instâncias EC2. Este tutorial utilizará um usuário IAM chamado ec2user.
Assegure-se de que o usuário IAM esteja configurado para acesso programático e que você o atribua à política existente AmazonEC2FullAccess.
- Um arquivo de inventário e um ou mais hosts são configurados para executar comandos e playbooks do Ansible. O computador remoto Linux é chamado de meuserver, e este tutorial utiliza um grupo de inventário chamado web.
- O Python v3.6 ou posterior deve estar instalado no host do controlador do Ansible e na máquina do nó remoto. Este tutorial utiliza o Python v3.8.10 em uma máquina Ubuntu.
- Módulos Python boto3 superiores a 1.15.0 e botocore superiores a 1.18.0 devem estar instalados no host do controlador Ansible e na máquina do nó remoto.
Criar ou reiniciar uma instância EC2 com comandos ad hoc
Se você planeja criar ou reiniciar uma única instância EC2 em uma conta AWS, executar comandos ad hoc será suficiente. Comandos ad hoc são uma maneira rápida e eficiente de executar um único comando para criar uma instância EC2 ou modificar o tipo de instância de uma instância EC2 da AWS.
Acesse seu controlador Ansible e execute o comando ansible
abaixo para se conectar (-m amazon.aws.ec2_instance
) ao host (web
).
O comando passa um argumento (-a
) que diz ao Ansible para reiniciar a instância EC2 da AWS com instance_tags=Name=Tag1
) na região us-east-2
. Para autenticar a conexão à conta AWS, você adiciona os detalhes aws_access_key
e aws_secret_key
no comando ad hoc.
O tutorial realiza todas as ações na região us-east-2, mas você pode realizar as mesmas ações em qualquer região da AWS de sua escolha.
Depois que o comando for concluído, você verá uma mensagem ALTERADO, como mostrado abaixo, confirmando que o Ansible reiniciou com sucesso a instância EC2 da AWS.

Lançando uma Instância EC2 com um Playbook do Ansible
Você acabou de aprender como executar um comando ad hoc do Ansible, o que é ótimo para uma ação única! Mas talvez você precise realizar várias tarefas. Se for o caso, crie um playbook do Ansible que lançará uma instância EC2 para executar várias tarefas.
1. Abra o terminal no seu host controlador do Ansible e execute os seguintes comandos para criar um diretório chamado ~/ansible_aws_ec2_module
e mudar para esse diretório.
Este diretório conterá o playbook e todos os arquivos de configuração necessários que você usará para invocar o módulo EC2 do Ansible.
2. Em seguida, abra seu editor de texto favorito, crie um arquivo chamado main.yml no diretório ~/ansible_aws_ec2_module. Preencha o arquivo main.yml com o seguinte conteúdo de playbook YAML.
O playbook abaixo contém a tarefa que inicia uma instância com um endereço IP público dentro de uma VPC específica em uma conta da AWS.
A partir deste ponto ao longo do tutorial, substitua os valores de
aws_access_key
eaws_secret_key
pelos seus próprios.
3. Execute o comando abaixo para invocar o playbook (main.yml
). O playbook então executa as tarefas para criar uma nova instância na região us-east-2
com o tipo de instância como t2.micro.
Abaixo, você pode ver que algumas tarefas mostram um status changed, o que indica que o Ansible criou a instância com sucesso e modificou o estado da tarefa para executar o comando. Em contraste, você vê um status ok, já que algumas tarefas não requerem mudanças.

4. Agora, abra seu navegador da web favorito e faça login no Console de Gerenciamento da AWS.
5. Por fim, clique na barra de pesquisa no topo do console, procure por EC2 e clique no item de menu EC2. Isso redirecionará seu navegador para a página do EC2.

Na página do EC2, você verá sua instância recém-criada, como mostrado abaixo.

Parando Múltiplas Instâncias AWS EC2
Talvez algumas instâncias AWS EC2 não sirvam mais para nenhum propósito. Se for o caso, você pode parar ou encerrar várias instâncias executando um playbook Ansible. Especifique os IDs das instâncias e declare valores em uma tarefa para definir o comportamento do módulo AWS EC2 do Ansible ao parar as instâncias.
1. Crie um playbook Ansible chamado stop.yml e copie/cole o código abaixo no playbook.
O playbook abaixo para duas instâncias (i-0d8c7eb4eb2c643a1 e i-0dbc17a67c0f7577c).
Se preferir encerrar as instâncias em vez de pará-las, altere o valor de
state
paraabsent
.
2. Agora execute o comando abaixo para executar o playbook (stop.yml
), que interromperá as instâncias especificadas no playbook. ansible-playbook stop.yml

3. Por fim, vá para suas instâncias AWS em seu navegador da web, e você verá que duas instâncias foram interrompidas com sucesso, conforme mostrado abaixo.

Criando uma instância com Tag, Volume e Monitoramento Cloud Watch
Talvez seja necessário provisionar sua instância com componentes mais avançados, como marcação, monitoramento com alarmes do CloudWatch, e criar um volume para armazenamento. Nesse caso, usar o módulo AWS EC2 do Ansible em um playbook resolverá o problema.
As tags são uma excelente maneira de organizar os recursos da AWS e fazer cálculos de custo eficientes dos recursos no Console de Gerenciamento da AWS.
1. Crie um novo playbook do Ansible chamado advanced.yml e preencha o playbook com o código abaixo.
O playbook abaixo lançará uma instância AWS EC2 com (volumes
—> /dev/sdb
, monitoramento e marcará a instância com Instance1
).
2. Agora execute o comando abaixo para executar o playbook (advanced.yml
), que lançará uma instância AWS EC2 com marca, volume e monitoramento do CloudWatch. ansible-playbook advanced.yml

3. Navegue até a guia de Armazenamento da instância que deseja verificar no console AWS EC2. Em Dispositivos de Bloqueio, clique em um ID do Volume na lista para visualizar as informações detalhadas da instância.

4. Por fim, clique na guia Tags na página de informações resumidas da instância. Você verá a tag que definiu para a instância no playbook (passo um), como a abaixo.

Conclusão
Neste tutorial, você aproveitou o módulo AWS EC2 do Ansible para gerenciar instâncias AWS EC2 com um único comando. Você também aprendeu como ajustar instâncias AWS EC2, como reiniciar, encerrar, adicionar tags, entre outros.
Agora que você possui um conhecimento sólido do módulo AWS EC2 do Ansible, está disposto a incorporar o módulo Ansible EC2 AWS em sua rotina de gerenciamento de instâncias? Talvez queira automatizar a tarefa adicionando um cron job?