[英]Check that only one of several Ansible variables is defined
我想检查是否仅定义了几个Ansible变量之一。 似乎Ansible条件不支持xor。 到目前为止,我发现的最好方法是这样的:
- fail:
msg: "var1 xor var2 xor var3 must be defined"
when: (var1 is defined | ternary(1, 0) + var2 is defined | ternary(1, 0) + var3 is defined | ternary(1, 0)) != 1
字典版本:
(item.get('key1') | ternary(1, 0) + item.get('key2') | ternary(1, 0) + thedict.get('key3') | ternary(1, 0)) != 1
有没有更简单的方法?
这应该算简单一些:
- fail:
msg: "only one of var1, var2, or var3 must be defined"
when: checklist | select() | list | length != 1
vars:
checklist:
- "{{ var1 is defined }}"
- "{{ var2 is defined }}"
- "{{ var3 is defined }}"
从Ansible 2.6开始,恕我直言没有简单的方法。 要测试条件列表 (请参阅组理论测试 ),只有AND ( 列表为all )和OR ( 列表为any )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.