【问题标题】:How to assign ansible variable output to another variable from nested list如何将ansible变量输出分配给嵌套列表中的另一个变量
【发布时间】:2021-04-13 09:22:39
【问题描述】:

我需要帮助来执行 Ansible 任务输出的连接操作。我的输出如下:

{
    "ansible_facts": {
        "server_and_its_status": [
            {
                "name": "server1",
                "session": "enabled"
            },
            {
                "name": "server2",
                "session": "enabled"
            }
        ]
    },
    "changed": false
}

我希望输出格式为:

{ 
"server1": "enabled"
"server2": "enabled"
}

我尝试了很多方法来从我的任务中获取输出,如下所示,但没有运气:

- name: Get the server details
  set_fact:
    server_and_its_status: "{{ jsondata1 | json_query('data.member[].nodes[].{name: name, session: sessionStatus}') | join(':','name','session') }}"

我怎样才能做到这一点?

【问题讨论】:

    标签: ansible jsonpath ansible-facts ansible-template jmespath


    【解决方案1】:

    使用过滤器items2dict,例如

      - set_fact:
          srv_stat: "{{ server_and_its_status|
                        items2dict(key_name='name', value_name='session') }}"
    

    给予

      srv_stat:
        server1: enabled
        server2: enabled
    

    【讨论】:

    • 感谢 Vladimit 提供的完美解决方案。它按预期工作!
    猜你喜欢
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 2021-02-12
    • 1970-01-01
    相关资源
    最近更新 更多