根据磁盘可用空间获取节点IP

2024-04-15

我正在尝试编写一个 Ansible 剧本来检查多个服务器上的磁盘空间。

到目前为止,这是我的 Ansible 剧本:

---
- hosts: all
  become: yes
  tasks:
    - name: Check / freespace
      shell: df -h / | awk '{if($5 > 85)print (IP}'s

基本上我想要做的是,一旦满足 shell 条件,我想要检索所有超过 85% 的服务器的 IP。


我建议使用Ansible 事实 https://docs.ansible.com/ansible/latest/user_guide/playbooks_vars_facts.html ansible_mounts获取已安装设备的列表及其详细信息。

这个事实将告诉我们:

  • 总空间在size_total
  • 中的自由空间size_available

因此我们可以通过以下方式获取可用空间的百分比:

size_available / size_total x 100 = free space

如果可用空间少于 15%,下面的示例任务将显示设备:

    # Use this task if "gather_facts" is disabled
    - name: collect ansible_mounts facts
      setup:
        filter: ansible_mounts

    - name: Show Devices having less than 15% free space
      debug:
        msg: "Device with > 85% use: {{ item.device }}"
      when: item.size_available / item.size_total * 100 < 15
      loop: "{{ ansible_mounts }}"
      loop_control:
        label: "{{ item.mount }}"

Update:

如果您想过滤掉本地设备安装,您可以使用regex_search过滤器喜欢not item.device | regex_search('^/dev') in the when另外条件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据磁盘可用空间获取节点IP 的相关文章

  • 使用ansible复制本地文件(如果存在)

    我正在一个项目中工作 我们使用 ansible 来创建部署服务器集群 我必须实现的任务之一是将本地文件复制到远程主机 前提是该文件本地存在 现在我正在尝试用这个来解决这个问题 hosts 127 0 0 1 connection local
  • Ansible,如何在单个文件中加入多个数组?

    使用它作为我的样板 https github com modcloth ansible role modcloth sumologic collector https github com modcloth ansible role mod
  • 根据AWS标签分配ansible变量

    我正在尝试找出一种根据 AWS 中的标签在 Ansible 中分配变量的方法 我正在尝试ec2 remote tags但它返回的信息比我需要的多得多 似乎应该有一种更简单的方法来做到这一点 但我只是没有想到 例如 如果我有一个名为funct
  • Ansible 截断连接字符串

    我正在 Ansible 中生成一个 yaml 模板 并尝试截断两个连接的字符串 这里以下代码不起作用 因为连接没有正确地通过管道传输到 regex replace 中 我只想要前 n 个字符 本例中为前 10 个字符 通常我可以将这两个组合
  • Ansible/Jinja2 - 映射列表中的嵌套键

    当映射嵌套变量列表中的属性时 我无法检索其键 我想从下面检索 tls cert file 的密钥强调文字变量 vault config listener tcp address 0 0 0 0 8200 tls cert file etc
  • Ansible 将变量传递给角色

    我想根据环境和主机名创建文件夹 用户和组 我的剧本将环境和主机名传递给角色 该角色应该从 defaults main yml 文件中选择正确的数据 剧本 roles role myrole environment xxx hostname
  • Ansible - 如何将 selectattr 与不同键的 yaml 一起使用

    我正在努力尝试做一件简单的事情 我认为这应该很容易 解析 yaml 并过滤 Ansible 中的某些键 我的 yaml 文件如下所示 vm vm1 ip 10 10 10 1 vm vm2 ip 10 10 10 2 test vm som
  • 在 ansible shell 命令中使用 {{ 和 }}

    我的剧本里有这个 name Get facts about containers shell docker ps f name jenkins format raw Names endraw register container 请注意 我
  • Ansible add_host 不起作用,它正在跳过主机

    我正在使用 Ansible 创建一个新的 EC2 实例并尝试在其上安装一些软件包 问题是我正在向主机组添加新主机 但我在另一个游戏中看不到该主机组 当到达 配置 EC2 实例 时 它会显示 PLAY 配置EC2实例 跳过 没有匹配的主机 这
  • ansible if else 构造

    这是我的 if else Ansible 逻辑 name Check certs exist stat path etc letsencrypt live rootDomain fullchain pem register st inclu
  • ssl:身份验证方法 ssl 需要密码

    在尝试通过 Ansible 连接到 Windows 虚拟机时 我遇到了以下问题 TASK setup lt 10 xx xx xx gt ESTABLISH WINRM CONNECTION FOR USER winad admin on
  • 如何防止 Ansible 对 JSON 重新排序?

    给定以下剧本 从随机数据中获取一些数据网络服务 http jsonplaceholder typicode com users name sorting json hosts localhost tasks name uri url htt
  • 如何根据任务或任务集切换用户?

    我的 ansible 手册中反复出现的主题是我经常必须使用 sudo 权限执行命令 sudo yes 因为我想为某个用户执行此操作 理想情况下 我宁愿使用 sudo 切换到该用户并正常执行命令 因为这样我就不必执行通常的后命令清理工作 例如
  • 即使在开始时已经输入,Ansible 同步也会提示密码

    Ansible v1 6 5 的同步模块提示输入密码 Enter passphrase for key 尽管我一开始就已经输入了运行剧本 知道为什么吗 我使用以下选项运行我的剧本 u myuser ask sudo pass private
  • Ansible:全局模板文件夹?

    谷歌搜索找不到任何东西 有group vars 全部 对于变量 有类似的模板吗 我想在多个角色中使用一些模板 您可以将全局模板放入templatesAnsible 布局顶层目录 与group vars 顺便说一句 全局文件也是如此 file
  • Ansible with_items 与循环

    使用有什么区别带有项目 https docs ansible com ansible 2 4 playbooks loops html vs loops http docs ansible com ansible latest user g
  • 安西布尔。覆盖单个字典键[重复]

    这个问题在这里已经有答案了 我使用 ansible 来管理生产和 vagrant box 的配置 我有带有默认值的文件 组变量 全部 env prod wwwuser www data db root pwd root pwd pdo dr
  • 如何从用户定义的 ansible.cfg 设置 ansible_config 变量

    我有一个目录结构 在其中保存我的剧本 如下所示 home monk Ansible work ansible cfg playbook dir 1 playbook 1 yml playbook dir 2 playbook 2 yml p
  • 使用 Python API 2.0.0.1 运行 Ansible Playbook

    安塞布尔版本 2 0 0 1 我现在已经四处寻找了很多 我发现的大多数文档要么不完整 要么已弃用 这篇文章适用于1 8 4版本 即 https stackoverflow com questions 27590039 running ans
  • 在 Ansible 中检查已安装的 yum 包/rpm 版本并使用它的最佳方法

    我已经在 CentOS 7 上尝试使用 Ansible 2 0 0 2 我试图从已安装的 rpm yum 软件包中获取版本 但在运行脚本时遇到警告消息 安塞布尔脚本 name Get version of RPM shell yum lis

随机推荐