Ansible Playbook 中的可选变量覆盖
Optional Variable Override in Ansible Playbook
我正在使用 AWX 作为 运行ner 运行 各种 Ansible 模块的任务。一些 Ansible 模块是第三方模块,如果不分叉模块,我无法控制其参数,出于各种原因,这是不受欢迎的。
AWX 提供 ansible_user
作为我正在使用的一些模块使用的一个变量,我试图通过设置另一个变量 user_override
来允许用户访问某些主机.
我首先想到的是简单地将 ansible_user: "{{ user_override | default(ansible_user) }}"
行添加到任务的参数中,这样就可以了...但是有问题的模块不接受通过参数的凭据。我的下一个想法是向剧本添加一个 vars:
条目,并通过与上面相同的标记在那里提供覆盖。不幸的是,这导致了错误 recursive loop detected in template string
,这一直是我解决这个问题时存在的祸根。
我也试过使用 if/else 语法和中间变量,但似乎都无法解决这个问题。
如何在不分叉 AWX 或相关模块的情况下实现此覆盖功能?
Mods:这与询问简单变量默认设置的一堆问题不同,因为现有问题不在 AWX 的上下文中,或者可以通过简单地使用 default()
或 default(lookup())
来解决.
在这一点上,我很确定我(提问者)试图做的事情只是有时设置一个值来完成,但是我们软件中的一些难以匿名化的限制使得这介于具有挑战性和不是一种选择之间。
针对覆盖用户的特定问题的横向解决方案是 AWX 在 remote_user
和 ansible_user
中设置用户名,然后由 networkcli
使用。所以你可以使用行`remote_user: "{{ override_user | default(ansible_user) }}"。这对一般没有帮助,但确实回答了问题。
我正在使用 AWX 作为 运行ner 运行 各种 Ansible 模块的任务。一些 Ansible 模块是第三方模块,如果不分叉模块,我无法控制其参数,出于各种原因,这是不受欢迎的。
AWX 提供 ansible_user
作为我正在使用的一些模块使用的一个变量,我试图通过设置另一个变量 user_override
来允许用户访问某些主机.
我首先想到的是简单地将 ansible_user: "{{ user_override | default(ansible_user) }}"
行添加到任务的参数中,这样就可以了...但是有问题的模块不接受通过参数的凭据。我的下一个想法是向剧本添加一个 vars:
条目,并通过与上面相同的标记在那里提供覆盖。不幸的是,这导致了错误 recursive loop detected in template string
,这一直是我解决这个问题时存在的祸根。
我也试过使用 if/else 语法和中间变量,但似乎都无法解决这个问题。
如何在不分叉 AWX 或相关模块的情况下实现此覆盖功能?
Mods:这与询问简单变量默认设置的一堆问题不同,因为现有问题不在 AWX 的上下文中,或者可以通过简单地使用 default()
或 default(lookup())
来解决.
在这一点上,我很确定我(提问者)试图做的事情只是有时设置一个值来完成,但是我们软件中的一些难以匿名化的限制使得这介于具有挑战性和不是一种选择之间。
针对覆盖用户的特定问题的横向解决方案是 AWX 在 remote_user
和 ansible_user
中设置用户名,然后由 networkcli
使用。所以你可以使用行`remote_user: "{{ override_user | default(ansible_user) }}"。这对一般没有帮助,但确实回答了问题。