Ansible getent模块的循环输出结果解析

Ansible getent module's loop output results parsing

我正在尝试使用 getent 模块检查受管节点中是否存在大量用户,并创建 不存在 的用户列表. 这段代码是:

- getent:
    database: passwd
    key: "{{ item }}"
    fail_key: no
  register: x
  loop:
    - "user1"
    - "user2"

- debug: var=x.results

- set_fact:
    fail_list: "{{ x.results | }}"

我卡在这了。
有什么方法可以将不存在的用户保存为变量 fail_list 作为 list?
在上面的示例中,user1 不存在 并且 user2 存在于受管节点中。
我使用的 ansible 版本是 2.9,调试输出是一个字典列表,如下所示:

    "x.results": [
        {
            "ansible_facts": {
                "getent_passwd": {
                    "user1": null
                }
            },
            "ansible_loop_var": "item",
            "changed": false,
            "failed": false,
            "invocation": {
                "module_args": {
                    "database": "passwd",
                    "fail_key": false,
                    "key": "user1",
                    "service": null,
                    "split": null
                }
            },
            "item": "user1",
            "msg": "One or more supplied key could not be found in the database."
        },
        {
            "ansible_facts": {
                "discovered_interpreter_python": "/usr/bin/python",
                "getent_passwd": {
                    "user2": [
                        "x",
                        "0",
                        "0",
                        "user2",
                        "/home/user2",
                        "/bin/bash"
                    ]
                }
            },
            "ansible_loop_var": "item",
            "changed": false,
            "failed": false,
            "invocation": {
                "module_args": {
                    "database": "passwd",
                    "fail_key": false,
                    "key": "user2",
                    "service": null,
                    "split": null
                }
            },
            "item": "user2"
        },

运行 getent 一次并搜索用户列表。例如

- hosts: localhost
  tasks:
    - getent:
        database: passwd
    - debug:
        msg: User {{ item }} exists.
      loop:
        - root
        - user1
        - user2
      when: item in my_users
      vars:
        my_users: "{{ getent_passwd.keys()|list }}"

给予

ok: [localhost] => (item=root) => {
    "msg": "User root exists."
}
skipping: [localhost] => (item=user1) 
skipping: [localhost] => (item=user2)