Cách cài đặt Ansible AWX với Nginx Reverse Proxy trên Ubuntu 18.04 LTS

theanh

Administrator
Nhân viên
AWX là một ứng dụng web nguồn mở cung cấp giao diện người dùng, REST API và công cụ tác vụ cho Ansible. Đây là phiên bản nguồn mở của Ansible Tower. AWX cho phép bạn quản lý sổ tay hướng dẫn, kho lưu trữ và lên lịch các tác vụ Ansible để chạy bằng giao diện web.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt và cấu hình AWX trên máy chủ Ubuntu 18.04. Chúng ta sẽ cài đặt AWX với Nginx làm proxy ngược và được xây dựng trên kết nối bảo mật HTTPS.

Điều kiện tiên quyết
  • Máy chủ Ubuntu 18.04
  • Bộ nhớ RAM +4GB và 2 lõi
  • Quyền root
Những gì chúng ta sẽ làm:
  1. Cài đặt Docker và Ansible
  2. Cài đặt các gói bổ sung
  3. Tải xuống và định cấu hình mã nguồn Ansible AWX
  4. Cài đặt Ansible AWX
  5. Cài đặt và định cấu hình Nginx làm Proxy ngược
  6. Thiết lập tường lửa UFW
  7. Kiểm tra

Bước 1 - Cài đặt Docker và Ansible​

Đầu tiên, chúng ta sẽ cài đặt các gói chính cần thiết để cài đặt AWX, đó là Docker và Ansible. Trước khi cài đặt các gói này, hãy cập nhật kho lưu trữ Ubuntu bằng lệnh sau.
Mã:
sudo apt update
Bây giờ hãy cài đặt Docker và Ansible.
Mã:
sudo apt install ansible -y
sudo apt install docker.io -y
Sau khi cài đặt hoàn tất, hãy kiểm tra docker và ansible bằng các lệnh sau.
Mã:
docker version
ansible --version
Dưới đây là kết quả.


Bước 2 - Cài đặt các gói bổ sung​

Bây giờ chúng ta sẽ cài đặt các gói bổ sung để cài đặt AWX. Chúng ta sẽ cài đặt gói 'python-pip' vào hệ thống, sau đó cài đặt docker-compose và docker-py từ kho lưu trữ python PyPI.

Cài đặt 'python-pip' bằng lệnh apt bên dưới.
Mã:
sudo apt install python-pip -y
Sau khi cài đặt hoàn tất, hãy cài đặt các gói docker-compose 1.9.0 và docker-py từ kho lưu trữ PyPI bằng lệnh pip bên dưới.
Mã:
pip install docker-compose==1.9.0
pip install docker-py


Tiếp theo, chúng ta cần cài đặt nodejs và npm trên máy chủ.

Chạy lệnh sau.
Mã:
sudo apt install nodejs npm -y
Sau khi hoàn tất, hãy nâng cấp npm lên phiên bản mới nhất.
Mã:
npm install npm --global
Và kết quả là tất cả các phần phụ thuộc đã được cài đặt vào hệ thống. Và chúng ta đã sẵn sàng để cài đặt AWX.

Bước 3 - Tải xuống mã nguồn AWX và cấu hình​

Trong bước này, chúng ta sẽ tải xuống mã nguồn AWX và cấu hình tệp kiểm kê để cài đặt AWX.

Tải xuống mã nguồn AWX từ kho lưu trữ git và đi đến thư mục cài đặt awx.
Mã:
git clone https://github.com/ansible/awx.git
cd awx/installer/
Sau đó, tạo khóa bí mật mới cho awx bằng lệnh openssl bên dưới.
Mã:
openssl rand -hex 32
Sao chép khóa bí mật đã tạo vào ghi chú của bạn.

Bây giờ hãy chỉnh sửa tệp cấu hình 'inventory'.
Mã:
vim inventory
Thay đổi 'postgres_data_dir' vào thư mục '/var/lib/pgdocker'.
Mã:
postgres_data_dir=/var/lib/pgdocker
Đổi 'host_port' thành '8080'.
Mã:
host_port=8080
Bỏ chú thích dòng 'use_docker_compose' và đổi giá trị thành 'true', vì chúng ta sẽ quản lý awx bằng docker compose.
Mã:
use_docker_compose=true
Bây giờ hãy đảm bảo rằng 'docker_compose_dir' nằm trong thư mục '/var/lib/awx'.
Mã:
docker_compose_dir=/var/lib/awx
Thay đổi thông tin xác thực cho 'pg_password', 'rabbitmq_password', 'rabbitmq_erlang_cookie', 'admin_user' và 'admin_password' với thông tin đăng nhập mật khẩu của riêng bạn.
Mã:
...
 pg_password=hakaseposgresawx
 ...
 rabbitmq_password=hakaserabbitmqawx
 rabbitmq_erlang_cookie=cookiemonster
 ...
 admin_user=hakase
 admin_password=hakasepass
 ...
sau đó, thay đổi khóa bí mật của cấu hình awx bằng khóa được tạo ở trên cùng.
Mã:
secret_key=cbdd4c70bbf82d572bfbdd454b28172642e6b8061b8c8b4937d9134294d30e33
Sau đó, bỏ ghi chú cho 'project_data_dir' và giữ nguyên giá trị mặc định.
Mã:
project_data_dir=/var/lib/awx/projects
Lưu và đóng cấu hình.

Dưới đây là nội dung đã chỉnh sửa của tệp 'inventory'.
Mã:
grep -v '^#' inventory
Tệp
cấu hình kho.
Mã:
localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python"
 
 [all:vars]
 
 dockerhub_base=ansible
 
 awx_task_hostname=awx
 awx_web_hostname=awxweb
 postgres_data_dir=/var/lib/pgdocker
 host_port=8080
 
 use_docker_compose=true
 docker_compose_dir=/var/lib/awx
 
 pg_username=awx
 pg_password=hakaseposgresawx
 pg_database=awx
 pg_port=5432
 
 rabbitmq_password=hakaserabbitmqawx
 rabbitmq_erlang_cookie=cookiemonster
 
 admin_user=hakase
 admin_password=hakasepass
 
 create_preload_data=True
 
 secret_key=cbdd4c70bbf82d572bfbdd454b28172642e6b8061b8c8b4937d9134294d30e33
 
 project_data_dir=/var/lib/awx/projects
Và kết quả là chúng ta đã sẵn sàng cài đặt awx ở giai đoạn tiếp theo.

Bước 4 - Cài đặt Ansible AWX​

Cài đặt awx bằng ansible-playbook sau lệnh.
Mã:
ansible-playbook -i inventory install.yml
Playbook sẽ thực hiện một số tác vụ bao gồm tải xuống hình ảnh docker và tạo các container mới postgresql, memcached, rabbitmq, ứng dụng web awx và tác vụ awx.

Và bên dưới là kết quả.



Tiếp theo, hãy đến thư mục '/var/lib/awx' và bạn sẽ nhận được cấu hình 'docker-compose.yml'. Sau đó, hãy kiểm tra tất cả các container docker có sẵn bằng lệnh docker-compose.
Mã:
cd /var/lib/awx
docker-compose ps
Và bạn sẽ thấy các container awx như bên dưới.



Ngoài ra, bạn có thể kiểm tra nhật ký của dịch vụ 'task' bằng lệnh sau.
Mã:
docker-compose logs task

Bước 5 - Cài đặt và cấu hình Nginx làm Proxy ngược​

Sau khi cài đặt awx, chúng ta sẽ cài đặt và cấu hình Nginx làm proxy ngược cho awx đang chạy cổng '8080'.

Cài đặt Nginx bằng lệnh apt sau.
Mã:
sudo apt install nginx -y
Sau khi cài đặt hoàn tất, hãy vào thư mục '/etc/nginx/sites-available/' và tạo cấu hình máy chủ ảo mới có tên là 'awx' bằng trình soạn thảo vim.
Mã:
cd /etc/nginx/sites-available/
vim awx
Bây giờ hãy dán cấu hình bên dưới.
Mã:
server {
 listen 80;
 server_name awx.hakase-labs.io;
 add_header Strict-Transport-Security max-age=2592000;
 rewrite ^ https://$server_name$request_uri? vĩnh viễn;
}

máy chủ {
 lắng nghe 443 ssl http2;
 tên máy chủ awx.hakase-labs.io;

 nhật ký truy cập /var/log/nginx/awx.access.log;
 nhật ký lỗi /var/log/nginx/awx.error.log;

 ssl bật;
 chứng chỉ ssl /etc/nginx/ssl/fullchain.pem;
 khóa chứng chỉ ssl /etc/nginx/ssl/privkey.pem;
 thời gian chờ ssl_session 5 phút;
 ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
 ssl_protocols TLSv1.2;
 ssl_prefer_server_ciphers on;

location / {
 proxy_http_version 1.1;
 proxy_set_header Máy chủ $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header Nâng cấp $http_upgrade;
 proxy_set_header Kết nối "nâng cấp";
 proxy_pass http://10.5.5.20:8080/;
 }
}
Thay đổi tên miền và địa chỉ IP proxy_pass bằng tên miền của bạn, sau đó lưu và thoát.

Bây giờ hãy kích hoạt máy chủ ảo 'awx' và kiểm tra cấu hình nginx.
Mã:
ln -s /etc/nginx/sites-available/awx /etc/nginx/sites-enabled/
nginx -t


Đảm bảo không có lỗi nào với cấu hình nginx, sau đó khởi động lại dịch vụ nginx.
Mã:
sudo systemctl restart nginx
Kết quả là quá trình cài đặt và cấu hình Nginx làm proxy ngược cho awx đã hoàn tất.

Bước 6 - Cấu hình Tường lửa UFW​

Thêm SSH, HTTP và HTTPS dịch vụ cho cấu hình tường lửa UFW.
Mã:
ufw allow ssh
ufw allow http
ufw allow https
Bây giờ hãy khởi động và kích hoạt dịch vụ tường lửa ufw.
Mã:
ufw enable
Nhập 'y' thành yes và tường lửa ufw đã được cấu hình.

Bước 7 - Kiểm tra​

Mở trình duyệt web của bạn và nhập URL awx của bạn vào thanh địa chỉ.


Và bạn sẽ được hiển thị trang đăng nhập awx như bên dưới.



Bây giờ hãy nhập tên người dùng 'hakase' và mật khẩu 'hakasepass', sau đó nhấp vào nút 'đăng nhập'.

Bây giờ bạn sẽ có bảng điều khiển quản trị awx như bên dưới.



Và quá trình cài đặt Ansible AWX với Nginx reverse proxy đã hoàn tất thành công.

Tham khảo​

https://github.com/ansible/awx
 
Back
Bên trên