Установка Ansible AWX

Установка Ansible AWX

В предыдущей публикации было рассказано о том, как выполняется установка Ansible. Однако, этот вариант предоставляет лишь CLI консоль без какого либо графического интерфейса. Чтобы получить Ansible с графическим интерфейсом есть несколько вариантов – либо использовать коммерческий Ansible Tower, либо использовать open source решение – Ansible AWX.

Есть несколько вариантов установки Ansible AWX – установка через AWX operator или установка через Docker. Вариант с Docker проще, т.к. он не требует наличия Kubernetes в вашей инфраструктуре. Хотя для целей тестирования его вполне можно развернуть на minikube.

В этой публикации будет рассказано про вариант установки через Docker. В качестве операционной системы будет использоваться Ubuntu Server 22.04.

Предварительные требования

Все предварительные требования приведены в репозитории продукта.

Кратко перечислены основные из них:

1. Для клонирования репозитория нужен git.

2. Установленный Docker.

3. Также нужен Docker Compose.

4. Для процесса установки еще нужен Ansible.

5. Также нужна утилита OpenSSL.

 

Для установки оставшихся компонентов выполните следующую команду:

sudo apt install -y git docker.io docker-compose openssl

После завершения процесса установки предварительных компонентов можно перейти к установки основного дистрибутива.

Дополнительно разрешим текущему пользователю запускать команды docker без sudo:

sudo usermod -aG docker $USER

После этого нужно завершить текущую сессию в терминале и установить новую сессию.

Также убедитесь, что на вашем сервере установлены пакеты setuptools-scm и buildx. Они потребуются для сборки.

Установка Ansible AWX

Первый шаг – это клонирование репозитория продукта. В данной статье рассмотрим клонирование самой актуальной версии:

 git clone --depth 1 https://github.com/ansible/awx
roman@ansible:~$ git clone --depth 1 https://github.com/ansible/awx
Cloning into 'awx'...
remote: Enumerating objects: 3914, done.
remote: Counting objects: 100% (3914/3914), done.
remote: Compressing objects: 100% (3038/3038), done.
remote: Total 3914 (delta 836), reused 1893 (delta 510), pack-reused 0
Receiving objects: 100% (3914/3914), 16.93 MiB | 9.12 MiB/s, done.
Resolving deltas: 100% (836/836), done.
roman@ansible:~$ 

Перейдем в директорию проекта:

cd awx

Теперь нужно скорректировать инвентаризационный файл

nano tools/docker-compose/inventory

Укажем пароль для базы данных PostgreSQL и необходимые секреты:

  GNU nano 6.2                                        tools/docker-compose/inventory *                                               
localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python3" [all:vars] # AWX-Managed Database Settings
# If left blank, these will be generated upon install.
# Values are written out to tools/docker-compose/_sources/secrets/
pg_password="Qwerty123"
broadcast_websocket_secret="Qwerty123"
secret_key="Qwerty123"

Для теста будет указаны пароли от которых серьезные администраторы должны покраснеть. Вы можете использовать внешнюю базу данных PostgreSQL. Для этого необходимо задать вот эти переменные: pg_host, pg_hostname и pg_username. Но сейчас будет использоваться база данных из контейнера.

Далее необходимо собрать образ системы Ansible AWX:

sudo make docker-compose-build

Дождитесь окончания процесса сборки Docker образов. На рассматриваемом тестовом сервере этот процесс занял примерно 5 минут. В случае успешного завершения сборки у вас должен отобразиться соответствующий образ Docker в перечне всех образов:

docker images
roman@ansible:~/awx$ docker images
REPOSITORY                  TAG       IMAGE ID       CREATED          SIZE
ghcr.io/ansible/awx_devel   devel     882452ec2ea3   42 seconds ago   2.01GB
roman@ansible:~/awx$

Теперь запустим сборку всех остальных компонентов системы. Передадим дополнительный аргумент COMPOSE_UP_OPTS=-d для того, чтобы запустить все контейнеры в фоне, а не в активном терминале:

make docker-compose COMPOSE_UP_OPTS=-d

Дождитесь окончания процесса сборки образов. На этот этап на рассматриваемом тестовом сервере ушло примерно минута.

Теперь нужно подготовить UI:

docker exec tools_awx_1 make clean-ui ui-devel

Дождитесь окончания процесса сборки UI. Опять же на рассматриваемом тестовом сервере понадобилось около 5 минут.

Один из заключительных шагов – это создание пользователя:

docker exec -ti tools_awx_1 awx-manage createsuperuser
roman@ansible:~/awx$ docker exec -ti tools_awx_1 awx-manage createsuperuser
Username (leave blank to use 'awx'): 
Email address: 
Password: 
Password (again): 
Superuser created successfully.
roman@ansible:~/awx$ 

Оставлено стандартное имя – awx и указан пароль пользователя.

Важный шаг – настроить политику перезапуска контейнеров. В противном случае после перезапуска docker хоста контейнеры не запустятся автоматически и вы не сможете получить доступ к Ansible AWX:

docker update --restart unless-stopped tools_awx_1
docker update --restart unless-stopped tools_postgres_1
docker update --restart unless-stopped tools_redis_1

Опционально можно загрузить демо данные:

docker exec tools_awx_1 awx-manage create_preload_data

Установка Ansible AWX завершена. Теперь можно перейти к оценки результатов труда.

Веб интерфейс администрирования

Веб интерфейс администрирования Ansible AWX доступен по следующему адресу (только с поправкой на IP-адрес вашего сервера):

https://10.10.10.106:8043

Вот так выглядит страница с запросом учетных данных:

Укажите учетные данные того пользователя, которого вы создали в процессе настройки продукта. После успешной аутентификации вы должны увидеть стартовую страницу панели администрирования Ansible AWX:

На этом публикация по процессу установки Ansible AWX завершена.