拆分字典无法正常使用。 Ansible- 2.5.15
有人可以提供任何解决方案吗?
我试图从字典中获取值,但无法获取值。
尝试的代码:
- hosts: localhost
connection: local
tasks:
- set_fact:
some_module: "{{ item.split(': ')[1] }}"
with_items:
- git: true
- gradle: false
得到以下错误:
The task includes an option with an undefined variable. The error was: 'dict object' has no attribute 'split'
预期结果如下:
[是,否]
答案 0 :(得分:1)
您可以将其作为哈希图处理并获取键或值:
- hosts: localhost
connection: local
tasks:
- set_fact:
some_module: "{{ item.values }}"
with_items:
- {git: true}
- {gradle: false}
答案 1 :(得分:0)
您的数据不是字典。这是一个列表
- git: true
- gradle: false
字典在下面
git: true
gradle: false
首先根据数据创建一个字典,然后使用dict2items过滤器。
下面的戏
- hosts: localhost
vars:
data1:
- {git: true}
- {gradle: false}
data2: {}
tasks:
- set_fact:
data2: "{{ data2|combine(item) }}"
loop: "{{ data1 }}"
- debug:
msg: "{{ data2|dict2items|json_query('[].value') }}"
给予:
"msg": [
true,
false
]
从Ansible 2.6开始,dict2items 可用。在旧版本中,使用简单的 filter_plugin hash_utils.py
$ cat filter_plugins/hash_utils.py
def hash_to_tuples(h):
return h.items()
def hash_keys(h):
return h.keys()
def hash_values(h):
return h.values()
class FilterModule(object):
''' utility filters for operating on hashes '''
def filters(self):
return {
'hash_to_tuples' : hash_to_tuples
,'hash_keys' : hash_keys
,'hash_values' : hash_values
}
下面的任务
- debug:
msg: "{{ data2|hash_values }}"
与上面具有 dict2items 的构造具有相同的结果。您可能想尝试其他过滤器,并查看有关 filter_plugin 的详细信息。