将Linux服务器与已安装的ansible 2.7.5版本配合使用。
我试图根据其索引在列表中插入值,但是无法这样做。
任何人都可以提出任何解决方案的建议。
谢谢。
到目前为止,我正在尝试使用以下代码。
状态变量中的字典值如下所示。
[{u'CACHE01': True}, {u'CACHE07': False}, {u'CACHE06': False}, {u'CACHE03': True}, {u'CACHE05': False}, {u'CACHE02': True}]
{% set T = 0 %}
{% set F = 1 %}
{% set b = [] %}
{% for i in status %}
{% for k,v in i.items() %}
{% if v == True %}
{{ b.insert(T,k) }}
{% set T = T+2 %}
{% else %}
{{ b.insert(F,k) }}
{% set F = F+2 %}
{% else %}
{% endif %}
{% endfor %}
{% endfor %}
结果,我得到的是:
[CACHE01,CACHE03,CACHE02,CACHE07,CACHE06,CACHE05]
我希望获得以下结果。
“ b”列表应包含类似以下的值。列表应包含True,False,True,False-等值。
[CACHE01,CACHE07,CACHE03,CACHE06,CACHE02,CACHE05]
答案 0 :(得分:0)
变量状态是一个列表,必须进行迭代。下面的剧本
- hosts: localhost
vars:
status:
- CACHE01: True
- CACHE07: False
- CACHE06: False
- CACHE03: True
- CACHE05: False
- CACHE02: True
tasks:
- set_fact:
my_keys: "{{ my_keys|default([]) + item.keys() }}"
loop: "{{ status }}"
- debug:
var: my_keys
给予:
"my_keys": [
"CACHE01",
"CACHE07",
"CACHE06",
"CACHE03",
"CACHE05",
"CACHE02"
]
获取值列表。将 item.keys()交换为 item.values()
tasks:
- set_fact:
my_values: "{{ my_values|default([]) + item.values() }}"
loop: "{{ status }}"
- debug:
var: my_values
奖金:
要选择积极状态,请使用过滤器bool_and
$ cat filter_plugins/bool_utils.py
def bool_and(h):
return all(h)
def bool_or(h):
return any(h)
class FilterModule(object):
''' utility filters for operating on list of Boolean '''
def filters(self):
return {
'bool_and' : bool_and
,'bool_or' : bool_or
}
下面的任务
- set_fact:
my_keys1: "{{ my_keys1|default([]) + item.keys() }}"
loop: "{{ status }}"
when: item.values()|bool_and
- debug:
var: my_keys1
给予:
"my_keys1": [
"CACHE01",
"CACHE03",
"CACHE02"
]