You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible如何从ldap_search结果提取uid并构造LDAP查询过滤器

实现方法

你可以直接用Ansible自带的Jinja2过滤器完成提取和拼接,不需要额外依赖,有两种实现方式:

方式1:字符串拆分(更稳定,无需正则)

直接按逗号拆分DN,取第一个元素就是完整的uid=xxx片段,不会出现正则匹配误差:

# 假设你ldap_search的返回结果存储在变量 ldap_search_result 中
- name: 提取所有uid片段
  set_fact:
    ldap_uid_list: "{{ ldap_search_result.msg.results[0].uniquemember | map('split', ',') | map('first') | list }}"

- name: 拼接为目标LDAP过滤器格式
  set_fact:
    ldap_filter: "(({{ ldap_uid_list | join('),(') }}))"

方式2:正则匹配(和你思路一致,修正匹配规则)

如果需要用正则实现,优化正则规则为匹配开头到第一个逗号前的uid=段,避免匹配错误:

- name: 正则提取uid片段
  set_fact:
    ldap_uid_list: "{{ ldap_search_result.msg.results[0].uniquemember | map('regex_replace', '^(uid=[^,]+),.*', '\\1') | list }}"

# 拼接逻辑和方式1完全一致
- name: 拼接为目标LDAP过滤器格式
  set_fact:
    ldap_filter: "(({{ ldap_uid_list | join('),(') }}))"

生成的ldap_filter变量就是你需要的格式,可以直接用作后续LDAP查询的过滤器参数。

内容的提问来源于stack exchange,提问作者cava cavamagie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:24:02