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

相关推荐
星星在线26 分钟前
MusicFree:一个「All in One」的个人音乐服务器,让听歌回归简单
前端·后端
IT_陈寒1 小时前
Redis的SETNX并发问题让我加了三天班
前端·人工智能·后端
demo007x2 小时前
Docling 文档转换以及技术架构分析
前端·后端·程序员
京东云开发者2 小时前
京东市民服务又“上新”!这次是黑龙江“龙易办”
前端
袋鱼不重3 小时前
我的神奇同事,AI 用多了居然写了个 Open In Codex
前端·后端·ai编程
Fireworks3 小时前
深入vue3源码解读 -- 1、响应式的基础概念
前端
程序员黑豆3 小时前
JDK 下载安装与配置详细教程
java·前端·ai编程
hunterandroid4 小时前
文件存储:内部存储与外部存储
前端
NorBugs4 小时前
飞机大战 Low 版 (Made in AI)
前端
angerdream5 小时前
Android手把手编写儿童手机远程监控App之agentweb如何实现全屏
前端