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:
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:
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.