Ansible:json 对象上的 set_fact

Wil*_*ich 2 python json ansible ansible-2.x

我在 Ansible 变量 ( my_var) 中有一个 json 对象,其中包含类似于以下内容的值:

{
    "Enabled": "true"
    "SomeOtherVariable": "value"
}
Run Code Online (Sandbox Code Playgroud)

我想修改Enabledin的值my_var并尝试了以下操作:

set_fact:
  my_var.Enabled: false
Run Code Online (Sandbox Code Playgroud)

set_fact:
  my_var['Enabled']: false
Run Code Online (Sandbox Code Playgroud)

这两者都会给出类似于以下内容的错误:

“变量名 'my_var.Enabled' 无效。变量必须以字母或下划线字符开头,并且只能包含字母、数字和下划线。”

这可以通过 set_fact 完成还是有其他方法可以实现?

Wil*_*ich 6

这是我的解决方案 - 可能不是最有说服力的:

- 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) }}"
Run Code Online (Sandbox Code Playgroud)

  • 这可以缩短为单个任务 `my_var: '{{ my_var | 结合({“启用”:假})}}'`。你不需要使用`from_json`。 (2认同)