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.
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/