gpt4 book ai didi

ansible - 在 Ansible 中有条件地定义变量

转载 作者:行者123 更新时间:2023-12-01 19:28:12 25 4
gpt4 key购买 nike

我想在 Ansible playbook 中有条件地定义一个变量,如下所示:

my_var: "{{ 'foo' if my_condition}}"

如果条件未解析为true,我希望变量保持未定义。

如果我尝试执行代码,Ansible 会给出以下错误:

fatal: [foo.local] => {'msg': 'AnsibleUndefinedVariable: One or more undefined
variables: the inline if-expression on line 1 evaluated
to false and no else section was defined.', 'failed': True}

为什么这是一个错误?

完整的案例如下所示:

{role: foo, my_var: "foo"}

如果定义了my_var,则该角色会执行一些特殊操作。在某些情况下,我不希望角色这样做。我可以使用 when: condition,但随后我必须复制整个角色 block 。我还可以使用额外的 bool 变量,但我想要一个无需将“接口(interface)”更改为角色的解决方案。

有什么想法吗?

最佳答案

你可以使用这样的东西:

my_var: "{{ 'foo' if my_condition else '' }}"

如果条件不匹配,则会发生“else”,在这种情况下将为变量设置一个空值。我认为这是一个简短、可读且优雅的解决方案。

关于ansible - 在 Ansible 中有条件地定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31310688/

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