我在stdout寄存器输出中有以下输出:
"服务器1,正在运行的服务器2,正在运行\n服务器3,未激活\n服务器4,未激活">
我只想创建一个未激活服务器的列表:
vmoff:
- name: server3
- name: server4
此外,我在stdout中有以下输出:
"服务器1,0.5\n服务器2,0.7\n服务器3,1.0\n服务器4,0.5\n">
我想变成以下内容:
vmlist:
- name: server1
proc: 0.5
- name: server2
proc: 0.7
- name: server3
proc: 1.0
- name: server4
proc: 0.5
给定已注册的stdout
reg:
stdout: server1,Runningnserver2,Runningnserver3,Not Activatednserver4,Not Activated
创建字典
vm_all: "{{ dict(reg.stdout|
split('\n')|
select()|
map('split', ',')|
list) }}"
给出
vm_all:
server1: Running
server2: Running
server3: Not Activated
server4: Not Activated
现在,选择未激活的服务器并映射属性名称
vm_not_activated: "{{ vm_all|dict2items(key_name='name', value_name='status')|
selectattr('status', 'eq', 'Not Activated')|
map(attribute='name')|
list }}"
给出列表
vm_not_activated:
- server3
- server4
如果您需要字典,请将过滤器community.general.dict_kv添加到管道
vm_not_activated: "{{ vm_all|dict2items(key_name='name', value_name='status')|
selectattr('status', 'eq', 'Not Activated')|
map(attribute='name')|
map('community.general.dict_kv', 'name')|
list }}"
给出
vm_not_activated:
- name: server3
- name: server4
类似地,给定已注册的标准输出
reg:
stdout: server1,0.5nserver2,0.7nserver3,1.0nserver4,0.5n
创建字典
vmdict: "{{ dict(reg.stdout|
split('\n')|
select()|
map('split', ',')|
list) }}"
给出
vmdict:
server1: '0.5'
server2: '0.7'
server3: '1.0'
server4: '0.5'
现在,创建列表
vmlist: "{{ vmdict|dict2items(key_name='name', value_name='proc') }}"
给出
vmlist:
- name: server1
proc: '0.5'
- name: server2
proc: '0.7'
- name: server3
proc: '1.0'
- name: server4
proc: '0.5'