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:没有任何错误

相关推荐
Flynt1 小时前
axios 被投毒半年后,我把 npm 的"安全防线"实测了一遍:最信任的 SHA512 是安慰剂
前端·npm·node.js
excel2 小时前
Base62 和 Base64 有什么区别?
前端
风骏时光牛马3 小时前
大模型底层架构与AI源码深度剖析
前端
掘金挖土4 小时前
前端手摸手跑路之 AI 应用开发(九)
前端·后端
中文呀6 小时前
三维 GIS 离线缓存实战:逆向 CesiumOfflineCache,并亲手为它补上"自动更新"能力
前端
前进前进前进7 小时前
TRAE 全链路实战:做了一个警示牌一键生成器:纯 Canvas、单文件、零依赖
前端
小万7428 小时前
God‘s Eye View 深度解析:15 路公开信号 + CesiumJS 的浏览器级 OSINT 控制台,60 帧渲染的“真实间谍卫星模拟器”
前端
IT星宿8 小时前
浏览器标签页全是一个图标:我用名字哈希生成 favicon,让每个项目都有身份标识
前端
全栈项目管理程序猿8 小时前
ArcGIS JS 基础教程(32):体元系列 - VoxelSlice 体元切片
前端·javascript