1. Module lineinfile.
Module lineinfile
trong Ansible được sử dụng để thay đổi, thêm hoặc xóa một dòng trong một file văn bản trên một host hoặc nhiều host. Module này thường được sử dụng để cấu hình các file cấu hình trên các máy chủ như thêm một dòng vào file cấu hình hoặc chỉnh sửa một giá trị đã có trong file cấu hình. Với module lineinfile
, người dùng có thể xác định một mẫu để tìm kiếm trong file cấu hình và sử dụng các tùy chọn khác nhau để chỉnh sửa nó.
Ta có thể sử dụng module “lineinfile” để thêm dòng vào file ~/.ssh/known_hosts. Ví dụ:
- name: Add GitHub and GitLab to known_hosts file
lineinfile:
path: ~/.ssh/known_hosts
line: "{{ lookup('pipe', 'ssh-keyscan -t rsa github.com') }}"
become: yes
- lineinfile:
path: ~/.ssh/known_hosts
line: "{{ lookup('pipe', 'ssh-keyscan -t rsa gitlab.com') }}"
become: yes
Trong đó, module “lookup” được sử dụng để chạy lệnh “ssh-keyscan” và trả về đầu ra của lệnh đó để sử dụng làm nội dung cho dòng mới trong file ~/.ssh/known_hosts. Các tham số “path” và “line” được sử dụng để chỉ định đường dẫn đến file và nội dung dòng mới. Tham số “become” được sử dụng để đảm bảo rằng quyền đăng nhập với quyền root (sudo) sẽ được sử dụng để thêm nội dung vào file.
2. Module stat.
Module stat
trong Ansible được sử dụng để thu thập thông tin về các thuộc tính của file hoặc thư mục trên một máy chủ đích. Module này cho phép người dùng kiểm tra xem một file hoặc thư mục có tồn tại hay không, kiểm tra quyền truy cập, kiểm tra ngày tạo và sửa đổi lần cuối của file, và nhiều thuộc tính khác. Module stat
thường được sử dụng trong các nhiệm vụ kiểm tra trạng thái của hệ thống trước khi triển khai một tác vụ hoặc trong các nhiệm vụ cần kiểm tra thông tin về các file hoặc thư mục trên một máy chủ đích.
Ví dụ để kiểm tra file có tồn tại hay không, để kiểm tra file /root/.ssh/known_hosts có tồn tại hay không, và nếu không tồn tại thì tạo nó, bạn có thể sử dụng module “file” của Ansible. Ví dụ:
- name: Check if known_hosts file exists
stat:
path: /root/.ssh/known_hosts
register: known_hosts_file
- name: Create known_hosts file if it does not exist
file:
path: /root/.ssh/known_hosts
state: touch
mode: '0600'
when: not known_hosts_file.stat.exists
become: yes
Trong đó, module “stat” được sử dụng để kiểm tra trạng thái của file /root/.ssh/known_hosts và lưu kết quả vào biến “known_hosts_file”. Sau đó, module “file” được sử dụng để tạo file /root/.ssh/known_hosts với quyền truy cập 0600 nếu nó chưa tồn tại. Tham số “when” được sử dụng để chỉ định rằng module “file” chỉ được thực thi khi file chưa tồn tại. Tham số “become” được sử dụng để đảm bảo rằng quyền đăng nhập với quyền root (sudo) sẽ được sử dụng để thêm nội dung vào file.
3. Module command.
Module command
trong ansible là một trong những module cơ bản và phổ biến nhất. Nó cho phép thực thi một command shell trên remote target.
Ví dụ, để kiểm tra phiên bản hệ điều hành trên remote target, ta có thể sử dụng module command
như sau:
- name: Check OS version
command: cat /etc/os-release
register: os_release
- name: Print OS version
debug:
msg: "{{ os_release.stdout }}"
Trong ví dụ trên, command cat /etc/os-release
sẽ được thực thi trên remote target và kết quả đầu ra sẽ được lưu vào biến os_release.stdout
. Ta có thể sử dụng biến này để xử lý kết quả tùy ý, ví dụ như in ra thông báo debug.