AWX adalah singkatan dari “Ansible Web eXecutable” adalah proyek free and open-source yang memungkinkan Anda untuk mengelola dan mengontrol proyek Ansible dengan mudah. AWX menyediakan user interface berbasis web, REST API yang kuat dan memungkinkan Anda untuk mengelola atau menyinkronkan inventaris dengan sumber cloud lainnya, mengontrol akses, dan mengintegrasikan dengan LDAP.

Dalam tutorial ini, kami akan menunjukkan kepada Anda cara install AWX Ansible AWX dengan Docker di CentOS 8.

Prasyarat

  • Server CentOS 8 dengan minimal RAM 4 GB.
  • Masuk sebagai root atau user dengan hak sudo

Sebelum Mulai

Tambahkan EPEL repository di sistem dengan perintah berikut:

dnf install epel-release -y

Selanjutnya, Anda perlu install beberapa paket tambahan yang diperlukan untuk menjalankan AWX di sistem. Anda dapat install semuanya dengan perintah berikut:

dnf install git gcc gcc-c++ ansible nodejs gettext device-mapper-persistent-data lvm2 bzip2 python3-pip -y

Setelah semua paket diinstal, Anda dapat melanjutkan ke langkah berikutnya.

Install Docker dan Docker Compose

Selanjutnya, kita perlu install Docker untuk menjalankan AWX di dalam container Docker. Secara default, versi terbaru Docker tidak tersedia di repositori default CentOS 8. Jadi, Anda perlu menambahkan repositori Docker di sistem Anda. Anda dapat menambahkan repositori Docker dengan perintah berikut:

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Setelah ditambahkan, instal versi stabil terbaru Docker dengan perintah berikut:

dnf install docker-ce-3:18.09.1-3.el7 -y

Setelah Docker diinstal, periksa versi Docker yang terinstal dengan perintah berikut:

docker --version

Anda harus mendapatkan output kurang lebih seperti :

Docker version 19.03.7, build 7141c199a2

Selanjutnya, mulai layanan Docker dan aktifkan untuk memulai setelah sistem reboot dengan perintah berikut:

systemctl start docker
 systemctl enable docker

Anda dapat memverifikasi status layanan Docker dengan perintah berikut:

systemctl status docker

Anda harus mendapatkan output kurang lebih seperti :

? docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-03-11 02:36:04 EDT; 23min ago
     Docs: https://docs.docker.com
 Main PID: 5882 (dockerd)
    Tasks: 101
   Memory: 2.6G
   CGroup: /system.slice/docker.service
           ??5882 /usr/bin/dockerd -H fd://
           ??5899 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
           ??8815 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/4b91575d64b1b>
           ??8847 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/0f36c9784f748>
           ??8894 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.18.0.5 -container-port 8052
           ??8899 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/47300ec1c26ff>
           ??8923 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/9827b9831fa5b>
           ??9631 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/166b153faa275>

Selanjutnya, instal Docker compose menggunakan perintah berikut:

pip3 install docker-compose

Setelah diinstal, verifikasi versi Docker compose menggunakan perintah berikut:

docker-compose --version

Anda akan melihat output berikut:

docker-compose version 1.25.4, build unknown

Akhirnya, jalankan perintah berikut untuk mengatur perintah python untuk menggunakan python 3:

alternatives --set python /usr/bin/python3

Instal Ansible AWX di CentOS 8

Pertama, download versi terbaru Ansible AWX dari repositori Git Hub menggunakan perintah berikut:

git clone https://github.com/ansible/awx.git

Selanjutnya, buat secret key untuk enkripsi file inventory dengan perintah berikut:

openssl rand -base64 30

Anda akan mendapatkan output berikut:

R+kbcDEUS8DlAftAbtWafVfLZ0lUy+Paqo3fEtep

Note: Catat secret key yang muncul dengan copy dan paste ke text editor, karena Anda harus menempelkannya di file inventory.

Selanjutnya, pindah ke direktori menjadi awx/installer/ dan edit file inventory dengan text editor nano:

cd awx/installer/
 nano inventory

Ubah baris berikut:

[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=R+kbcDEUS8DlAftAbtWafVfLZ0lUy+Paqo3fEtep
awx_official=true
awx_alternate_dns_servers="8.8.8.8,8.8.4.4"
project_data_dir=/var/lib/awx/projects

Simpan dan tutup file setelah Anda selesai. Kemudian, buat direktori untuk Postgres:

mkdir /var/lib/pgdocker

Terakhir, jalankan perintah berikut untuk install AWX:

ansible-playbook -i inventory install.yml

Setelah instalasi selesai dengan sukses, Anda harus mendapatkan output berikut:

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   

Perintah di atas akan membuat dan memulai semua container Docker yang diperlukan untuk AWX. Anda dapat memverifikasi container yang berjalan dengan perintah berikut:

docker ps

Anda akan melihat output berikut:

CONTAINER ID        IMAGE                        COMMAND                  CREATED              STATUS              PORTS                                                 NAMES
4b91575d64b1        ansible/awx_task:9.2.0       "/tini -- /bin/sh -c…"   About a minute ago   Up About a minute   8052/tcp                                              awx_task
9827b9831fa5        ansible/awx_web:9.2.0        "/tini -- /bin/sh -c…"   About a minute ago   Up About a minute   0.0.0.0:80->8052/tcp                                  awx_web
47300ec1c26f        postgres:10                  "docker-entrypoint.s…"   About a minute ago   Up About a minute   5432/tcp                                              awx_postgres
166b153faa27        ansible/awx_rabbitmq:3.7.4   "docker-entrypoint.s…"   About a minute ago   Up 58 seconds       4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp   awx_rabbitmq
0f36c9784f74        memcached:alpine             "docker-entrypoint.s…"   About a minute ago   Up About a minute   11211/tcp                                             awx_memcached

Konfigurasikan SELinux dan Firewall

Secara default, SELinux diaktifkan di CentOS 8. Disarankan untuk menonaktifkannya agar berfungsi AWX di Docker environment. Anda dapat menonaktifkannya dengan mengedit file berikut:

nano /etc/sysconfig/selinux

Temukan baris berikut:

SELINUX=enforcing

Dan, ganti dengan baris berikut:

SELINUX=disabled

Simpan dan tutup file setelah Anda selesai. Kemudian, restart sistem untuk mengimplementasikan perubahan. Selanjutnya, Anda harus mengizinkan layanan http dan https melalui firewalld. Anda dapat mengizinkan mereka dengan perintah berikut:

firewall-cmd --zone=public --add-masquerade --permanent
 firewall-cmd --permanent --add-service=http
 firewall-cmd --permanent --add-service=https

Selanjutnya, restart layanan firewalld untuk menerapkan perubahan:

firewall-cmd --reload

Akses Web Interface AWX

Sekarang, buka browser web Anda dan ketik URL http://domain_atau_server-ip. Anda akan diarahkan ke halaman login AWX:

Ansible Login

Berikan nama pengguna dan kata sandi admin Anda yang telah Anda tetapkan dalam file inventory dan klik tombol SIGN IN. Anda akan melihat dasbor default AWX di halaman berikut:

Ansible Web Dashboard

Kesimpulan

Selamat! Anda telah berhasil install AWX dengan Docker di CentOS 8. Sekarang Anda dapat mengelola dan mengontrol proyek Ansible Anda dengan mudah menggunakan AWX web interface.