gpt4 book ai didi

linux - 如何在ansible中使用断言模块比较整数?

转载 作者:太空宇宙 更新时间:2023-11-04 11:51:56 26 4
gpt4 key购买 nike

我正在尝试检查引导文件系统空间,如果它超过 100 MB,则使用 ansible assert 模块传递条件。但条件检查无法正常运行

我尝试将字符串值转换为整数并进行比较,但条件检查仍然存在一些问题

- hosts: prod_gateways
gather_facts: True
become: True
tasks:

- name: Checking space
assert:
that:
- "[[ {{item.size_available|int}} > 104857600 ]]"
when: item.mount == "/boot"
with_items: "{{ ansible_mounts }}"
register: disk_free

- name: Fail when disk space needs attention
fail:
msg: "pda_output=[[ boot space is less then 100mb ]]"
when: disk_free is failed

预期结果: 如果我将 104857600 更改为 1048576000(1000 mb),条件应该会失败,因为可用空间有 873 mb。但条件仍然通过

实际结果:

  TASK [Checking space] *******************************************************************************************************************
skipping: [140.83.115.208] => (item={u'block_used': 2022411, u'uuid': u'ab881282-6114-4296-b1ae-12a21e40cbdb', u'size_total': 21003628544, u'block_total': 5127839, u'mount': u'/', u'block_available': 3105428, u'size_available': 12719833088, u'fstype': u'ext4', u'inode_total': 1310720, u'inode_available': 1134075, u'device': u'/dev/mapper/vg_gateway-lv_root', u'inode_used': 176645, u'block_size': 4096, u'options': u'rw'})
ok: [140.83.115.208] => (item={u'block_used': 40877, u'uuid': u'91564fc4-0879-4459-a3fe-ce6686f228f2', u'size_total': 1040015360, u'block_total': 253910, u'mount': u'/boot', u'block_available': 213033, u'size_available': 872583168, u'fstype': u'ext4', u'inode_total': 65536, u'inode_available': 65481, u'device': u'/dev/md0', u'inode_used': 55, u'block_size': 4096, u'options': u'rw'}) => {
"changed": false,
"item": {
"block_available": 213033,
"block_size": 4096,
"block_total": 253910,
"block_used": 40877,
"device": "/dev/md0",
"fstype": "ext4",
"inode_available": 65481,
"inode_total": 65536,
"inode_used": 55,
"mount": "/boot",
"options": "rw",
"size_available": 872583168,
"size_total": 1040015360,
"uuid": "91564fc4-0879-4459-a3fe-ce6686f228f2"
},
"msg": "All assertions passed"
}
skipping: [140.83.115.208] => (item={u'block_used': 7436106, u'uuid': u'1824f3b5-7c7f-48dc-88fc-da40e02d72df', u'size_total': 33686405120, u'block_total': 8224220, u'mount': u'/home', u'block_available': 788114, u'size_available': 3228114944, u'fstype': u'ext4', u'inode_total': 2097152, u'inode_available': 2093635, u'device': u'/dev/mapper/vg_gateway-lv_home', u'inode_used': 3517, u'block_size': 4096, u'options': u'rw'})
skipping: [140.83.115.208] => (item={u'block_used': 68527765, u'uuid': u'4cb2e3ce-ca82-40b7-9a32-865532612a1f', u'size_total': 352868540416, u'block_total': 86149546, u'mount': u'/orahome', u'block_available': 17621781, u'size_available': 72178814976, u'fstype': u'ext4', u'inode_total': 21889024, u'inode_available': 21472344, u'device': u'/dev/mapper/vg_gateway-lv_orahome', u'inode_used': 416680, u'block_size': 4096, u'options': u'rw'})
skipping: [140.83.115.208] => (item={u'block_used': 7674455, u'uuid': u'201caae6-e6ba-467e-bda9-7419c7268223', u'size_total': 79132893184, u'block_total': 19319554, u'mount': u'/stage', u'block_available': 11645099, u'size_available': 47698325504, u'fstype': u'ext4', u'inode_total': 4915200, u'inode_available': 4911867, u'device': u'/dev/mapper/vg_gateway-lv_stage', u'inode_used': 3333, u'block_size': 4096, u'options': u'rw'})
skipping: [140.83.115.208] => (item={u'block_used': 5176863, u'uuid': u'4a53a162-9b70-4511-9461-26330a82c465', u'size_total': 79132893184, u'block_total': 19319554, u'mount': u'/var', u'block_available': 14142691, u'size_available': 57928462336, u'fstype': u'ext4', u'inode_total': 4915200, u'inode_available': 4873288, u'device': u'/dev/mapper/vg_gateway-lv_var', u'inode_used': 41912, u'block_size': 4096, u'options': u'rw'})
skipping: [140.83.115.208] => (item={u'block_used': 27504630, u'uuid': u'97229ed4-108c-44eb-bef8-e1afd61c30c2', u'size_total': 285227425792, u'block_total': 69635602, u'mount': u'/orabackup', u'block_available': 42130972, u'size_available': 172568461312, u'fstype': u'ext4', u'inode_total': 17694720, u'inode_available': 17694608, u'device': u'/dev/mapper/vg_backup-lv_orabackup', u'inode_used': 112, u'block_size': 4096, u'options': u'rw'})

TASK [Fail when disk space needs attention] *********************************************************************************************
skipping: [140.83.115.208]

最佳答案

您尝试使用的 [[...]] 语法是什么?你需要去掉它和 Jinja 模板标记,这会给你:

- name: Checking space
assert:
that:
- item.size_available|int > 104857600
when: item.mount == "/boot"
with_items: "{{ ansible_mounts }}"
register: disk_free

您可以找到其他 examples in the documentation .

它现在总是通过的原因是你在 bool 上下文中评估一个非空列表,它总是为“真”。您实际上拥有:

assert:
that: "[[]]"

...这是一个包含单个项目的列表(在您的示例中,内部列表可能包含一个 bool 值——您的 x > y 比较的结果——但是对行为没有任何影响)。

关于linux - 如何在ansible中使用断言模块比较整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55833617/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com