AWX release versions don’t link up that well with ansible towers. The problem with that is that when reading user and admin docs of ansible tower, the versions don’t link up.
Anyway AWX updates versions like wildfire so we are now on AWX version 11, this is probably outdated now so check the latest AWX releases on github.
The documentation goes through the basics of installing AWX.
Prerequisites
You need on your local:
- git
- python3.8
- ansible 2.8+
- docker python module
- node 10x and npm 6x (but try without this first)
Resources Specs
Then you will need a kubernetes cluster with the following resources available to workers (not control plane nodes)
- 4GB memory
- 2 CPU cores
- 20GB of space
External DB
I will use the external DB method as it feels a bit safer and I’m not that great with k8s peristent storage volumes and ScaleSet.
So for that you need to install postgres 9.6+ on an accessible vm.
You will need to create a database and create a remote awx user
sudo su postgres -
createdb awx
psql
create user awx with encrypted password 'awxpass';
grant all privileges on database awx to awx;
Then allow remove access, find where your config files are:
psql -c 'SHOW config_file'
sudo vim /var/lib/pgsql/12/data/postgresql.conf
set
listen_addresses = '*'
then:
sudo vim /var/lib/pgsql/12/data/pg_hba.conf
set:
host all all 0.0.0.0/0 md5
Restart:
systemctl start postgresql-12
Lastly, allow the port on the firewall
Steps
After setting up the above
-
Clone the repo locally
git clone git@github.com:ansible/awx.git
or
wget https://github.com/ansible/awx/archive/11.0.0.tar.gz
tar -xf 11.0.0.tar.gz
-
Edit
awx/installer/inventory
, provide values forkubernetes_context
andkubernetes_namespace
-
Uncomment and set your external postgres details
pg_hostname=postgresql pg_username=awx pg_password=awxpass pg_database=awx pg_port=5432
-
Change the admin username and admin password in the inventory
-
Then run the playbook
ansible-playbook -i inventory install.yml
Post install you should be able to see the pods
$ kubectl get pods --namespace awx
NAME READY STATUS RESTARTS AGE
ansible-tower-management 1/1 Running 0 5m39s
awx-7586cffcfb-q2lhl 4/4 Running 0 5m59s
View the availble services
kubectl get svc --namespace awx
View the ingress
kubectl get ing --namespace awx
The tricky part is actually accessing the box. I still need to work on this.
So it needs a public ip (or at least an accessible ip) then point your dns (either local in /etc/hosts
or proper) to it..
ie. mysite.example.com { rancher_cluster_ip }
Then create a load balancer in rancher or edit the ingress to use the dns name