Sử dụng các module của Ansible



 Ansible module là một khối/đơn vị xử lý của một task (task thì sẽ thêm các biến, tham số vào nữa để việc xử lý trên remote server được mềm dẻo hơn)

Module sử dụng được cả cho Ad-Hoc và Playbook

Dưới đây lại một lần nữa là ví dụ đơn giản về việc sử dụng module shell

ansible-playbook -i inventory thisfile.yml---
- hosts: group1
  gather_facts: false
  tasks:
    - shell: ls -la
      register: output
    - debug:
        msg: "This is output of ls-la: {{ output.stdout_lines }}"
ansible -i inventory -m shell -a "ls -la"

Hay việc sử dụng module copy cũng thế

ansible-playbook -i inventory thatfile.yml---
- hosts: group1
  gather_facts: false
  tasks:
    - name: Copy file
      copy:
        src: /tmp/foo.conf
        dest: /srv/foo.conf
ansible -i inventory -m copy -a "src=/tmp/foo.conf dest=/srv/foo.conf"

Các module cơ bản thường dùng

Dưới đây là 5 module sẽ dùng rất thường xuyên khi sử dụng Ansible phục vụ cho các việc như: Chạy một câu lệnh, đẩy một file cài hay file cấu hình lên server, cài đặt một gói, restart một service gì đó hay hiển thị ra màn hình một biến trong quá trình chạy,...

  • debug: Kiểu như hàm print trong các ngôn ngữ lập trình
  • shell/command: Chạy các câu lệnh trên trên server, lựa chọn tốt nhất cho hầu hết các case là shell (vì command module sẽ không được thực thi thông qua shell trên server)
  • copy: Đẩy một file từ local lên remote server
  • package: Quản lý các gói trên các server linux (Có thể sử dụng yum hoặc apt module thay thế nếu như biết rõ về OS)
  • service: Quản lý các services (disable/enable, start/stop/restart)

Last but not least, cuối cùng nhưng không kém phần long trọng, đó chính là danh sách toàn bộ các module hiện nay của Ansible hỗ trợ:

https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html

  • Khi không nhớ các parameter của module, hãy vào link trên để tìm module và xem lại ví dụ
  • Khi không nhớ các giá trị mặc định của các parameter, hãy vào link trên và xem bảng Parameters
  • Khi muốn xem Ansible đã có sẵn cái gì rồi mà mình mỳ ăn liền được đỡ phải bào chế câu lệnh bash shell chẳng hạn, lại truy cập link trên và tìm kiếm theo tên
  • Với các remote server là windows, truy cập như trên và tìm kiếm theo tiền tố win_

Tới đây, hi vọng là các bạn đã hoàn thành việc thực hành các module trên. Tuy nhiên, có thể các bạn đã nhận ra rằng có rất nhiều file cấu hình cần được chỉnh sửa theo IP/Hostname của từng server, các bài tiếp theo về Ansible sẽ chia sẻ tới các bạn về cách sử dụng Jinja2 template cũng như Inventory trong Ansible để tự động generate cấu hình cho từng host!

Comments