Как установить и настроить Ansible AWX на CentOS 8

Как установить и настроить 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. Запасы назначаются организациям, а разрешения на запуск сценариев для инвентаризации контролируются на уровне пользователя и / или команды.

Чтобы создать и просмотреть существующие запасы, щелкните значок « Запасы» на левой панели навигации. Чтобы создать новый инвентарь, нажмите кнопку добавления ( + ) и выберите «Инвентарь» в раскрывающемся списке меню.

Введите имя и организацию, которой будет принадлежать этот инвентарь. Нажмите « Сохранить », чтобы активировать другие вкладки.

В этом примере мы собираемся добавить один хост, но знаем, что вы можете создать группу, содержащую один или несколько хостов, на которых вы хотите выполнять что-либо одновременно. Щелкните вкладку « Хосты » и нажмите +, чтобы добавить новый хост.

На новой загруженной странице добавьте IP или разрешимое имя хоста и описание. Мы собираемся установить nginx на данный хост в этом примере, используя интуитивно понятное имя.

После завершения нажмите « Сохранить », и новый инвентарь должен быть создан.

Концепция групп и хостов

Обратите внимание, что инвентарь разделен на группы и хосты. Группа может представлять конкретную среду (например, « Центр обработки данных 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 .