Quando você gerencia instâncias existentes do Amazon Web Service (AWS) EC2, clicar ao redor do Console de Gerenciamento funciona bem. Mas à medida que sua infraestrutura cresce, gerenciar instâncias leva bastante tempo e se torna complexo. Existe uma maneira melhor de gerenciar instâncias? Sim! O módulo AWS Ansible EC2 pode ajudar.
Neste tutorial, você aprenderá como o módulo Ansible AWS EC2 oferece um poderoso controle 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ê quiser acompanhar, certifique-se de ter o seguinte em vigor:
- Um host controlador Ansible – Este tutorial utiliza 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 configurada 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 de AmazonEC2FullAccess.
- Um arquivo de inventário e um ou mais hosts estão configurados para executar comandos e playbooks do Ansible. O computador Linux remoto é chamado de myserver, e este tutorial utiliza um grupo de inventário chamado web.
- O Python v3.6 ou posterior está instalado em seu host 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 maiores que 1.15.0 e botocore maiores que 1.18.0 devem ser instalados no host do controlador Ansible e na máquina do nó remoto.
Criando ou reiniciando uma instância EC2 com comandos ad hoc
Se você planeja criar ou reiniciar uma única instância EC2 em uma conta da AWS, a execução de 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 AWS EC2.
Acesse o 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 AWS EC2 com instance_tags=Name=Tag1
) na região us-east-2
. Para autenticar a conexão com a 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.
Assim que o comando for concluído, você verá uma mensagem ALTERADO, como mostrado abaixo, que confirma que o Ansible reiniciou com sucesso a instância AWS EC2.

Lançando uma Instância EC2 com o 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 host do 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 AWS 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 do 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 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 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. Por outro lado, 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. Finalmente, clique na barra de pesquisa no topo do console, pesquise 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 nova instância criada, como mostrado abaixo.

Parando Múltiplas Instâncias AWS EC2
Talvez algumas instâncias do AWS EC2 não sirvam mais a um propósito. Se for esse o caso, você pode parar ou terminar várias instâncias executando um playbook do Ansible. Especifique os IDs das instâncias e declare valores em uma tarefa para definir o comportamento do módulo Ansible EC2 AWS ao parar as instâncias.
1. Crie um playbook do 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 você preferir terminar as instâncias em vez de pará-las, mude o valor de
state
paraabsent
.
2. Agora execute o comando abaixo para executar o playbook (stop.yml
), que irá parar as instâncias que você especificou no playbook. ansible-playbook stop.yml

3. Finalmente, navegue até suas instâncias da AWS no seu navegador web, e você verá que duas instâncias foram paradas com sucesso, conforme mostrado abaixo.

Criando uma Instância com Tag, Volume e Monitoramento do Cloud Watch
Talvez seja necessário provisionar sua instância com componentes mais avançados, como marcação, monitoramento com alarmes do CloudWatch e criação de um volume para fins de 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 recursos da AWS e fazer cálculos eficientes de custos de 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 tag da 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 tag, 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 bloco, 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 mostrada 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 a ajustar instâncias AWS EC2, como reiniciar, encerrar, adicionar tags, e assim por diante.
Agora que possui um conhecimento sólido do módulo AWS EC2 do Ansible, está disposto a integrar o módulo Ansible EC2 AWS à sua rotina de gerenciamento de instâncias? Talvez queira automatizar a tarefa adicionando um cron job?