При работе с существующими экземплярами Amazon Web Service (AWS) EC2 веб-сервиса, навигация по консоли управления работает нормально. Но по мере роста вашей инфраструктуры управление экземплярами занимает много времени и становится сложным. Есть ли более эффективный способ управления экземплярами? Да! Вам может помочь модуль AWS Ansible EC2.
В этом руководстве вы узнаете, как модуль Ansible AWS EC2 дает вам мощные возможности для управления экземплярами AWS EC2 на основе примеров.
Читайте дальше и начинайте!
Предварительные требования
Это руководство состоит из пошаговых инструкций. Если вы хотите следовать за ними, убедитесь, что у вас есть следующее:
- Узел управления Ansible – В этом руководстве используется версия Ansible v2.11.7 на машине с 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.
- Учетная запись AWS.
- Пользователь AWS IAM, идентификатор ключа доступа и секретный ключ, настроенные на вашем локальном компьютере, с возможностью создавать и управлять экземплярами EC2. В этом руководстве используется пользователь IAM с именем ec2user.
Убедитесь, что пользователь IAM настроен для программного доступа и что вы назначили ему существующую политику AmazonEC2FullAccess.
- Настроен файл инвентаря и один или несколько хостов для выполнения команд и плейбуков Ansible. Удаленный компьютер с Linux называется myserver, и в этом руководстве используется группа инвентаря с названием web.
- На контроллере Ansible и удаленном узле должна быть установлена Python версии 3.6 или выше. В этом руководстве используется Python версии 3.8.10 на машине с Ubuntu.
- Необходимо установить модули boto3 версии выше 1.15.0 и botocore версии выше 1.18.0 на хосте контроллера Ansible и на удаленной машине.
Создание или перезапуск экземпляра EC2 с помощью команд Ad Hoc
Если вы планируете создать или перезапустить один экземпляр EC2 в учетной записи AWS, достаточно выполнить команды Ad Hoc. Команды Ad Hoc позволяют быстро и эффективно выполнить одну команду для создания экземпляра EC2 или изменения типа экземпляра AWS EC2.
Войдите на контроллер Ansible и выполните следующую команду ansible
, чтобы подключиться (-m amazon.aws.ec2_instance
) к хосту (web
).
Команда передает аргумент (-a
), который указывает Ansible на перезапуск экземпляра AWS EC2 с помощью instance_tags=Name=Tag1
) в регионе us-east-2
. Для аутентификации подключения к учетной записи AWS вы добавляете информацию о aws_access_key
и aws_secret_key
в команду Ad Hoc.
В данном учебнике все действия выполняются в регионе us-east-2, но вы можете выполнить те же действия в любом регионе AWS по вашему выбору.
После завершения выполнения команды вы увидите сообщение CHANGED, как показано ниже, что подтверждает успешное перезапуск экземпляра AWS EC2 с помощью Ansible.

Запуск экземпляра EC2 с помощью сценария Ansible
Вы только что научились выполнять команду Ansible ad hoc, что отлично подходит для одноразовых действий! Но возможно, вам нужно выполнить несколько задач. В этом случае создайте сценарий Ansible, который запустит экземпляр EC2 для выполнения нескольких задач.
1. Откройте терминал на вашем хосте контроллера Ansible, затем выполните следующие команды, чтобы создать каталог с именем ~/ansible_aws_ec2_module
и перейти в этот каталог.
Этот каталог будет содержать сценарий и все необходимые файлы конфигурации, которые вы будете использовать для вызова модуля Ansible AWS EC2.
2. Затем откройте ваш любимый текстовый редактор, создайте файл с именем main.yml в каталоге ~/ansible_aws_ec2_module. Заполните файл main.yml следующим содержимым YAML сценария.
Приведенный ниже сценарий содержит задачу, которая запускает экземпляр с публичным IP-адресом в определенной VPC в учетной записи AWS.
С этой точки и до конца учебника замените значения
aws_access_key
иaws_secret_key
на свои собственные.
3. Выполните следующую команду для вызова плейбука (main.yml
). Плейбук затем выполняет задачи для создания нового экземпляра в регионе us-east-2
с типом экземпляра t2.micro.
Ниже вы можете видеть, что некоторые задачи имеют статус changed, что указывает на успешное создание экземпляра Ansible и изменение состояния задачи для выполнения команды. В отличие от этого, вы видите статус ok, так как некоторые задачи не требуют изменений.

4. Теперь откройте ваш любимый веб-браузер и войдите в консоль управления AWS.
5. Наконец, нажмите на строку поиска в верхней части консоли, найдите EC2 и нажмите на пункт меню EC2. Это перенаправит ваш браузер на страницу EC2.

На странице EC2 вы увидите только что созданный экземпляр, как показано ниже.

Остановка нескольких экземпляров AWS EC2.
Возможно, некоторые экземпляры AWS EC2 больше не выполняют никакой функции. Если это так, вы можете остановить или прекратить работу нескольких экземпляров, выполнив плейбук Ansible. Укажите идентификаторы экземпляров и объявите значения в задаче для установки поведения модуля Ansible EC2 AWS при остановке экземпляров.
1. Создайте плейбук Ansible с именем stop.yml и скопируйте/вставьте нижеприведенный код в плейбук.
Ниже приведен плейбук, останавливающий два экземпляра (i-0d8c7eb4eb2c643a1 и i-0dbc17a67c0f7577c).
Если вы предпочитаете прекратить работу экземпляров, а не останавливать их, измените значение
state
наabsent
.
2. Теперь выполните следующую команду, чтобы выполнить плейбук (stop.yml
), который остановит указанные в плейбуке экземпляры. ansible-playbook stop.yml

3. Наконец, перейдите к экземплярам AWS в веб-браузере, и вы увидите, что два экземпляра успешно остановлены, как показано ниже.

Создание экземпляра с меткой, объемом и мониторингом Cloud Watch.
Возможно, вам потребуется оснастить ваш экземпляр более продвинутыми компонентами, такими как тегирование, мониторинг с облачными оповещениями CloudWatch и создание тома для хранения данных. В этом случае использование модуля EC2 AWS в Ansible плейбуке поможет вам.
Теги – отличный способ организации ресурсов AWS и эффективного расчета стоимости ресурсов в консоли управления AWS.
1. Создайте новый Ansible плейбук с именем advanced.yml и заполните плейбук следующим кодом.
Нижеприведенный плейбук запустит экземпляр AWS EC2 с (volumes
—> /dev/sdb
), мониторингом и тегом Instance1
.
2. Теперь выполните следующую команду для выполнения плейбука (advanced.yml
), который запустит экземпляр AWS EC2 с тегом, томом и мониторингом CloudWatch. ansible-playbook advanced.yml

3. Перейдите на вкладку Storage экземпляра, который вы хотите проверить, в консоли AWS EC2. Под Блочные устройства кликните по ID тома из списка, чтобы просмотреть подробную информацию об экземпляре.

4. Наконец, перейдите на вкладку Tags на странице с общей информацией об экземпляре. Вы увидите тег, установленный для экземпляра в плейбуке (шаг один), как показано ниже.

Вывод
В этом руководстве вы воспользовались модулем Ansible AWS EC2 для управления экземплярами AWS EC2 с помощью одной команды. Вы также узнали, как настраивать экземпляры AWS EC2, такие как перезапуск, завершение, добавление тегов и т. д.
Теперь, когда у вас есть надежные знания о модуле Ansible AWS EC2, вы готовы включить модуль Ansible EC2 AWS в свою рутину управления экземпляром? Возможно, вы захотите автоматизировать задачу, добавив cron job?