Lorsque vous gérez des instances existantes Amazon Web Service (AWS) EC2, cliquer dans la Console de gestion fonctionne bien. Mais à mesure que votre infrastructure se développe, la gestion des instances prend beaucoup de temps et devient complexe. Existe-t-il un meilleur moyen de gérer les instances ? Oui ! Le module AWS Ansible EC2 peut aider.
Dans ce tutoriel, vous apprendrez comment le module Ansible AWS EC2 vous donne une emprise puissante pour gérer les instances AWS EC2 de manière pratique.
Lisez la suite et commencez !
Prérequis
Ce tutoriel comprend des instructions étape par étape. Si vous souhaitez suivre, assurez-vous d’avoir ce qui suit en place :
- Un hôte contrôleur Ansible – Ce tutoriel utilise Ansible v2.11.7 sur une machine 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.
- Un compte AWS.
- Un utilisateur IAM AWS, une clé d’accès ID et une clé secrète configurés sur votre machine locale avec l’accès pour créer et gérer des instances EC2. Ce tutoriel utilisera un utilisateur IAM appelé ec2user.
Assurez-vous que l’utilisateur IAM est configuré pour un accès programmatique et attribuez-lui la politique existante AmazonEC2FullAccess.
- Un fichier d’inventaire et un ou plusieurs hôtes sont configurés pour exécuter des commandes et des playbooks Ansible. L’ordinateur distant Linux est appelé monserveur, et ce tutoriel utilise un groupe d’inventaire appelé web.
- Python v3.6 ou ultérieur doit être installé sur votre hôte de contrôleur Ansible et sur la machine distante. Ce tutoriel utilise Python v3.8.10 sur une machine Ubuntu.
- Les modules Python boto3 supérieurs à 1.15.0 et botocore supérieurs à 1.18.0 doivent être installés sur l’hôte du contrôleur Ansible et sur la machine du nœud distant.
Création ou redémarrage d’une instance EC2 avec des commandes ad hoc
Si vous prévoyez de créer ou de redémarrer une seule instance EC2 sur un compte AWS, l’exécution de commandes ad hoc suffira. Les commandes ad hoc sont un moyen rapide et efficace d’exécuter une seule commande pour créer une instance EC2 ou modifier le type d’instance d’une instance EC2 AWS.
Connectez-vous à votre contrôleur Ansible et exécutez la commande ansible
ci-dessous pour vous connecter (-m amazon.aws.ec2_instance
) à l’hôte (web
).
La commande passe un argument (-a
) qui indique à Ansible de redémarrer l’instance EC2 AWS avec instance_tags=Name=Tag1
) dans la région us-east-2
. Pour authentifier la connexion au compte AWS, vous ajoutez les détails aws_access_key
et aws_secret_key
dans la commande ad hoc.
Le tutoriel effectue toutes les actions dans la région us-east-2, mais vous pouvez effectuer les mêmes actions dans n’importe quelle région AWS de votre choix.
Une fois que la commande est terminée, vous verrez un message CHANGED, comme indiqué ci-dessous, qui confirme qu’Ansible a redémarré avec succès l’instance EC2 AWS.

Lancement d’une instance EC2 avec Ansible Playbook
Vous venez d’apprendre comment exécuter une commande ad hoc Ansible, ce qui est parfait pour une action ponctuelle ! Mais peut-être avez-vous besoin d’effectuer plusieurs tâches. Si tel est le cas, créez un playbook Ansible qui lancera une instance EC2 pour exécuter plusieurs tâches.
1. Ouvrez le terminal sur votre hôte contrôleur Ansible, puis exécutez les commandes suivantes pour créer un répertoire appelé ~/ansible_aws_ec2_module
et basculez dans ce répertoire.
Ce répertoire contiendra le playbook et tous les fichiers de configuration nécessaires que vous utiliserez pour invoquer le module Ansible AWS EC2.
2. Ensuite, ouvrez votre éditeur de texte préféré, créez un fichier appelé main.yml dans le répertoire ~/ansible_aws_ec2_module. Remplissez le fichier main.yml avec le contenu du playbook YAML suivant.
Le playbook ci-dessous contient la tâche qui démarre une instance avec une adresse IP publique dans un VPC particulier dans un compte AWS.
À partir de ce point tout au long du tutoriel, remplacez les valeurs de
aws_access_key
,aws_secret_key
par les vôtres.
3. Exécutez la commande ci-dessous pour invoquer le playbook (main.yml
). Le playbook exécute ensuite les tâches pour créer une nouvelle instance dans la région us-east-2
avec un type d’instance t2.micro.
Vous pouvez voir ci-dessous que certaines tâches affichent un statut changed, ce qui indique qu’Ansible a créé l’instance avec succès et a modifié l’état de la tâche pour exécuter la commande. En revanche, vous voyez un statut ok car certaines tâches ne nécessitent pas de modifications.

4. Maintenant, ouvrez votre navigateur Web préféré et connectez-vous à la Console de gestion AWS.
5. Enfin, cliquez sur la barre de recherche en haut de la console, recherchez EC2, et cliquez sur l’élément de menu EC2. Cela redirige votre navigateur vers la page EC2.

Sur la page EC2, vous verrez votre instance nouvellement créée, comme indiqué ci-dessous.

Arrêt de plusieurs instances EC2 AWS
Peut-être que certaines instances AWS EC2 ne servent plus à rien. Si c’est le cas, vous pouvez arrêter ou terminer plusieurs instances en exécutant un playbook Ansible. Spécifiez les IDs des instances et déclarez les valeurs dans une tâche pour définir le comportement du module AWS EC2 Ansible lors de l’arrêt des instances.
1. Créez un playbook Ansible nommé stop.yml et copiez/collez le code ci-dessous dans le playbook.
Le playbook ci-dessous arrête deux instances (i-0d8c7eb4eb2c643a1 et i-0dbc17a67c0f7577c).
Si vous préférez terminer les instances plutôt que de les arrêter, changez la valeur de
state
enabsent
.
2. Exécutez maintenant la commande ci-dessous pour exécuter le playbook (stop.yml
), qui arrêtera les instances que vous avez spécifiées dans le playbook. ansible-playbook stop.yml

3. Enfin, accédez à vos instances AWS dans votre navigateur web, et vous verrez que deux instances ont été arrêtées avec succès, comme indiqué ci-dessous.

Création d’une instance avec étiquette, volume et surveillance Cloud Watch.
Peut-être devez-vous provisionner votre instance avec des composants plus avancés tels que le balisage, la surveillance avec des alarmes CloudWatch et la création d’un volume pour le stockage. Dans ce cas, l’utilisation du module AWS EC2 Ansible dans un playbook fera l’affaire.
Les balises sont un excellent moyen d’organiser les ressources AWS et de réaliser des calculs efficaces des coûts des ressources dans la console de gestion AWS.
1. Créez un nouveau playbook Ansible nommé advanced.yml et remplissez le playbook avec le code ci-dessous.
Le playbook ci-dessous lancera une instance AWS EC2 avec (volumes
—> /dev/sdb
, la surveillance et l’étiquetage de l’instance avec Instance1
).
2. Exécutez maintenant la commande ci-dessous pour exécuter le playbook (advanced.yml
), qui lancera une instance AWS EC2 avec des balises, un volume et une surveillance CloudWatch. ansible-playbook advanced.yml

3. Accédez à l’onglet Stockage de l’instance que vous souhaitez vérifier dans la console AWS EC2. Sous périphériques de blocage, cliquez sur un ID de volume dans la liste pour afficher les informations détaillées de l’instance.

4. Enfin, cliquez sur l’onglet Étiquettes dans la page d’informations de synthèse de l’instance. Vous verrez l’étiquette que vous avez définie pour l’instance dans le playbook (étape un), comme celle ci-dessous.

Conclusion
Dans ce tutoriel, vous avez profité du module AWS EC2 d’Ansible pour gérer les instances AWS EC2 avec une seule commande. Vous avez également appris à ajuster les instances AWS EC2 telles que le redémarrage, la terminaison, l’ajout d’étiquettes, et ainsi de suite.
Maintenant que vous avez une connaissance solide du module AWS EC2 d’Ansible, seriez-vous prêt à intégrer le module AWS EC2 d’Ansible dans votre routine de gestion des instances ? Peut-être souhaiteriez-vous automatiser la tâche en ajoutant une tâche cron ?