В этом блоге я продемонстрирую, как я создал Ansible Playbook, который может выполнять следующие операции:
- Настройте веб-серверы на инстансах AWS EC2.
2. Настройте балансировщик нагрузки на экземпляре AWS.
3. Получите IP-адреса экземпляров, используя концепцию динамической инвентаризации.
4. Целевые узлы балансировщика нагрузки должны автоматически обновляться в соответствии со статусом веб-серверов.
Требования:
- Ansible настроен на узле управления.
- Экземпляры EC2 для веб-серверов должны работать с тегом (имя: веб-серверы)
- Экземпляр EC2 для балансировщика нагрузки должен работать с тегом (имя: балансировщик нагрузки)
- У вас должен быть пользователь IAM с программным доступом и разрешением PowerUserAccess в облаке AWS. Потому что вам потребуются ключ доступа и секретный ключ для динамической инвентаризации.
- У вас также должна быть загружена пара ключей, которая использовалась при запуске экземпляров EC2.
ПРИМЕЧАНИЕ. Все действия выполняйте с помощью узла управления.
Шаг 1. Установите аутентификацию без пароля между узлом управления и управляемыми узлами
Во-первых, нам нужно изменить разрешения пары ключей, которую мы загрузили с AWS.
$ chmod 400 [имя_ключа]
В Linux ssh-agent
- это фоновая программа, которая обрабатывает пароли для закрытых ключей SSH. Команда ssh-add
запрашивает у пользователя пароль закрытого ключа и добавляет его в список, поддерживаемый ssh-agent
. После того, как вы добавите пароль в thessh-agent
, вам не будет предлагаться ввести его при использовании SSH или scp для подключения к хостам с вашим открытым ключом.
$ ssh-add [имя_ключа]
Во-первых, вам нужно сгенерировать пары ключей аутентификации с помощью ssh-keygen, если вы еще этого не сделали.
Ssh-keygen
- это инструмент для создания новых пар ключей аутентификации для SSH. Такие пары ключей используются для автоматизации входа в систему, единой регистрации и для аутентификации хостов.
$ ssh-keygen
Теперь скопируйте этот сгенерированный открытый ключ на все управляемые узлы.
ssh-copy-id
устанавливает SSH-ключ на сервере в качестве авторизованного ключа. Его цель - предоставить доступ без необходимости вводить пароль для каждого входа в систему. Это упрощает автоматический вход без пароля и единый вход с использованием протокола SSH.
$ ssh-copy-id -i ~ / .ssh / id_rsa.pub ec2-user @ [IP_OF_INSTANCES]
Замените IP_OF_INSTANCES на IP-адреса всех управляемых узлов один за другим.
Шаг 2. Файлы динамической инвентаризации.
URL: https://github.com/mtabishk/ansible-playbooks/tree/main/dynamic_inventory/myinventories
Используйте этот URL-адрес, чтобы загрузить файлы динамической инвентаризации (ec2.py и ec2.ini) для AWS EC2 и сохранить их в каталоге инвентаризации.
$ mkdir inventory /
$ cp ec2.py inventory /
$ cp ec2.ini inventory /
Создайте переменные среды в своей оболочке:
$ export AWS_ACCESS_KEY_ID = ’YOUR_ACCESS_KEY '
$ export AWS_SECRET_ACCESS_KEY = ’YOUR_SECRET_KEY '
Шаг 3. Создайте файл конфигурации Ansible в своем рабочем пространстве.
$ vim ansible.cfg
Теперь, когда анзибль настроен, мы можем вывести список хостов:
$ ansible all - список хостов
$ ansible tag_name_webservers - список хостов
$ ansible tag_name_load_balancer - список хостов
Шаг 4: Создайте Playbook и другие файлы.
Моя структура каталогов выглядит так:
Вы можете скачать эти файлы по адресу: https://github.com/mtabishk/ansible-playbooks/tree/main/haproxy_aws_ec2
$ vim conf_load_balancer_aws.yml
$ vim haproxy.cfg.j2
$ vim index.php.j2
Шаг 5: Запустите Playbook.
$ ansible-playbook conf_load_balancer_aws.yml
Как видите, playbook успешно запущен. Теперь мы можем использовать HTTP: // [LOAD_BALANCER_IP]: [PORT], чтобы проверить балансировку нагрузки на наших веб-серверах.
Это все на сегодня! Я скоро вернусь с новыми статьями, спасибо! 🤗
Мухаммад Табиш Хандай
LinkedIn: https://www.linkedin.com/in/mtabishk/
Больше контента на plainenglish.io