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ằngabsent
, 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
là /root/hoanghd1
nếu thư mục /root/hoanghd
tồn tại.