如何在Ansible中强制校验变量为3位字符或指定范围数字?
Ansible变量强制校验实现方案
你可以在执行业务任务前添加ansible.builtin.assert校验任务,不满足规则时会直接终止剧本运行,实现强制校验的效果,校验规则和你原有默认值逻辑保持兼容。
完整示例代码
# 变量校验前置任务 - name: Validate SID and instance parameters ansible.builtin.assert: that: # 校验SID为3位字符,兼容原有默认值和转大写逻辑 - (sid | default('HDB') | upper) | length == 3 # 校验instance为两位数字格式 - instance | default('01') is regex('^[0-9]{2}$') # 校验instance数值范围在1-99,排除00的非法情况 - 1 <= (instance | default('01') | int) <= 99 fail_msg: "参数校验失败:sid必须为3位字符,instance必须为01~99之间的两位数字" success_msg: "SID和instance参数校验通过" # 原有hana查询任务 - name: Run multiple queries community.general.hana_query: sid: "{{ sid | default('HDB') | upper }}" instance: "{{ instance | default('01') }}"
补充说明
- 如果你要求两个变量必须手动传入、不允许使用默认值,可在
that校验规则中额外添加- sid is defined、- instance is defined两项,同时去掉规则中的default逻辑即可。 - 校验失败时会直接输出你定义的
fail_msg提示信息,无需额外加调试任务。
内容的提问来源于stack exchange,提问作者Andrew Ramnikov
相关产品推荐
相关产品推荐

