[英]Ansible - modify variable.stdout subfield
我有一個ansible shell任務的輸出,它是一個json:
stdout: {
"override_attributes": {
"prod": {
"hosts": [
"10.100.0.150",
"10.100.0.151"
]
}}}
我想修改IP,如下所示:
set_fact: variable.stdout.override_attributes.prod.hosts=groups['GROUP_A']
之后,我希望看到完整的json修改后的variable.stdout
這可能嗎?
combine
過濾器有一個丑陋的解決方案:
---
- hosts: localhost
vars:
stdout: {
"override_attributes": {
"prod": {
"hosts": [
"10.100.0.150",
"10.100.0.151"
],
"users": [
"user1",
"user2"
]
}}}
new_hosts:
- host_name1
- host_name2
tasks:
# original stdout
- debug: var=stdout
# update override_attributes.prod.hosts with new_hosts
- set_fact:
stdout: "{{stdout | combine({\"override_attributes\":{\"prod\":{\"hosts\":new_hosts} } }, recursive=True )}}"
# updated stdout, users list unchanged
- debug: var=stdout
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.