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.
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:
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.
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:
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:
Bạn sẽ nhận được kết quả sau:
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:
Bạn có thể xác minh trạng thái của dịch vụ Docker bằng lệnh sau:
Bạn sẽ nhận được kết quả đầu ra sau:
Tiếp theo, cài đặt Docker compose bằng lệnh sau:
Sau khi cài đặt, hãy xác minh phiên bản Docker compose bằng lệnh sau:
Bạn sẽ thấy đầu ra sau:
Cuối cùng, hãy chạy lệnh sau để thiết lập lệnh python sử dụng python 3:
Tiếp theo, tạo khóa bí mật để mã hóa tệp inventory bằng lệnh sau:
Bạn sẽ nhận được kết quả đầu ra sau:
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ê:
Thay đổi các dòng sau:
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, tạo một thư mục cho Postgres:
Cuối cùng, chạy lệnh sau để cài đặt AWX:
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:
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:
Bạn sẽ thấy đầu ra sau:
Tìm dòng sau:
Và thay thế bằng dòng sau:
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:
Tiếp theo, khởi động lại dịch vụ firewalld để áp dụng các thay đổi:
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:
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
Mã:
dnf install git gcc gcc-c++ ansible nodejs gettext device-mapper-persistent-data lvm2 bzip2 python3-pip -y
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
Mã:
dnf install docker-ce-3:18.09.1-3.el7 -y
Mã:
docker --version
Mã:
Docker phiên bản 19.03.7, bản dựng 7141c199a2
Mã:
systemctl start docker
systemctl enable docker
Mã:
systemctl status docker
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>
Mã:
pip3 install docker-compose
Mã:
docker-compose --version
Mã:
docker-compose version 1.25.4, build unknown
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
Mã:
openssl rand -base64 30
Mã:
R+kbcDEUS8DlAftAbfWafVqLZ0lUy+Paqo4fEtgp
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
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
Mã:
mkdir /var/lib/pgdocker
Mã:
ansible-playbook -i inventory install.yml
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
Mã:
docker ps
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
Mã:
SELINUX=enforcing
Mã:
SELINUX=disabled
Mã:
firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
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: