Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible-从dict on value中提取记录_Ansible - Fatal编程技术网

Ansible-从dict on value中提取记录

Ansible-从dict on value中提取记录,ansible,Ansible,在ansible中,我有一个目录,如: - { name: "a" } - { name: "b", cond: true } 我想在cond未定义或为false时提取姓名列表(1),在cond为true或未定义时提取姓名列表(2): 怎么做?我没有找到 谢谢您可以使用json\u查询过滤器: --- - hosts: localhost gather_facts: false vars: mylist: - name: a - name: b

在ansible中,我有一个目录,如:

- { name: "a" }
- { name: "b", cond: true }
我想在cond未定义或为false时提取姓名列表(1),在cond为true或未定义时提取姓名列表(2):

怎么做?我没有找到


谢谢

您可以使用
json\u查询
过滤器:

---
- hosts: localhost
  gather_facts: false
  vars:
    mylist:
      - name: a
      - name: b
        cond: true

  tasks:
    - set_fact:
        true_or_unset: "{{ mylist|json_query('[?cond == null || cond].[name]') }}"
        false_or_unset: "{{ mylist|json_query('[?cond == null || !cond].[name]') }}"

    - debug:
        msg:
          true_or_unset: "{{ true_or_unset }}"
          false_or_unset: "{{ false_or_unset }}"
产生:

PLAY [localhost] ******************************************************************************

TASK [set_fact] *******************************************************************************
ok: [localhost]

TASK [debug] **********************************************************************************
ok: [localhost] => {
    "msg": {
        "false_or_unset": [
            [
                "a"
            ]
        ], 
        "true_or_unset": [
            [
                "a"
            ], 
            [
                "b"
            ]
        ]
    }
}

PLAY RECAP ************************************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0   

谢谢,这正是我想要的!
PLAY [localhost] ******************************************************************************

TASK [set_fact] *******************************************************************************
ok: [localhost]

TASK [debug] **********************************************************************************
ok: [localhost] => {
    "msg": {
        "false_or_unset": [
            [
                "a"
            ]
        ], 
        "true_or_unset": [
            [
                "a"
            ], 
            [
                "b"
            ]
        ]
    }
}

PLAY RECAP ************************************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0