我试图从我从另一个角色调用的命令任务的标准设置一个可靠的事实。你知道吗
角色A:
- name: example command
command: client get -s {{ service }}
register: vars_string
- name: set vars
set_fact: vars={{ vars_string.stdout.split('\n')}}
when:
- vars_string.stdout | length > 0
- name: set vars as facts
set_fact: "{{ item }}"
with_items: "{{ vars }}"
变量输出:
"vars": [
"tst=ansible",
"example=values"
]
角色B:
- debug:
var: tst
角色B的结果:
期望:{ "tst": "ansible" }
现实:{ "tst": "VARIABLE IS NOT DEFINED!" }
我曾尝试将vars放入dict并使用set_fact: "{{ item.key }}" : "{{ item.value }}"
。这返回了相同的结果。你知道吗
我希望能够在以后的角色中通过命令返回的变量名进行调用。有什么想法吗?你知道吗
关于您可能感兴趣的代码片段,有两点:
vars_string.stdout_lines
vars
内置变量,但不管怎样,都不要这样做据我所知,没有支持的语法可以从一个任务中分配任意的顶级主机事实。你知道吗
您有两种选择:将这些变量写到一个文件中,然后使用^{} 读取它们,在其中将它们指定为主机事实,或者接受
set_fact:
想要的方式,并满足于那些存在于hostfacts中已知键下的动态变量我们先展示后者,因为它比较短:
当然,请注意,如果您的键或值中包含不支持JSON的字符,那么欺骗是行不通的,但是如果这个简单的版本不起作用,请问一个后续问题,因为同样的情况下还有很多欺骗
方法是:
相关问题 更多 >
编程相关推荐