Cách cài đặt Ansible AWX trên CentOS 8

theanh

Administrator
Nhân viên
AWX là viết tắt của "Ansible Web eXecutable" là một dự án mã nguồn mở miễn phí cho phép bạn quản lý và kiểm soát dự án Ansible của mình một cách dễ dàng. Nó cung cấp giao diện người dùng dựa trên web và công cụ tác vụ được xây dựng trên Ansible. Nó cung cấp một REST API mạnh mẽ và cho phép bạn quản lý hoặc đồng bộ hóa kho lưu trữ với các nguồn đám mây khác, kiểm soát quyền truy cập và tích hợp với LDAP.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt Ansible AWX với Docker trên CentOS 8.

Điều kiện tiên quyết​

  • Một máy chủ chạy CentOS 8 với RAM tối thiểu 4 GB.
  • Một mật khẩu gốc được cấu hình trên máy chủ của bạn.

Bắt đầu​

Trước khi bắt đầu, bạn sẽ cần cài đặt kho lưu trữ EPEL trong hệ thống của mình. Bạn có thể cài đặt nó bằng lệnh sau:
Mã:
dnf install epel-release -y
Tiếp theo, bạn sẽ cần cài đặt một số gói bổ sung cần thiết để chạy AWX trên hệ thống của mình. Bạn có thể cài đặt tất cả chúng bằng lệnh sau:
Mã:
dnf install git gcc gcc-c++ ansible nodejs gettext device-mapper-persistent-data lvm2 bzip2 python3-pip -y
Sau khi tất cả các gói được cài đặt, bạn có thể tiến hành bước tiếp theo.

Cài đặt Docker và Docker Compose​

Tiếp theo, bạn sẽ cần cài đặt Docker để chạy AWX bên trong vùng chứa Docker. Theo mặc định, phiên bản Docker mới nhất không có trong kho lưu trữ mặc định của CentOS 8. Vì vậy, bạn sẽ cần thêm kho lưu trữ Docker vào hệ thống của mình. Bạn có thể thêm kho lưu trữ Docker bằng lệnh sau:
Mã:
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
Sau khi thêm, hãy cài đặt phiên bản ổn định mới nhất của Docker bằng lệnh sau:
Mã:
dnf install docker-ce-3:18.09.1-3.el7 -y
Sau khi Docker đã được cài đặt, hãy kiểm tra phiên bản Docker đã cài đặt bằng lệnh sau:
Mã:
docker --version
Bạn sẽ nhận được kết quả sau:
Mã:
Docker phiên bản 19.03.7, bản dựng 7141c199a2
Tiếp theo, hãy khởi động dịch vụ Docker và cho phép dịch vụ này khởi động sau khi hệ thống khởi động lại bằng lệnh sau:
Mã:
systemctl start docker
 systemctl enable docker
Bạn có thể xác minh trạng thái của dịch vụ Docker bằng lệnh sau:
Mã:
systemctl status docker
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
? docker.service - Docker Application Container Engine Đã tải: đã tải (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ 4, ngày 11 tháng 3 năm 2020 lúc 02:36:04 EDT; 23 phút trước Tài liệu: https://docs.docker.com PID chính: 5882 (dockerd) Nhiệm vụ: 101 Bộ nhớ: 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 -không gian tên 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 -không gian tên moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/47300ec1c26ff> ??8923 containerd-shim -không gian tên 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>
Tiếp theo, cài đặt Docker compose bằng lệnh sau:
Mã:
pip3 install docker-compose
Sau khi cài đặt, hãy xác minh phiên bản Docker compose bằng lệnh sau:
Mã:
docker-compose --version
Bạn sẽ thấy đầu ra sau:
Mã:
docker-compose version 1.25.4, build unknown
Cuối cùng, hãy chạy lệnh sau để thiết lập lệnh python sử dụng python 3:
Mã:
alternatives --set python /usr/bin/python3

Cài đặt Ansible AWX​

Trước tiên, hãy tải xuống phiên bản mới nhất của Ansible AWX từ kho lưu trữ Git Hub bằng lệnh sau:
Mã:
git clone https://github.com/ansible/awx.git
Tiếp theo, tạo khóa bí mật để mã hóa tệp inventory bằng lệnh sau:
Mã:
openssl rand -base64 30
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
R+kbcDEUS8DlAftAbfWafVqLZ0lUy+Paqo4fEtgp
Lưu ý: Hãy nhớ các bí mật trên, bạn sẽ cần dán chúng vào tệp inventory.

Tiếp theo, thay đổi thư mục thành awx/installer/ và chỉnh sửa tệp kiểm kê:
Mã:
cd awx/installer/
 nano Inventory
Thay đổi các dòng sau:
Mã:
[all:vars]dockerhub_base=ansibleawx_task_hostname=awxawx_web_hostname=awxwebpostgres_data_dir="/var/lib/pgdocker"máy chủ_port=80máy chủ_port_ssl=443docker_compose_dir="~/.awx/awxcompose"pg_username=awxpg_password=awxpasspg_database=awxpg_port=5432pg_admin_password=mật khẩurabbitmq_password=awxpassrabbitmq_erlang_cookie=cookiemonsteradmin_user=adminadmin_password=passwordcreate_preload_data=Truesecret_key=R+kbcDEUS8DlAftAbfWafVqLZ0lUy+Paqo4fEtgpawx_official=trueawx_alternate_dns_servers="8.8.8.8,8.8.4.4"project_data_dir=/var/lib/awx/projects
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, tạo một thư mục cho Postgres:
Mã:
mkdir /var/lib/pgdocker
Cuối cùng, chạy lệnh sau để cài đặt AWX:
Mã:
ansible-playbook -i inventory install.yml
Sau khi quá trình cài đặt hoàn tất thành công, bạn sẽ nhận được kết quả sau:
Mã:
skipping: [localhost]TASK [local_docker : Tải ảnh web] *************************************************************************************************************skipping: [localhost]TASK [local_docker : Tải ảnh tác vụ] ******************************************************************************************************************skipping: [localhost]TASK [local_docker : Đặt đường dẫn ảnh đầy đủ để cài đặt cục bộ] *************************************************************************************skipping: [localhost]NHIỆM VỤ [local_docker : Đặt Đường dẫn hình ảnh DockerHub] *************************************************************************************************ok: [localhost]NHIỆM VỤ [local_docker : Tạo thư mục ~/.awx/awxcompose] ****************************************************************************************đã thay đổi: [localhost]NHIỆM VỤ [local_docker : Tạo Cấu hình Docker Compose] ****************************************************************************************đã thay đổi: [localhost] => (item=environment.sh)đã thay đổi: [localhost] => (item=credentials.py)đã thay đổi: [localhost] => (item=docker-compose.yml)đã thay đổi: [localhost] => (item=nginx.conf)NHIỆM VỤ [local_docker : Render tệp SECRET_KEY] ****************************************************************************************************đã thay đổi: [localhost]NHIỆM VỤ [local_docker : Khởi động các container] ****************************************************************************************************đã thay đổi: [localhost]NHIỆM VỤ [local_docker : Cập nhật CA trust trong container awx_web] ******************************************************************************************đã thay đổi: [localhost]NHIỆM VỤ [local_docker : Cập nhật CA trust trong container awx_task] *******************************************************************************************đã thay đổi: [localhost]TÓM TẮT CHƠI ***************************************************************************************************************************************localhost : ok=14 changed=6 unreachable=0 failed=0 skipped=95 rescue=0 ignored=0
Lệnh trên sẽ tạo và khởi động tất cả các container Docker cần thiết cho AWX. Bạn có thể xác minh các container đang chạy bằng lệnh sau:
Mã:
docker ps
Bạn sẽ thấy đầu ra sau:
Mã:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES4b91575d64b1 ansible/awx_task:9.2.0 "/tini -- /bin/sh -c…" Khoảng một phút trước Lên Khoảng một phút 8052/tcp awx_task9827b9831fa5 ansible/awx_web:9.2.0 "/tini -- /bin/sh -c…" Khoảng một phút trước Lên Khoảng một phút 0.0.0.0:80->8052/tcp awx_web47300ec1c26f postgres:10 "docker-entrypoint.s…" Khoảng một phút trước Lên Khoảng một phút 5432/tcp awx_postgres166b153faa27 ansible/awx_rabbitmq:3.7.4 "docker-entrypoint.s…" Khoảng một phút trước Lên 58 giây 4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp awx_rabbitmq0f36c9784f74 memcached:alpine "docker-entrypoint.s…" Khoảng một phút trước Lên Khoảng một phút 11211/tcp awx_memcached

Cấu hình SELinux và Tường lửa​

Theo mặc định, SELinux được bật trong CentOS 8. Bạn nên tắt nó để AWX hoạt động trong môi trường Docker. Bạn có thể vô hiệu hóa nó bằng cách chỉnh sửa tệp sau:
Mã:
nano /etc/sysconfig/selinux
Tìm dòng sau:
Mã:
SELINUX=enforcing
Và thay thế bằng dòng sau:
Mã:
SELINUX=disabled
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, khởi động lại hệ thống của bạn để triển khai các thay đổi. Tiếp theo, bạn sẽ cần cho phép dịch vụ http và https thông qua firewalld. Bạn có thể cho phép chúng bằng lệnh sau:
Mã:
firewall-cmd --zone=public --add-masquerade --permanent
 firewall-cmd --permanent --add-service=http
 firewall-cmd --permanent --add-service=https
Tiếp theo, khởi động lại dịch vụ firewalld để áp dụng các thay đổi:
Mã:
firewall-cmd --reload

Truy cập Giao diện web AWX​

Bây giờ, hãy mở trình duyệt web của bạn và nhập URL http://your-server-ip. Bạn sẽ được chuyển hướng đến trang đăng nhập AWX:



Cung cấp tên người dùng và mật khẩu quản trị viên mà bạn đã xác định trong tệp inventory và nhấp vào nút ĐĂNG NHẬP. Bạn sẽ thấy bảng điều khiển mặc định của AWX ở trang sau:


Kết luận​

Xin chúc mừng! Bạn đã cài đặt thành công AWX với Docker trên CentOS 8. Bây giờ bạn có thể quản lý và kiểm soát dự án Ansible của mình một cách dễ dàng bằng giao diện web AWX.
 
Back
Bên trên