Bij het beheren van bestaande Amazon Web Service (AWS) EC2 instanties werkt klikken in de Management Console prima. Maar naarmate je infrastructuur groeit, kost het beheren van instanties veel tijd en wordt het complex. Is er een betere manier om instanties te beheren? Ja! De AWS Ansible EC2-module kan helpen.
In deze tutorial leer je hoe de Ansible AWS EC2-module je een krachtige grip geeft om AWS EC2-instanties te beheren in een op voorbeelden gebaseerde aanpak.
Lees verder en ga aan de slag!
Vereisten
Deze tutorial bestaat uit stapsgewijze instructies. Zorg ervoor dat je het volgende hebt:
- Een Ansible-controllerhost – Deze tutorial maakt gebruik van Ansible v2.11.7 op een Ubuntu 20.04.3 LTS-machine.
- 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.
- Een AWS-account.
- Een AWS IAM-gebruiker, een toegangssleutel-ID en een geheime sleutel opgezet op uw lokale machine met toegang om EC2-instanties te maken en te beheren. Deze handleiding zal een IAM-gebruiker genaamd ec2gebruiker gebruiken.
Zorg ervoor dat de IAM-gebruiker is ingesteld voor programmatische toegang en wijs deze toe aan het bestaande beleid AmazonEC2FullAccess.
- Een inventarisbestand en één of meer hosts zijn geconfigureerd om Ansible-opdrachten en playbooks uit te voeren. De externe Linux-computer heet myserver, en deze handleiding maakt gebruik van een inventarisgroep genaamd web.
- Python v3.6 of hoger is geïnstalleerd op uw Ansible-controllerhost en de externe node-machine. Deze handleiding gebruikt Python v3.8.10 op een Ubuntu-machine.
- Python-modules boto3 groter dan 1.15.0 en botocore groter dan 1.18.0 moeten worden geïnstalleerd op de Ansible-controllerhost en de externe node-machine.
Het maken of opnieuw opstarten van een EC2-instantie met ad-hoc-opdrachten
Als u van plan bent om een enkele EC2-instantie te maken of opnieuw op te starten op een AWS-account, volstaan ad-hoc-opdrachten. Ad-hoc-opdrachten zijn een snelle en efficiënte manier om een enkele opdracht uit te voeren om een EC2-instantie te maken of de instantietype van een AWS EC2-instantie te wijzigen.
Meld u aan bij uw Ansible-controller en voer de onderstaande ansible
-opdracht uit om (-m amazon.aws.ec2_instance
) verbinding te maken met de host (web
).
De opdracht geeft een argument door (-a
) dat Ansible vertelt om de AWS EC2-instantie opnieuw op te starten met instance_tags=Name=Tag1
) in de us-east-2
-regio. Om de verbinding met het AWS-account te authenticeren, voegt u aws_access_key
en aws_secret_key
-details toe aan de ad-hoc-opdracht.
De tutorial voert alle handelingen uit in de us-east-2-regio, maar u kunt dezelfde handelingen uitvoeren in elke AWS-regio van uw keuze.
Zodra de opdracht is voltooid, ziet u een GEWIJZIGD bericht, zoals hieronder weergegeven, dat bevestigt dat Ansible de AWS EC2-instantie succesvol heeft herstart.

Het starten van een EC2-instantie met Ansible Playbook
Je hebt zojuist geleerd hoe je een Ansible ad-hoc commando uitvoert, wat geweldig is voor eenmalige acties! Maar misschien moet je meerdere taken uitvoeren. Als dat het geval is, maak dan een Ansible playbook aan dat een EC2-instantie start om meerdere taken uit te voeren.
1. Open de terminal op je Ansible controller host en voer vervolgens de volgende commando’s uit om een map genaamd ~/ansible_aws_ec2_module
te maken en naar die map te schakelen.
Deze map bevat het playbook en alle vereiste configuratiebestanden die je zult gebruiken om de Ansible AWS EC2-module aan te roepen.
2. Open vervolgens je favoriete teksteditor, maak een bestand genaamd main.yml in de map ~/ansible_aws_ec2_module. Vul het bestand main.yml in met de volgende YAML playbook-inhoud.
Het playbook hieronder bevat de taak die een instantie start met een openbaar IP-adres binnen een specifieke VPC in een AWS-account.
Vanaf dit punt gedurende de tutorial, vervang de waarden van
aws_access_key
,aws_secret_key
met je eigen waarden.
3. Voer de onderstaande opdracht uit om het playbook (main.yml
) aan te roepen. Het playbook voert vervolgens de taken uit om een nieuwe instantie te maken in de regio us-east-2
met de instantietype t2.micro.
Hieronder kunt u zien dat sommige taken een veranderd-status tonen, wat aangeeft dat Ansible de instantie succesvol heeft aangemaakt en de status van de taak heeft gewijzigd om de opdracht uit te voeren. Daarentegen ziet u een ok-status omdat sommige taken geen wijzigingen vereisen.

4. Open nu uw favoriete webbrowser en log in op de AWS Management Console.
5. Klik ten slotte op de zoekbalk bovenaan de console, zoek naar EC2 en klik op het menu-item EC2. Hierdoor wordt uw browser doorgestuurd naar de EC2-pagina.

Op de EC2-pagina ziet u uw zojuist aangemaakte instantie, zoals hieronder weergegeven.

Meerdere AWS EC2-instanties stoppen
Misschien hebben sommige AWS EC2-instanties geen doel meer. Als dat het geval is, kunt u meerdere instanties stoppen of beëindigen door een Ansible playbook uit te voeren. Specificeer de instantie-ID’s en geef waarden op in een taak om het gedrag van de Ansible EC2 AWS-module in het stoppen van de instanties in te stellen.
1. Maak een Ansible playbook met de naam stop.yml en kopieer/plak de onderstaande code in het playbook.
Het onderstaande playbook stopt twee instanties (i-0d8c7eb4eb2c643a1 en i-0dbc17a67c0f7577c).
Als u de instanties liever wilt beëindigen in plaats van ze te stoppen, wijzig dan de waarde van
state
naarabsent
.
2. Voer nu het onderstaande commando uit om het playbook (stop.yml
) uit te voeren, dat de instanties zal stoppen die u hebt gespecificeerd in het playbook. ansible-playbook stop.yml

3. Navigeer tot slot naar uw AWS-instanties in uw webbrowser en u zult zien dat twee instanties succesvol zijn gestopt, zoals hieronder wordt weergegeven.

Het maken van een instantie met Tag, Volume en Cloud Watch Monitoring
Misschien moet je je instantie voorzien van meer geavanceerde componenten zoals tagging, monitoring met cloud watch alarms, en het creëren van een volume voor opslagdoeleinden. In dat geval zal het gebruik van de Ansible EC2 AWS-module in een playbook de truc doen.
Tags zijn een uitstekende manier om AWS-resources te organiseren en efficiënte kostenberekeningen van resources te maken in de AWS Management Console.
1. Maak een nieuw Ansible playbook met de naam advanced.yml en vul het playbook met de onderstaande code.
Het onderstaande playbook zal een AWS EC2-instantie starten met (volumes -> /dev/sdb, monitoring en tag de instantie met Instance1).
2. Voer nu de onderstaande opdracht uit om het playbook (advanced.yml) uit te voeren, waarmee een AWS EC2-instantie met tag, volume en cloud watch monitoring wordt gestart. ansible-playbook advanced.yml

3. Navigeer naar het tabblad Opslag van de instantie die je wilt verifiëren in de AWS EC2-console. Onder Blokapparaten klik je op een Volumen-ID in de lijst om gedetailleerde informatie van de instantie te bekijken.

4. Klik tot slot op het tabblad Tags in de samenvattingsinformatiepagina van de instantie. Je ziet de tag die je hebt ingesteld voor de instantie in de playbook (stap één), vergelijkbaar met onderstaande.

Conclusie
In deze tutorial heb je gebruikgemaakt van de Ansible AWS EC2-module om AWS EC2-instanties te beheren met één commando. Je hebt ook geleerd hoe je AWS EC2-instanties kunt aanpassen, zoals herstarten, beëindigen, tags toevoegen, enzovoort.
Nu je een solide kennis hebt van de Ansible AWS EC2-module, ben je bereid om deze module op te nemen in je routine voor het beheren van instanties? Misschien wil je de taak automatiseren door een cronjob toe te voegen?