Ansible 从寄存器变量创建dict
我在尝试使用以下行格式化脚本输出时遇到问题:Ansible 从寄存器变量创建dict,ansible,Ansible,我在尝试使用以下行格式化脚本输出时遇到问题: "key1:val1" 将其注册到var中,该var给出: "var.stdout_lines": [ "key1:val1", ] And I would like to set_fact from this var to a dictionary like : - name: 'set dict fact' set_fact: dict: "{{dict|combine(var.stdout_lines)}}" 我有一个出口,比
"key1:val1"
将其注册到var中,该var给出:
"var.stdout_lines": [ "key1:val1", ]
And I would like to set_fact from this var to a dictionary like :
- name: 'set dict fact'
set_fact:
dict: "{{dict|combine(var.stdout_lines)}}"
我有一个出口,比如:
combine expects dictionaries, got Undefined"
是否有人知道如何正确格式化我的脚本输出,以便通过dict正确组合
THKS这里有多个问题:
dict
未初始化,因此它是未定义的
,当您尝试将其与某些内容组合时,它不起作用。第一步是使用默认过滤器:
dict: "{{ dict| default({}) | combine(var.stdout_lines) }}"
var.stdout\u行
是一个列表,而不是dict,因此您会得到另一个错误:“|组合字典,得到[u'key1:val1']”“
时,它不会处理这种情况
- set_fact:
dict: "{{ ('{' + (var.stdout_lines | map('regex_replace', '(.*):(.*)', '\"\\1\":\"\\2\"') | join(',')) + '}') | from_json }}"