首页 > 解决方案 > ansible extrct uid form ldap_search 并用于制作 ldap 过滤器

问题描述

你好,我在 ldpa_search 后得到了这个结果

 {
    "msg": {
        "changed": false,
        "failed": false,
        "results": [
            {    
                "cn": "workagfa",
                "uniquemember": [
                    "uid=gp2513,ou=user,O=agfa,C=com",
                    "uid=as2179,ou=user,O=agfa,C=com",
                    "uid=mh1382,ou=user,O=agfa,C=com",
                     .......

有一种方法只提取 uid

例如使用正则表达式

uid=([-\d]*[^\;])

并创造一个这样的事实

((uid=gp2513),(uid=as2179),(uid=mh1382))

这用于向 ldap 查询添加过滤器

非常感谢

标签: regexansibleldap

解决方案


你可以这样做:

  tasks:
    - name: something
      : get the extract of ldap
      register: output

    - name: extract uids
      set_fact:
        uids: "{{ uids | default([]) + [item.split(',')[0]] }}"
      loop: "{{ ouput.results.0.uniquemember.0 }}"

    - name: display uids
      debug:
        var: uids

推荐阅读