Hướng dẫn sử dụng AWX để thực thi Ansible-playbook

Ở 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ọn Add inventory:
  • Bước 2: Khai báo tên cho Inventory
    Mục Variables 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 file group_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ục Variables khai báo biến ansible_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ọn Type 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ệnh ssh-keygen trên server AWX để tạo key) rồi điền vào mục SSH 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ọn Run Command
    Khi thao tác với Run Command sẽ giống như việc bạn sử dụng Ansible Ad-hoc Commands
  • Bước 2: Khai báo Module sẽ sử dụng
    Rồi chọn Next
  • Bước 3: Chọn Credential đã khởi tạo ở phía trên
    Chọn Launch để 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ọn Source Control Credential Type
    Nếu chọn type Manual 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 type Git, 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
Các file biến và Inventory
  • 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:
Các biến đã được đặt tại group_vars/all.yml
Các group đã được tạo
Các biến trong group đã được đặt tại group_vars/openstack-group.yml
Các host đã được tạo
Các biến trong host đã được đặt tại host_vars/server-ops.yml

Leave a Comment