Thursday, November 21, 2024

[Ansible] Module lineinfile, stat và command

-

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.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories