Ansible Tower heeft een open source upstream project genaamd ‘AWX‘ dat op een CentOS server geïnstalleerd kan worden. Ansible Tower helpt een devOps team om de Ansible omgeving te beheren.
Een virtuele machine is aangemaakt op Proxmox, maar dat kan ook Hyper-V, VMWare, KVM, of welke hypervisor dan ook zijn. 4Gb geheugen (ballooned van 1Gb-4Gb), 4 cores en 32Gb hard disk.
De host heeft als naam ‘awx.digitalinfo.local’ en verder is het een basic-CentOS 8 installatie met een gebruiker genaamd ‘ansible‘ die tevens ‘sudoer‘ is.
Met ‘ssh-copy-id ansible@awx.digitalinfo.local‘ is de ssh-key op de host geplaatst, veilig met inloggen! Plain text password login voor ssh is uitgeschakeld.
Voorbereiding
Na de installatie van CentOS 8 op een VM dient de ‘epel-release‘ geïnstalleerd te worden. Daarna zijn diverse packages nodig om straks via git de awx software op te halen die dan m.b.v. ansible in een docker container gaat draaien. Ook voor docker halen we een repo erbij zodat ‘docker-ce‘ geinstalleerd kan worden. De commando’s ter voorbereiding:
sudo dnf install epel-release -y sudo dnf install git gcc gcc-c++ ansible nodejs gettext device-mapper-persistent-data lvm2 bzip2 python3-pip -y sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce-3:18.09.1-3.el7 -y sudo systemctl enable docker --help sudo systemctl enable docker --now sudo systemctl status docker sudo usermod -aG docker $USER
Op dit punt aangekomen hebben we een CentOS 8 server met docker ‘up-and-running‘ om containers te draaien. Nu even de versie voor python goed zetten. Dit is de reden dat ik voor CentOS 8 heb gekozen, zodoende dus geen ‘last’ van de versie-conflicten van python in Centos 7. Anyways, enter de volgende commando’s:
sudo pip3 install docker-compose sudo alternatives --set python /usr/bin/python3
Nu gaan we de git-repository voor AWX ophalen vanuit de github repo van ansible:
git clone https://github.com/ansible/awx.git cd awx/installer
In de inventory file staan een aantal opties die gewijzigd dienen te worden. De eerste is een key die we eerst gaan genereren met openssl:
openssl rand -base64 30
Kopeieer de key en edit het inventory bestand. Wijzig de volgende opties:
secret_key=[de key van het commando hierboven] admin_password=[een very secret password] awx_alternate_dns_servers="8.8.8.8,8.8.4.4"
Maak nog even een directory voordat ansible begint:
sudo mkdir /var/lib/pgdocker
Hierna kan ansible de installatie van de docker-containers uitvoeren met:
sudo ansible-playbook -i inventory install.yml
Tijd voor koffie…
Nadat de ansible-playbooks gereed zijn draaien er een aantal docker containers:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0d12eea25bb1 ansible/awx:14.1.0 "/usr/bin/tini -- /u…" 52 minutes ago Up About an hour 8052/tcp awx_task 4565f74f982d ansible/awx:14.1.0 "/usr/bin/tini -- /b…" 52 minutes ago Up About an hour 0.0.0.0:80->8052/tcp awx_web aeee05c93fa5 redis "docker-entrypoint.s…" 52 minutes ago Up About an hour 6379/tcp awx_redis be5516f16ecb postgres:10 "docker-entrypoint.s…" 52 minutes ago Up About an hour 5432/tcp awx_postgres
Wellicht is het nodig om selinux te disabled, zet deze dan op disabled via
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux sudo setenforce 0
Ook is het nodig om http en https verkeer door de firewall toe te laten:
sudo firewall-cmd --zone=public --add-masquerade --permanent sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
Tenslotte kan nu met een browser naar de nieuwe AWX host gegaan worden.
http://awx.digitalinfo.local
Inloggen kan met username ‘admin’ en het wachtwoord zoals eerder ingesteld in de inventory file.