8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | 23ai | Misc | PL/SQL | SQL | RAC | WebLogic | Linux
Home » Articles » Linux » Here
AWX Installation on Oracle Linux 7 (OL7) Using the Docker-Compose Method
This article describes how to install AWX, the upstream project for Ansible Tower, on Oracle Linux 7 (OL7) using the Docker-Compose method.
Related articles.
TL;DR
There is a Vagrant build that allows you to complete this whole installation, including Docker and AWX, in a single command available here.
Assumptions
- You have a clean installation of Oracle Linux 7.
- You have at least one spare disk (real or virtual) to act as the "/var/lib/docker" mount point using BTRFS.
- You have a location called "/u01", which is either on a separate disk, or under the "/" mount point. Preferable not the latter.
- All actions performed as the "root" user.
Install Docker
The installation of Docker on Oracle Linux is described in full here. To keep things simple I've abbreviated it here. Some of these actions are destructive, so if in doubt read the related article.
Make sure the relevant repositories are enabled.
yum install yum-utils zip unzip -y yum-config-manager --enable ol7_optional_latest yum-config-manager --enable ol7_addons yum-config-manager --enable ol7_preview yum-config-manager --enable ol7_developer yum install -y oracle-epel-release-el7 yum-config-manager --enable ol7_developer_EPEL
Install the Docker engine OS packages.
yum install -y docker-engine btrfs-progs btrfs-progs-devel
Complete the Docker installation. This assumes the disk used for the docker images is "/dev/sdc".
# Partition to "/dev/sdc" disk, and configure it for use as "/var/lib/docker" mount point. echo -e "n\np\n\n\n\nw" | fdisk /dev/sdc docker-storage-config -s btrfs -d /dev/sdc1 # Enable the Docker service. systemctl enable docker.service systemctl start docker.service systemctl status docker.service
Install AWX
Install the required Ansible, PIP and Git packages.
yum install -y ansible python-pip3 python3-devel libselinux-python3 git gcc
Make sure the Python libraries are present for Docker and Docker-Compose.
pip3 install --upgrade pip pip3 install docker pip3 install docker-compose
Clone the AWX repository and switch to the installer directory.
cd /u01/ git clone https://github.com/ansible/awx.git cd awx/installer
Amend the contents of the "./inventory" file as you see fit. It includes an assortment of paths and credentials. You could do the run without amending any of these and it will work, but for anything other than a playground it's worth making some changes. Here are some of the obvious things you may want to change.
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 rabbitmq_password=awxpass admin_user=admin admin_password=password secret_key=awxsecret #project_data_dir=/var/lib/awx/projects
In my Vagrant build I use the following sed
commands to make changes based on environment variable values. It will give you an idea of what you should be considering amending.
# For a real installation, you will probably need to change many of these. sed -i -e "s|awx_task_hostname=awx|awx_task_hostname=${AWX_TASK_HOSTNAME}|g" ./inventory sed -i -e "s|awx_web_hostname=awxweb|awx_web_hostname=${AWX_WEB_HOSTNAME}|g" ./inventory sed -i -e "s|postgres_data_dir=\"~/.awx/pgdocker\"|postgres_data_dir=${POSTGRES_DATA_DIR}|g" ./inventory sed -i -e "s|host_port=80|host_port=${HOST_PORT}|g" ./inventory sed -i -e "s|host_port_ssl=443|host_port_ssl=${HOST_PORT_SSL}|g" ./inventory sed -i -e "s|docker_compose_dir=\"~/.awx/awxcompose\"|docker_compose_dir=${DOCKER_COMPOSE_DIR}|g" ./inventory sed -i -e "s|pg_username=awx|pg_username=${PG_USERNAME}|g" ./inventory sed -i -e "s|pg_password=awxpass|pg_password=${PG_PASSWORD}|g" ./inventory sed -i -e "s|pg_database=awx|pg_database=${PG_DATABASE}|g" ./inventory sed -i -e "s|pg_port=5432|pg_port=${PG_PORT}|g" ./inventory sed -i -e "s|rabbitmq_password=awxpass|rabbitmq_password=${RABBITMQ_PASSWORD}|g" ./inventory sed -i -e "s|admin_user=admin|admin_user=${ADMIN_USER}|g" ./inventory sed -i -e "s|admin_password=password|admin_password=${ADMIN_PASSWORD}|g" ./inventory sed -i -e "s|secret_key=awxsecret|secret_key=${SECRET_KEY}|g" ./inventory sed -i -e "s|#project_data_dir=/var/lib/awx/projects|project_data_dir=${PROJECT_DATA_DIR}|g" ./inventory
You are now in a position to install AWX. Issue the following command to run the installation playbook.
ansible-playbook -i inventory install.yml
Use It
Once the installation is complete, you should have a running AWX environment. The web interface is available from the following URLs by default.
http://localhost:80 http://localhost:443
In my vagrant build I use port forwarding to make them available from the following URLs on my host machine.
http://localhost:8080 http://localhost:8443
For more information see:
- Installing AWX
- VirtualBox VM for AWX installed on Docker
- Docker : Install Docker on Oracle Linux 7 (OL7)
Hope this helps. Regards Tim...