一、任务目标
在 openEuler 系统中,使用 Ansible 实现:
- 检查指定目录所在分区的剩余空间
- 当剩余空间 ≥ 2GB 时,自动在该目录下创建一个标记文件
二、前置准备
- 系统:openEuler(已安装 Ansible)
- 当前用户:
lcy - 工作目录:
/home/lcy/management - 目录权限:用户
lcy对该目录有读写权限
三、步骤 1:确认磁盘空间(手动验证)
运行
# 1. 查看所有分区使用情况(单位:KB)
df -k
# 2. 查看根分区 / 的剩余空间(单位:GB)
df -BG /
你会看到类似输出,确认可用空间 ≥ 2G:
文件系统 1G-块 已用 可用 已用% 挂载点
/dev/mapper/openeuler-root 13G 4G 8G 29% /
四、步骤 2:编写 Ansible Playbook
1. 进入工作目录(你当前已在该目录)
运行
cd /home/lcy/management
2. 创建剧本文件
文件名:disk_ok.yml
yaml
---
- name: 检查磁盘空间并创建文件
hosts: test01
gather_facts: yes
become: false
tasks:
- name: 输出根分区剩余空间(字节)
debug:
msg: "{{ ansible_mounts[0].size_available }}"
- name: 剩余空间 ≥ 2G 时创建文件
file:
path: "/home/lcy/management/disk_ok.txt"
state: touch
mode: '0644'
when: (ansible_mounts[0].size_available / 1024 / 1024 / 1024) >= 2

五、逐行解释
1. 剧本开头
yaml
---
- name: 检查磁盘空间并创建文件
hosts: test01
gather_facts: yes
become: false
hosts: test01:和当前主机test01对应gather_facts: yes:开启事实收集,这样 Ansible 会自动获取ansible_mounts信息become: false:不需要管理员权限,和当前用户lcy一致
2. 获取挂载点信息的任务
yaml
- name: 输出根分区剩余空间(字节)
debug:
msg: "{{ ansible_mounts[0].size_available }}"
ansible_mounts[0]:取第一个挂载点,就是根分区/.size_available:这个挂载点的剩余空间(单位:字节)- 运行后,输出一个数字(比如
36727005184),方便看到磁盘信息
3. 条件创建文件的任务
yaml
- name: 剩余空间 ≥ 2G 时创建文件
file:
path: "/home/lcy/management/disk_ok.txt"
state: touch
mode: '0644'
when: (ansible_mounts[0].size_available / 1024 / 1024 / 1024) >= 2
path: "/home/lcy/management/disk_ok.txt":和当前目录/home/lcy/management完全匹配state: touch:创建文件when:条件里:
-
ansible_mounts[0].size_available:拿到根分区剩余的字节数- 除以
1024*1024*1024,把字节转换成 GB - 判断是否
>= 2,如果满足条件,就创建文件
六、完整执行步骤
1. 进入工作目录
运行
cd /home/lcy/management
2. 创建剧本文件
运行
vim disk_ok.yml
把上面的剧本内容粘贴进去,保存退出。
3. 执行剧本
运行
ansible-playbook disk_ok.yml

4. 验证文件是否创建成功
运行
# 查看文件是否存在
ls -l /home/lcy/management/disk_ok.txt
# 查看文件内容(空文件,用来标记条件满足)
cat /home/lcy/management/disk_ok.txt

七、成功执行的输出参考

changed=1:表示文件已经被成功创建failed=0:没有任何错误