В этом блоге я продемонстрирую, как я создал Ansible Playbook, который может выполнять следующие операции:

  1. Настройте веб-серверы на инстансах AWS EC2.

2. Настройте балансировщик нагрузки на экземпляре AWS.

3. Получите IP-адреса экземпляров, используя концепцию динамической инвентаризации.

4. Целевые узлы балансировщика нагрузки должны автоматически обновляться в соответствии со статусом веб-серверов.

Требования:

  1. Ansible настроен на узле управления.
  2. Экземпляры EC2 для веб-серверов должны работать с тегом (имя: веб-серверы)
  3. Экземпляр EC2 для балансировщика нагрузки должен работать с тегом (имя: балансировщик нагрузки)
  4. У вас должен быть пользователь IAM с программным доступом и разрешением PowerUserAccess в облаке AWS. Потому что вам потребуются ключ доступа и секретный ключ для динамической инвентаризации.
  5. У вас также должна быть загружена пара ключей, которая использовалась при запуске экземпляров 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