You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible Playbook中使用set_fact计算算术百分比值

问题根因

  • 命令行传参语法错误
    你执行ansible-playbook时通过-e传参错误使用了双等号==给unit赋值,实际unit变量没有被正确赋值为GB,导致when判断条件不满足,set_fact步骤直接被跳过。
  • 计算逻辑不符合预期
    你在计算new_advisory_limit_size时使用了|int过滤器,会将浮点型的计算结果强制转为整数,即使条件命中,最终得到的结果也会是1而不是你预期的1.6。
    额外优化点:计算前给new_hard_limit_size加|float过滤器,避免参数以字符串形式传入时出现计算报错。

修复方案

1. 修正执行命令

将传参的双等号改为单等号:

ansible-playbook isi_increase_quota_v1.yml -e "unit=GB new_hard_limit_size=2"

2. 修正Playbook计算逻辑

修改set_fact任务的计算表达式:

- name: Advisory limit size if cap unit is GB
  set_fact:
     new_advisory_limit_size: "{{ new_hard_limit_size | float * 0.8 }}"
  when: unit == "GB"

验证效果

修改完成后重新执行,输出的new_advisory_limit_size将会是预期的1.6。

内容的提问来源于stack exchange,提问作者Suresh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:15:04