ansible实战:「磁盘空间 ≥ 2G 时自动创建文件」

一、任务目标

在 openEuler 系统中,使用 Ansible 实现:

  1. 检查指定目录所在分区的剩余空间
  2. 当剩余空间 ≥ 2GB 时,自动在该目录下创建一个标记文件

二、前置准备

  1. 系统:openEuler(已安装 Ansible)
  2. 当前用户:lcy
  3. 工作目录:/home/lcy/management
  4. 目录权限:用户 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: 条件里:
    1. ansible_mounts[0].size_available:拿到根分区剩余的字节数
    2. 除以 1024*1024*1024,把字节转换成 GB
    3. 判断是否 >= 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:没有任何错误

相关推荐
JeffongTan13 分钟前
在LWC中镶嵌VF Page获取用户IP
前端·javascript·salesforce
陆枫Larry3 小时前
Astro 是什么
前端
是立不是利4 小时前
写给设计师的 CSS 博客美学指南
前端·css
默_笙5 小时前
🏝 Docker 就是"房地产开发":从施工图纸到小区物业的容器化指南
前端·javascript
计算机魔术师5 小时前
Rohan Paul 谈用时间跨度衡量智能体能力,并引用 OpenAI 自动化研究实习生里程碑
前端
kyriewen5 小时前
我手写了个极简版 React Router——才搞懂 v6 为什么砍了这么多 API
前端·javascript·程序员
a1117765 小时前
Shirone 二次元博客主题 开源
前端·开源
IT_陈寒5 小时前
Python的切片赋值把我坑惨了,这不是bug是特性
前端·人工智能·后端
掘金酱5 小时前
【社区公告】致每一位掘友:关于这次调整, 想再说几句
前端·人工智能
CoderLiu5 小时前
程序化工具调用(PTC)与动态工作流引擎:深入大模型工具调用的架构演进与实践
前端·人工智能·后端