[英]Ansible: set_fact on a json object
我在Ansible變量( my_var
)中有一個json對象,該對象包含類似於以下內容的值:
{
"Enabled": "true"
"SomeOtherVariable": "value"
}
我想在my_var
修改Enabled
的值,並嘗試了以下方法:
set_fact:
my_var.Enabled: false
和
set_fact:
my_var['Enabled']: false
兩者都給出類似於以下內容的錯誤:
“變量名'my_var.Enabled'無效。變量必須以字母或下划線字符開頭,並且只能包含字母,數字和下划線。”
可以使用set_fact完成此操作,還是有其他方法可以實現此目的?
這是我的解決方案-可能不是最雄辯的:
- set_fact:
my_temp_enabled_var: '{ "Enabled": "false" }'
- set_fact:
my_temp_enabled_var: "{{ my_temp_enabled_var | from_json }}"
- set_fact:
my_var: "{{ my_var | combine(my_temp_enabled_var) }}"
您可以使用Jinja2模板創建新字典:
---
- hosts: localhost
gather_facts: no
connection: local
vars:
my_var:
Enabled: true
SomeOtherVariable: value
tasks:
- debug:
var: my_var
- set_fact:
my_var: '{ "Enabled": false, "SomeOtherVariable": "{{ my_var.SomeOtherVariable }}" }'
- debug:
var: my_var
結果:
TASK [debug] *******************************************************************
ok: [localhost] => {
"my_var": {
"Enabled": true,
"SomeOtherVariable": "value"
}
}
TASK [set_fact] ****************************************************************
ok: [localhost]
TASK [debug] *******************************************************************
ok: [localhost] => {
"my_var": {
"Enabled": false,
"SomeOtherVariable": "value"
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.