Thursday, November 21, 2024

[Ansible] Quản lý thư mục

-

Kiểm tra sự tồn tại của thư mục.

Để kiểm tra xem một thư mục có tồn tại hay không trong Ansible, chúng ta có thể sử dụng module stat. Ví dụ:

- name: Check if directory exists
  stat:
    path: /path/to/directory
  register: dir_exists

- name: Do something if directory exists
  debug:
    msg: "Directory exists"
  when: dir_exists.stat.exists

- name: Do something else if directory does not exist
  debug:
    msg: "Directory does not exist"
  when: not dir_exists.stat.exists

Trong ví dụ trên, module stat được sử dụng để kiểm tra xem thư mục /path/to/directory có tồn tại hay không. Kết quả trả về được lưu trữ trong biến dir_exists. Sau đó, chúng ta sử dụng câu lệnh when để kiểm tra giá trị exists của biến dir_exists.stat để quyết định xem thư mục có tồn tại hay không. Nếu thư mục tồn tại, câu lệnh debug sẽ được thực hiện để in ra thông báo “Directory exists”, còn nếu thư mục không tồn tại, câu lệnh debug khác sẽ được thực hiện để in ra thông báo “Directory does not exist”.

Tạo thư mục.

Đây là một task trong playbook Ansible, được đặt tên là “Create directories”. Task này sẽ sử dụng module “file” để tạo các thư mục với các đường dẫn được liệt kê trong một list bao gồm “{{ grafana_home }}/dashboards” và “{{ prometheus_home }}”.

- name: Create directories
  file:
    path: "{{ item }}"
    state: directory
    mode: 0755
  loop:
    - "{{ grafana_home }}/dashboards"
    - "{{ prometheus_home }}"

Ở đây, biến “grafana_home” và “prometheus_home” được định nghĩa trước đó trong playbook với giá trị là “{{ root_Dir }}/grafana” và “{{ root_Dir }}/prometheus/config” tương ứng. Biến “root_Dir” có thể được định nghĩa ở nơi khác trong playbook hoặc được truyền vào playbook khi chạy.

prometheus_home: "{{ root_Dir }}/prometheus/config"
grafana_home: "{{ root_Dir }}/grafana"

Trong module “file”, tham số “path” là đường dẫn của thư mục cần tạo, “state” được sử dụng để xác định trạng thái của thư mục (ở đây là “directory” để tạo thư mục), và “mode” là quyền truy cập được thiết lập cho thư mục được tạo.

Bằng cách sử dụng “loop”, task này sẽ lặp lại module “file” với mỗi đường dẫn được cung cấp trong danh sách. Mục đích của task này là để tạo các thư mục cần thiết cho các ứng dụng Grafana và Prometheus.

Xoá thư mục.

Để xóa một thư mục trong Ansible, ta có thể sử dụng module file với option state=absent. Ví dụ, nếu ta muốn xóa thư mục /home/user/test, ta có thể sử dụng playbook sau:

- name: Delete directory
  hosts: myserver
  tasks:
    - name: Remove directory
      file:
        path: /home/user/test
        state: absent

Trong đó:

  • name: Tên của task.
  • hosts: Tên hoặc pattern của group server mà task sẽ chạy.
  • path: Đường dẫn tới thư mục cần xóa.
  • state: Trạng thái của thư mục. Nếu set bằng absent, thư mục sẽ bị xóa.

Lưu ý rằng khi xóa một thư mục bằng module file, toàn bộ nội dung của thư mục đó cũng sẽ bị xóa theo.

Bạn có thể sử dụng module set_fact kết hợp với stat.

Bạn có thể sử dụng module set_fact để thay đổi giá trị của biến value trong play của mình. Và để kiểm tra sự tồn tại của thư mục /root/hoanghd, bạn có thể sử dụng module stat.

Ví dụ, nếu bạn muốn thay đổi giá trị của biến value thành 0 nếu thư mục /root/hoanghd tồn tại, bạn có thể thực hiện như sau:

- name: Check if /root/hoanghd exists
  stat:
    path: /root/hoanghd
  register: hoanghd_dir

- name: Set value to 0 if /root/hoanghd exists
  set_fact:
    value: 0
  when: hoanghd_dir.stat.exists

Ở đây, ta sử dụng module stat để kiểm tra sự tồn tại của thư mục /root/hoanghd và lưu kết quả vào biến hoanghd_dir. Tiếp đó, ta sử dụng module set_fact để thay đổi giá trị của biến value thành 0 nếu thư mục /root/hoanghd tồn tại, thông qua điều kiện when: hoanghd_dir.stat.exists.

Hoặc 1 ví dụ khác.

Bạn có thể sử dụng block vars để thay đổi giá trị của biến value và sử dụng module set_fact để gán giá trị mới cho biến đó, như sau:

- name: Check if /root/hoanghd exists
  stat:
    path: /root/hoanghd
  register: hoanghd

- name: Set value to /root/hoanghd1 if /root/hoanghd exists
  vars:
    value: /root/hoanghd
  when: hoanghd.stat.exists
  set_fact:
    value: /root/hoanghd1

Trong đó, task đầu tiên sử dụng module stat để kiểm tra xem thư mục /root/hoanghd có tồn tại không, và lưu kết quả vào biến hoanghd. Task thứ hai sử dụng lại block vars và module set_fact để gán giá trị mới cho biến value/root/hoanghd1 nếu thư mục /root/hoanghd tồn tại.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories