Ansible: Hướng dẫn liệt kê các biến của một host trong Ansible

Ansible: Hướng dẫn liệt kê các biến của một host trong Ansible | Khi bạn sử dụng Ansible cho hoạt động tự động hoá tác vụ, thì sẽ có lúc bạn cần kiểm tra các thông tin biến mà bạn đã gán cho host đó trong file inventory host Ansible hoặc các thông tin facts hữu ích. Việc kiểm tra có thể thực hiện bằng cách liệt kê hiển thị các biến liên quan đến 1 host đang được thực thi, qua đó ta sẽ biết được chính xác thông tin biến để sử dụng trong lúc thiết kế file playbook chạy tác vụ tự động.

Bạn cần lưu ý tách biệt nội dung biến gán cho một host trong file inventory host sẽ khác với các biến quy định trong một playbook không phải dành cho host.

hướng dẫn liệt kê các biến của host trong ansible

Có thể bạn cũng quan tâm chủ đề khác
Hướng dẫn sử dụng lệnh Ansible Ad-hoc cơ bản
Ebook Mastering Ansible PDF

Thao tác liệt kê các biến của một host trong Ansible

Chúng ta sẽ sử dụng module ‘debug‘ để liệt kê hết các biến và facts (nếu có xài facts) liên quan tới một host khi chạy playbook Ansible. Bạn có thể đọc thông tin module debug tại đây: http://docs.ansible.com/ansible/latest/debug_module.html

Kết hợp với đó là truy xuất các biến đặc biệt gọi là ‘magic variable‘: http://docs.ansible.com/ansible/latest/playbooks_variables.html#magic-variables-and-how-to-access-information-about-other-hosts

Dưới đây là 4 biến có thể sử dụng nhiều:

  • hostvars: hostvars cho phép bạn truy cập các biến liên quan đến một host inventory, bao gồm các thông tin facts đã được thu thập từ Ansible về host đó.
  • group_names: group_names là danh sách (mảng) của các group mà host đó đang thuộc về. Thường áp dụng nhiều cho template Jinja2.
  • groups: danh sách các group trong file inventory host. Bạn có thể sử dụng để lấy thông tin các host trong một group.
  • inventory_hostname: là hostname của host được cấu hình trong file inventory host.

Cú pháp module debug

- name: Hien thi toan bo bien/fact lien quan toi host
  debug:
    var: hostvars[inventory_hostname]

Ví dụ:
– Mình có file inventory host với một số thông tin biến khai báo kèm.

# cat hosts.txt
webserver HOSTNAME="load-balance" ansible_host="192.168.1.1" ansible_port="22"

– File playbook với nội dung hiển thị toàn bộ biến liên quan đến host. Ở đây mình tắt thu thập thông tin ‘fact‘ (gather_facts: false) của host để lab kết quả output nhanh và gọn.

# cat playbook.yml
---
- hosts: all
  gather_facts: false
  vars:
    http_port: 80

  tasks:
    - name: print all vars for a host
      debug:
        var: hostvars[inventory_hostname]
      tags: debug_info
# ansible-playbook -i hosts.txt -s playbook.yml --tags debug_info

PLAY [all] ****************************************************************************************************************************************************************************

TASK [print all vars for a host] ******************************************************************************************************************************************************
ok: [webserver] => {
    "hostvars[inventory_hostname]": {
        "HOSTNAME": "load-balance",
        "ansible_check_mode": false,
        "ansible_host": "10.12.166.82",
        "ansible_playbook_python": "/usr/bin/python2",
        "ansible_port": 22,
        "ansible_ssh_private_key_file": "ansible_prov",
        "ansible_user": "root",
        "ansible_version": {
            "full": "2.4.2.0",
            "major": 2,
            "minor": 4,
            "revision": 2,
            "string": "2.4.2.0"
        },
        "group_names": [
            "ungrouped"
        ],
        "groups": {
            "all": [
                "webserver"
            ],
            "ungrouped": [
                "webserver"
            ]
        },
        "inventory_dir": "/usr/app/ansible",
        "inventory_file": "/usr/app/ansible/a",
        "inventory_hostname": "webserver",
        "inventory_hostname_short": "webserver",
        "omit": "__omit_place_holder__6bb9965d0cdc0d73844ddf01a251d410aeaa0823",
        "playbook_dir": "/usr/app/ansible"
    }
}

PLAY RECAP ****************************************************************************************************************************************************************************
webserver                  : ok=1    changed=0    unreachable=0    failed=0

Đơn giản vậy thôi, bạn có thể tận dụng module debug để kiểm tra thông tin biến đã gán cho một host trong Ansible nhằm thiết kế nội dung playbook Ansible chạy chính xác và hiệu quả. Chúc các bạn thành công.

Nguồn: https://cuongquach.com/

Previous articleHướng dẫn cài đặt XRDP trên CentOS 7 để kết nối remote desktop
Next articleAnsible: Các mẹo giúp tăng tốc độ thực thi của Ansible
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !