繁体   English   中英

检查是否仅定义了多个Ansible变量之一

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM