Ansible:从json字符串创建变量

时间:2017-07-11 23:07:09

标签: json ansible

在Ansible中,有没有办法将位于JSON变量中的键/值对的动态列表转换为可在Playbook中访问而不使用文件系统的变量名/值?

IE - 如果我在变量中有以下JSON(在我的情况下,已经从URI调用中导入):

{
        "ansible_facts": {
            "list_of_passwords": {
                "ansible_password": "abc123",
                "ansible_user": "user123",
                "blue_server_password": "def456",
                "blue_server_user": "user456"
            }
}

有没有办法将该JSON变量转换为equivelant:

vars:
  ansible_password: abc123
  ansible_user: user123
  blue_server_password: def456
  blue_server_user: user456

通常,我会将变量写入文件,然后使用vars_files:导入它。我们的目标是不将秘密写入文件系统。

1 个答案:

答案 0 :(得分:6)

您可以使用uri module拨打电话,然后注册对变量的响应:

例如:

- uri:
    url: http://www.mocky.io/v2/59667604110000040ec8f5c6
    body_format: json
  register: response
- debug:
    msg: "{{response.json}}"
- set_fact: {"{{ item.key }}":"{{ item.val }}"}
  with_dict: "{{response.json.ansible_facts.list_of_passwords}}"