Введение
AWX расшифровывается как «Ansible Web eXecutable». Это бесплатный проект с открытым исходным кодом, который позволяет вам легко управлять проектом Ansible и контролировать его. Предоставляет пользовательский веб-интерфейс и механизм действий на основе Ansible. Он предоставляет мощный REST API и позволяет управлять инвентарем или синхронизировать его с другими облачными источниками, контролировать доступ и интегрироваться с LDAP.
В этом руководстве мы покажем вам, как установить Ansible AWX с Docker на CentOS 8.
Предпосылки
- Сервер под управлением CentOS 8 с оперативной памятью не менее 4 ГБ.
- Пользователь без полномочий root с привилегиями sudo.
Если вы хотите установить Ansible AWX на удаленный сервер, продолжайте чтение, в противном случае пропустите первый абзац «Подключение к серверу» и читайте следующий.
Подключение к серверу
Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:
ssh root@IP_DEL_SERVER
Далее вам нужно будет ввести пароль пользователя root.
Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:
ssh nome_utente@IP_DEL_SERVER
Затем вам будет предложено ввести пароль пользователя.
Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Установить зависимости
Прежде чем начать, вам нужно будет установить репозиторий EPEL в вашей системе. Вы можете установить его с помощью следующей команды:
sudo dnf install epel-release -y
Далее вам нужно будет установить некоторые дополнительные пакеты, необходимые для запуска AWX в вашей системе. Вы можете установить их все с помощью следующей команды:
sudo dnf install git gcc gcc-c++ ansible nano nodejs gettext device-mapper-persistent-data lvm2 bzip2 python3-pip -y
После того, как все пакеты будут установлены, вы можете перейти к следующему шагу.
Установите Docker и Docker Compose
Затем вам нужно установить Docker для запуска AWX внутри контейнера Docker. По умолчанию последняя версия Docker недоступна в репозитории по умолчанию CentOS 8. Поэтому вам нужно будет добавить репозиторий Docker в вашу систему. Вы можете добавить репозиторий Docker с помощью следующей команды:
sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
После добавления установите последнюю стабильную версию Docker с помощью следующей команды:
sudo dnf install docker-ce-3:18.09.1-3.el7 -y
После установки Docker проверьте установленную версию Docker с помощью следующей команды:
docker --version
Вы должны получить следующий результат:
Docker version 19.03.8, build afacb8b
Затем запустите службу Docker и включите ее запуск после перезагрузки системы с помощью следующей команды:
sudo systemctl start docker
sudo systemctl enable docker
Вы можете проверить статус службы Docker с помощью следующей команды:
sudo 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 Sat 2020-03-21 18:11:15 CET; 5s ago
Docs: https://docs.docker.com
Main PID: 8624 (dockerd)
Tasks: 18
Memory: 47.7M
CGroup: /system.slice/docker.service
├─8624 /usr/bin/dockerd -H fd://└─8638 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
Затем установите композитор Docker с помощью следующей команды:
sudo pip3 install docker-compose
После установки проверьте версию Docker composer с помощью следующей команды:
docker-compose --version
Вы должны увидеть следующий вывод:
docker-compose version 1.25.4, build unknown
Наконец, выполните следующую команду, чтобы настроить команду python на использование python 3:
sudo alternatives --set python /usr/bin/python3
Установите Ansible AWX
Сначала загрузите последнюю версию Ansible AWX из репозитория Git Hub с помощью следующей команды:
sudo git clone https://github.com/ansible/awx.git
Затем сгенерируйте секретный ключ для шифрования файла инвентаризации с помощью следующей команды:
sudo openssl rand -base64 30
Вы должны получить вывод, подобный следующему:
cAP5Ag+/Lwlg2i5+e8iZXKfHNbpjtUfW3dp/ZfGE
Примечание: запомните приведенный выше код, вам нужно будет вставить его в файл инвентаря.
Затем измените каталог на awx/installer/
и отредактируйте файл inventory:
cd awx/installer/
sudo nano inventory
Отредактируйте файл следующим образом:
localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python"
[all:vars]
dockerhub_base=ansible
awx_task_hostname=awx
awx_web_hostname=awxweb
postgres_data_dir="/var/lib/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
pg_admin_password=password
rabbitmq_password=awxpass
rabbitmq_erlang_cookie=cookiemonster
admin_user=admin
admin_password=password
create_preload_data=True
secret_key=cAP5Ag+/Lwlg2i5+e8iZXKfHNbpjtUfW3dp/ZfGE
awx_official=true
awx_alternate_dns_servers="8.8.8.8,8.8.4.4"
project_data_dir=/var/lib/awx/projects
Сохраните и закройте файл, когда закончите. Затем создайте каталог для Postgres:
sudo mkdir /var/lib/pgdocker
Наконец, выполните следующую команду для установки AWX:
sudo ansible-playbook -i inventory install.yml
После успешного завершения установки вы должны получить следующий вывод:
...
skipping: [localhost]
TASK [local_docker: Load web image] **********************************************************************************************************
skipping: [localhost]
TASK [local_docker: Load task image] *********************************************************************************************************
skipping: [localhost]
TASK [local_docker: Set full image path for local install] ***********************************************************************************
skipping: [localhost]
TASK [local_docker: Set DockerHub Image Paths] ***********************************************************************************************
ok: [localhost]
TASK [local_docker: Create ~/.awx/awxcompose directory] **************************************************************************************
changed: [localhost]
TASK [local_docker: Create Docker Compose Configuration] *************************************************************************************
changed: [localhost] => (item=environment.sh)
changed: [localhost] => (item=credentials.py)
changed: [localhost] => (item=docker-compose.yml)
changed: [localhost] => (item=nginx.conf)
TASK [local_docker: Render SECRET_KEY file] **************************************************************************************************
changed: [localhost]
TASK [local_docker: Start the containers] ****************************************************************************************************
changed: [localhost]
TASK [local_docker: Update CA trust in awx_web container] ************************************************************************************
changed: [localhost]
TASK [local_docker: Update CA trust in awx_task container] ***********************************************************************************
changed: [localhost]
PLAY RECAP ************************************************************************************************************************************
localhost: ok=14 changed=6 unreachable=0 failed=0 skipped=95 rescued=0 ignored=0...
Приведенная выше команда создаст и запустит все контейнеры Docker, необходимые для AWX. Вы можете проверить запущенные контейнеры с помощью следующей команды:
sudo docker ps
Вы должны увидеть следующий вывод:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3a7ffee91018 ansible/awx_task:9.3.0 "/tini -- /bin/sh -c…" 13 minutes ago Up 13 minutes 8052/tcp awx_task
179208933b55 ansible/awx_web:9.3.0 "/tini -- /bin/sh -c…" 13 minutes ago Up 13 minutes 0.0.0.0:80->8052/tcp awx_web
86e4341934ca postgres:10 "docker-entrypoint.s…" 13 minutes ago Up 13 minutes 5432/tcp awx_postgres
40538e9ddc0f memcached:alpine "docker-entrypoint.s…" 13 minutes ago Up 13 minutes 11211/tcp awx_memcached
dfff98445d8e redis "docker-entrypoint.s…" 13 minutes ago Up 13 minutes 6379/tcp awx_redis
Настройте SELinux и брандмауэр (необязательно)
По умолчанию SELinux включен в CentOS 8. Рекомендуется отключить его для работы на AWX в среде Docker. Вы можете отключить его, отредактировав следующий файл:
sudo nano /etc/sysconfig/selinux
Найдите строку SELINUX
и измените ее следующим образом:
SELINUX = disabled
Сохраните и закройте файл, когда закончите. Затем перезагрузите систему, чтобы изменения вступили в силу. Затем вам нужно будет разрешить службу http и https через firewalld, если она включена. Вы можете разрешить их с помощью следующих команд:
sudo firewall-cmd --zone=public --add-masquerade --permanent
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
Затем перезапустите службу firewalld, чтобы изменения вступили в силу:
sudo firewall-cmd --reload
Войдите в веб-интерфейс AWX
Теперь откройте веб-браузер и введите URL-адрес вашего доменного имени или IP-адреса, http://DOMINIO_O_IP
. Вы будете перенаправлены на страницу входа в AWX.
Введите имя пользователя и пароль, указанные в файле инвентаризации, и нажмите кнопку ВХОД. Вы должны увидеть панель инструментов AWX по умолчанию.
Вывод
Вы успешно установили AWX с Docker на CentOS 8. Теперь вы можете легко управлять проектом Ansible и контролировать его с помощью веб-интерфейса AWX.