Как установить и настроить Ansible AWX на CentOS 8
Как системный администратор, есть вероятность, что есть некоторые задачи, которые вы повторяете каждый день и отнимаете много времени, которые можно было бы потратить на что-то другое. Что, если бы вы могли решить проблемы один раз, а затем автоматизировать свои решения в будущем? В этом и хорош Ansible, и как только вы увидите его преимущества, вы больше никогда не оглянетесь назад. Ansible — это простой, но мощный механизм автоматизации ИТ, который тысячи компаний используют для уменьшения сложности своих сред и ускорения реализации инициатив DevOps.
Будь то развертывание приложений, текущее обслуживание серверов, управление конфигурацией, непрерывная доставка, оркестровка или любая повторяющаяся работа, которую вы можете описать, Ansible может справиться с этим за вас. Чтобы добавить этому зверю красоту, AWX ( Ansible Web eXecutable ) предоставляет веб-интерфейс пользователя, REST API и механизм задач, построенный на основе Ansible. AWX Project — это проект сообщества с открытым исходным кодом, спонсируемый Red Hat, который позволяет пользователям лучше контролировать использование проекта Ansible в ИТ-средах. AWX — это апстрим-проект, на основе которого в конечном итоге получено предложение Red Hat Ansible Tower.
«Не ждите. Время никогда не будет подходящим ».
–Napoleon Hill
Предпосылки
Прежде чем вы сможете запустить развертывание, вам понадобится следующее, установленное в вашей локальной среде
- Версия Ansible 2.8+
- Последняя версия Docker
- докер модуль Python
- GNU Make
- Git версии 1.8.4+
- Python 3.6+
- Версия Node 10.x LTS
Теперь мы должны быть готовы закатать рукава, надеть ботинки и приступить к работе.
Шаг 1: Установите Epel Release Repo и зависимости
Нам нужны пакеты из репозитория Epel, поэтому давайте установим его следующим образом:
sudo dnf -y install epel-release
В AWX есть некоторые пакеты, необходимые в качестве зависимостей. Мы можем установить их все, выполнив команду ниже.
sudo dnf install -y git python3-pip curl ansible gcc nodejs gcc-c++ gettext lvm2 device-mapper-persistent-data pwgen bzip2
Отключить SELinux
Это необязательно, если вы легко справляетесь с SELinux. Чтобы отключить его, выполните команду ниже и перезагрузите сервер.
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
Шаг 2. Установите Docker и Docker Compose
AWX поддерживается и может запускаться только как контейнерное приложение с использованием образов Docker, развернутых в кластере OpenShift, кластере Kubernetes или docker-compose. В этом руководстве мы будем использовать Docker, чтобы запустить AWX.
Сначала загрузите файл репозитория Docker в /etc/yum.repos.d/docker-ce.repo и обновите кеш индекса RPM перед установкой Docker.
sudo curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
sudo yum makecache
sudo dnf -y install docker-ce --nobest
Запустите и включите Docker Service для запуска при загрузке и проверьте, работает ли он
$ sudo systemctl enable --now docker
$ systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2020-07-27 20:21:51 UTC; 5s ago
Docs: https://docs.docker.com
Main PID: 52836 (dockerd)
Tasks: 22
Memory: 49.8M
CGroup: /system.slice/docker.service
├─52836 /usr/bin/dockerd -H fd://
└─52843 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
Группа докеров создана, но в нее не добавляются пользователи. Добавьте своего пользователя в эту группу, чтобы запускать команды докеров без sudo.
sudo usermod -aG docker $USER
Узнайте больше об установке Docker и Docker Compose в руководстве CentOS 8, чтобы установить Docker и docker-compose на ваш сервер Cent0S 8.
Затем мы будем использовать команду pip3, чтобы установить модуль docker-compose и docker python, как показано ниже.
sudo pip3 install -U docker docker-compose
Подтвердите установленную версию..
$ docker-compose version docker-compose version 1.26.2, build unknown docker-py version: 4.2.2 CPython version: 3.6.8 OpenSSL version: OpenSSL 1.1.1c FIPS 28 May 2019
Шаг 3. Клонируйте AWX из git
Пока что мы рассмотрели все предварительные условия, необходимые AWX. Наконец-то мы можем безопасно клонировать и устанавливать Ansible AWX. Давайте получим файлы AWX из Git, используя команду ниже.
cd ~
git clone --depth 50 https://github.com/ansible/awx.git
Перейти в каталог установщика
В каталоге установщика есть файл конфигурации, который нам нужно изменить и выполнить, поэтому перейдите в каталог.
cd ~/awx/installer/
Прежде чем редактировать файл инвентаризации, сгенерируйте секретный ключ шифрования, который мы будем использовать, выполнив команду ниже.
$ pwgen -N 1 -s 30
yBs76VurxRiBwtDHrrF2JJlLgVrcv3
Отредактируйте файл инвентаризации и настройте его в соответствии с потребностями вашей среды.
$ vim inventory
[all:vars]
dockerhub_base=ansible
awx_task_hostname=awx
awx_web_hostname=awxweb
postgres_data_dir="~/.awx/pgdocker"
host_port=80
host_port_ssl=443
docker_compose_dir="~/.awx/awxcompose"
pg_username=awx
pg_password=awxpass
pg_database=awx
pg_port=5432
admin_user=admin
admin_password=SuperSecret
create_preload_data=True
awx_alternate_dns_servers="8.8.8.8,8.8.4.4"
secret_key=yBs76VurxRiBwtDHrrF2JJlLgVrcv3
awx_official=true
Изменить правила брандмауэра
Если у вас запущен Firewalld, add-masquerade и разрешите службы http и https . Это очень важно, не пропустите. Если вы изменили порт в предыдущем файле инвентаризации, разрешите его также в брандмауэре.
sudo firewall-cmd --zone=public --add-masquerade --permanent
sudo firewall-cmd --permanent --add-service={http,https}
sudo firewall-cmd --reload
Выполнить playbook
Запустите установку Ansible Playbook, чтобы развернуть контейнеры докеров AWX. Запустите команду ansible-playbook, за которой следует опция -i, указывающая, какой файл инвентаря использовать. Имя файла playbook — install.yml.
sudo ansible-playbook -i inventory install.yml
Выполнение указанной выше команды займет некоторое время. После этого вы можете проверить созданные контейнеры докеров и их статус с помощью команды docker ps .
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
feb21b5e6c62 ansible/awx:13.0.0 "tini -- /usr/bin/la…" 3 minutes ago Up 24 seconds 8052/tcp awx_task
423d8c6e4550 ansible/awx:13.0.0 "tini -- /bin/sh -c …" 3 minutes ago Up 22 seconds 0.0.0.0:80->8052/tcp awx_web
11d2953d4f67 postgres:10 "docker-entrypoint.s…" 3 minutes ago Up 22 seconds 5432/tcp awx_postgres
724d5c4f8162 redis "docker-entrypoint.s…" 3 minutes ago Up 25 seconds 6379/tcp awx_redis
Шаг 4. Доступ к веб-интерфейсу AWX
Чтобы получить доступ к веб-консоли AWX, укажите в браузере IP-адрес AWX-сервера Ansible
http://your-server-ip-address:<port>
Добро пожаловать на страницу входа в систему, которая хорошо проиллюстрирована ниже.
После открытия введите имя пользователя admin и пароль admin_password, которые вы указали в файле инвентаризации. После успешной аутентификации вы попадете в административную панель AWX. Здесь есть чем заняться, и мы рассмотрим лишь некоторые из них. В левой части панели инструментов находится меню навигации, в котором вы можете быстро перейти к своим проектам, инвентарям, шаблонам вакансий и вакансиям.
Шаг 5. Создайте пользователя и команду
AWX предоставляет пользователя по умолчанию с именем admin, которого вы можете использовать для проведения тестов. Но если вам нужен другой пользователь, вы можете создать другого.
Чтобы добавить нового пользователя помимо администратора, которого вы найдете по умолчанию, щелкните вкладку «Пользователи» в левом меню. Откроется новая страница, на которой вы можете добавить нового пользователя. Нажмите на зеленый значок + и введите данные нового пользователя, которого нужно добавить.
После того, как вы закончите, нажмите « Сохранить ».
То же самое касается создания новой команды. Щелкните вкладку « Команды » в левом меню. Откроется новая страница, на которой вы можете добавить новую команду. Щелкните зеленый значок +, затем введите данные о новой команде, которую нужно добавить.
После того, как вы закончите, нажмите « Сохранить ».
Шаг 6. Создайте организацию
Организация — это логическая совокупность пользователей, команд, проектов и запасов. Это объект самого высокого уровня в иерархии объектов AWX. На левой панели навигации щелкните значок Организации . Вы обнаружите, что организация по умолчанию была создана автоматически и доступна для всех пользователей Ansible AWX.
Его можно использовать как есть или редактировать по мере необходимости. Давайте отредактируем его, изменив его имя и добавив пользователей, разрешения и многое другое.
Щелкните вкладку « Пользователи » и добавьте нового пользователя. Раньше я не создавал нового пользователя, поэтому появляется пользователь admin по умолчанию. Но вы можете создать других пользователей как общие на шаге 5 .
Если бы у вас были другие пользователи, они были бы внесены в него
При нажатии на «Пользователи» отображаются все пользователи, связанные с этой организацией. Пользователь — это лицо, имеющее доступ к Ansible AWX со связанными ролями и учетными данными. Добавление пользователя в организацию добавляет его только как участника, указав роль для пользователя, можно на вкладке « Разрешения », как показано в примере ниже:
Шаг 7. Создайте учетные данные
Чтобы Ansible мог входить в систему и выполнять задачи, ему потребуются учетные данные для доступа к удаленным хостам. AWX предоставляет нам эту функцию. Нажмите « Учетные данные » в левом меню, а затем нажмите зеленый +, чтобы добавить новые учетные данные сервера.
Введите имя, описание, организацию, имя пользователя, пароль и тип учетных данных, который представляет собой длинный список. Мы выберем машину, поскольку в этом примере мы собираемся настроить один хост. Вы можете добавить свои ssh-ключи, если предпочитаете механизм аутентификации на основе ключей. Также добавьте в sudo повышение привилегий ниже.
По завершении нажмите « Сохранить ».
Шаг 8. Создайте новый инвентарь и добавьте его в организацию.
Инвентаризация — это набор хостов, которыми управляет Ansible. Запасы назначаются организациям, а разрешения на запуск сценариев для инвентаризации контролируются на уровне пользователя и / или команды.
Чтобы создать и просмотреть существующие запасы, щелкните значок « Запасы» на левой панели навигации. Чтобы создать новый инвентарь, нажмите кнопку добавления ( + ) и выберите «Инвентарь» в раскрывающемся списке меню.
В этом примере мы собираемся добавить один хост, но знаем, что вы можете создать группу, содержащую один или несколько хостов, на которых вы хотите выполнять что-либо одновременно. Щелкните вкладку « Хосты » и нажмите +, чтобы добавить новый хост.
После завершения нажмите « Сохранить », и новый инвентарь должен быть создан.
Концепция групп и хостов
Обратите внимание, что инвентарь разделен на группы и хосты. Группа может представлять конкретную среду (например, « Центр обработки данных 1 » или « Стенд для тестирования »), тип сервера (например, « Веб-серверы » или « Серверы БД ») или любое другое представление вашей среды.
Шаг 9: Настройка проекта
Проект — это логическая коллекция сценариев Ansible, представленная в Ansible AWX. Вы можете управлять плейбуками и каталогами плейбуков, помещая их вручную в базовый путь проекта на сервере Ansible AWX или помещая свои плейбуки в систему управления исходным кодом (SCM), поддерживаемую Ansible AWX, включая Git, Subversion и Mercurial .
Чтобы создать новый проект, следуйте той же процедуре, что и остальные, которые мы видели до сих пор. Щелкните вкладку « Проекты » в левом меню, а затем нажмите «Добавить» ( + ), чтобы создать новый проект.
Оказавшись там, заполните данные в соответствии с вашими потребностями. В типе Source Control Manager (SCM) вы можете создать репозиторий git со всеми вашими плейбуками или создать локальную папку на своем сервере, как это будет рекомендовано при выборе руководства в разделе типа SCM. В этом примере я предпочел добавить репозиторий git. Обратите внимание, что мы по-прежнему ссылаемся на выбранную вами организацию, если у вас их несколько.
Введите все данные и нажмите « Сохранить ». Файл, созданный в репозитории git (nginx.yml), имеет следующее:
---
- hosts: all
gather_facts: true
become: true
become_user: root
tasks:
- apt:
name: nginx
when: ansible_os_family == "Debian"
Прикрепленный скриншот ниже:
Шаг 10: Настройка шаблона и его запуск
К настоящему времени мы сделали много, и нам осталось собрать все это в шаблон. Шаблон задания сочетает в себе сборник пьес Ansible из проекта и настройки, необходимые для его запуска. Создайте новый шаблон вакансии, щелкнув вкладку « Шаблоны » в левом меню навигации. Нажмите зеленую кнопку добавления (+), чтобы добавить новый шаблон, как и другие. Когда откроется окно, остается только выбрать инвентарь, проект, учетные данные и учебник, которые мы уже настроили на предыдущих шагах. Дайте вашему шаблону имя и необязательное описание.
Когда закончите, прокрутите вниз и нажмите « Сохранить ». После сохранения вы можете сразу « запустить » его как задание.
Как только вы нажмете «Запустить», вы будете перенаправлены на страницу « Задания », где вы увидите, как он выполняется в реальном времени, а вывод отображается по мере его появления.
Если все пойдет хорошо, сценарий должен быть успешно запущен Ansible за кулисами. Все обнаруженные ошибки будут отображаться справа.
Войдите на тестируемый сервер и проверьте, успешно ли установлен nginx.
Удивительный материал, установка Ansible AWX официально настроена и работает правильно.
Подробнее об Ansible Tower | AWX можно найти в Кратком руководстве RedHat по Ansible Tower .