Ở bài viết trước tôi đã hướng dẫn cài đặt AWX trên môi trường Docker container.
Bài viết này sẽ hướng dẫn các bạn sử dụng AWX cho việc quản trị các tác vụ của Ansible, đưa các Inventory, playbook dưới hệ thống của bạn lên AWX thực thi.
Sau khi đăng nhập vào AWX bằng tài khoản đã khai báo khi chạy playbook cài đặt, đây là giao diện quản trị monitor lịch sử thực thi, số lượng các Host, Inventory, Project,…

1. Khởi tạo Inventory
- Bước 1: Vào mục
Inventories
, chọnAdd inventory
:

- Bước 2: Khai báo tên cho Inventory
MụcVariables
bên dưới được hiểu như các biến được khai báo trong file inventory dưới dạng ini hoặc các biến trong filegroup_vars/all.yml
.

- Bước 3: Tạo group mới

- Bước 4: Khai báo tên cho group
Mục Variables phía dưới là nơi chứa các biến được khai báo cho riêng group đó.

- Bước 5: Tạo host

- Bước 6: Khai báo
Name
được hiểu nhưinventory_hostname
MụcVariables
khai báo biếnansible_host
với giá trị là IP của host đó,ansible_port
với giá trị là port ssh đến host đó.

2. Khởi tạo Credentials
Credentials là nơi lưu trữ các thông tin bảo mật của AWX. Ví dụ: private key để ssh đến các host, tài khoản mật khẩu Github,…
- Bước 1: Tạo Credential mới

- Bước 2: Khai báo tên cho Credential
ChọnType
làMachine
( Credential này sẽ sử dụng để SSH đến các host)
Sao chép Private Key của máy chủ cài đặt AWX tại/root/.ssh/id_rsa
( nếu chưa có hãy dùng lệnhssh-keygen
trên server AWX để tạo key) rồi điền vào mụcSSH Private Key
và lưu lại.

- Bước 3: SSH vào server AWX thực hiện copy key sang các host
ssh-copy-id [email protected]
3. Kiểm tra kết nối
Ta sẽ kiểm tra kết nối đến các host trước khi khởi tạo Playbook.
- Bước 1: Truy cập vào giao diện danh sách các
Groups
Rồi chọnRun Command
Khi thao tác vớiRun Command
sẽ giống như việc bạn sử dụngAnsible Ad-hoc Commands

- Bước 2: Khai báo
Module
sẽ sử dụng
Rồi chọnNext

- Bước 3: Chọn
Credential
đã khởi tạo ở phía trên
ChọnLaunch
để thực thi.

- Kết quả: Sau khi thực hiện chạy sẽ có kết quả thực thi module ping thành công đến host.

4. Khởi tạo Projects
Khái niệm Project trong AWX đơn giản là repository lưu trữ các tài nguyên của Ansible-Playbook (Roles, Playbooks).
Một Project có thể lưu một hoặc nhiều các playbook sử dụng cho một mục đích hoặc đối tượng.
- Bước 1: Tạo Project mới.

- Bước 2: Khai báo tên cho Project
ChọnSource Control Credential Type
Nếu chọn typeManual
ta sẽ thực hiện copy thư mục chứa playbook (ở đây làtest-playbook1
) lab vào thư mục/var/lib/awx/projects
phía dưới server AWX.
Nếu chọn typeGit
, sẽ thực hiện clone repository chứa playbook trên Github về, việc này sẽ tiện lợi hơn vì dễ dàng thay đổi nội dung playbook mà không cần vào server chỉnh sửa.

5. Khởi Tạo Template
- Bước 1: Chọn tạo một Template
Template trong AWX là nơi khai báo bạn sẽ thực thi Playbook như thế nào

- Bước 2: Khai báo các tham số cho Template
Name: Khai báo tên cho Template
Inventory: Khai báo Inventory sẽ sử dụng
Credentials: Khai báo Credential sẽ sử dụng để xác thực tới các node trong Inventory
Project: Chọn Project đã tạo
Playbook: Sau khi chọn Project, mục này sẽ hiển thị các file playbook định dạng YAML trong thư mục. Chọn Playbook sẽ sử dụng cho Template này
Job Type: Chọn Run để thực thi. (còn 1 option nữa có thể lựa chọn là Check, việc này sẽ giống như chạy lệnh ansible-playbook có option –check, sẽ không làm thay đổi khi thực thi module, mà chỉ dự đoán các module nào khi thực thi sẽ khiến thay đổi cho hệ thống).
Variables: nơi khai báo các biến level Extra variables.

- Bước 3: Save lại và chọn Launch để thực thi
Việc thực thi này sẽ giống như bạn thưc hiện lệnh:ansible-playbook -i <inventory> <playbook-file> -e <extra_vars>

- Kiểm tra Playbook đã thực thi thành công!

6. Import Inventory lên AWX
Đối với hệ thống lớn gồm nhiều các máy chủ, các máy chủ đó được định nghĩ ở nhiều group khác nhau trong file Inventory của Ansible, việc dùng giao diện tạo là rất vất vả tốn nhiều thời gian.
Phần này tôi sẽ hướng dẫn Import một file Inventory có sẵn lên AWX.
- Bước 1: Tạo trên giao diện AWX một Inventory như ở phần 1- bước 1 và 2

- Bước 2: Tạo Project ansible playbook dưới máy chủ awx như dưới đây:
mkdir /var/lib/awx/projects/test-playbook2/
cd /var/lib/awx/projects/test-playbook2/
Tạo file inventory:
cat << EOF > inventory-test2.ini
[aws-group]
server-aws ansible_host=192.168.10.194
[azure-group]
server-azure1 ansible_host=192.168.20.188
server-azure2 ansible_host=192.168.20.187
[openstack-group]
server-ops ansible_host=192.168.30.198
EOF

- Bước 3: Truy xuất vào container awx_task
docker exec -it <id_container_awx_task> /bin/bash
- Bước 4: Di chuyển vào thư mục project đã tạo
cd /var/lib/awx/projects/test-playbook2/
- Bước 5: Thực thi lệnh awx-manage để Import Inventory
source: file Inventory muốn import được đặt dưới hệ thống
–inventory-name: Inventory được tạo sẵn trên AWX
awx-manage inventory_import --source=inventory-test2.ini \
--inventory-name="Inventory-Import"
- Kiểm tra sau khi Import thành công:




