Ansible实现字典列表按LDAP服务器匹配合并证书数据
合并LDAP身份源与服务器证书的实现方案
核心思路
利用你已经预处理好的小写服务器名字段和小写键证书字典,通过构建证书映射表实现高效匹配,再遍历LDAP身份源条目完成证书注入。
代码实现(Python)
# 构建小写服务器名到证书的映射表,实现快速查找 cert_map = {item['ldap_server']: item['cert'] for item in server_cert_lower} # 遍历所有LDAP身份源条目 for identity_source in ldap_identity_sources: # 遍历当前身份源下的每台LDAP服务器 for ldap_server in identity_source['ldap_servers']: # 用预处理的小写服务器名匹配证书 server_name = ldap_server['ldap_servername'] if server_name in cert_map: # 为匹配到的服务器添加证书字段 ldap_server['server_cert'] = cert_map[server_name]
关键说明
- 先构建
cert_map是为了将原本的线性查找(遍历所有证书)转为字典的O(1)快速查找,数据量越大,效率提升越明显 - 完全复用你已经处理好的小写字段,彻底避免大小写不一致导致的匹配失败问题
- 如果存在一台服务器对应多份证书的特殊场景,可以把
ldap_server['server_cert']改成列表,用append方法添加证书
内容的提问来源于stack exchange,提问作者piercjs
相关产品推荐
相关产品推荐

