SOP · FlexLM(.29)LDAP 客户端接入(复用共享库 sssd_client)¶
- 主题:
flexlm-ldap-20261012 - 日期:2026-10-12
- 类型:C 类变更(单主机 + 共享库新增入口)
- 触发来源:用户要求把 FlexLM 纳入 LDAP,为后续 FlexLM option(按 USER/GROUP 限制)与许可审计铺路;同时验证共享库
sssd_client的复用性
1. 背景¶
.29(FlexLM 许可服务器)此前未接 LDAP,且本地连 rain01 等镜像条目都没有(getent passwd rain01 返回空),
因此 FlexLM 的 option 文件无法按用户/组限制许可,也无法按用户做许可审计。
.29 没有专属部署工程(旧 license_management 已随旧集群清退)。本次用共享库新增的 CLI 入口
sssd_client_cli.py 直接驱动 sssd_client,复用与 .21/.22(lustre_ins/modules/ldap_client.py)同一实现。
2. 目标¶
.29装上 sssd 并配置 LDAP 域eda,服务 active + enabled;getent passwd rain01(默认路径)与getent -s sss passwd rain01均返回 LDAP 条目;- 幂等:复跑第二次零变更、全跳过;
- 复用性验证:同一共享库模块,被第二个调用方(CLI)一次跑通。
3. 前置条件¶
| 条件 | 检查方法 |
|---|---|
.29 root SSH 免密 |
执行前用 remote_exec.py 复核可达 |
已装 authselect |
command -v authselect(实测已装) |
| LDAP 服务可达 | ldap://192.168.31.10:389 |
| 凭据可用 | 与 slurm_ins/config/slurm_deploy.yaml 的 user_mgmt.ldap.* 同源 |
4. 影响范围¶
| 项 | 内容 |
|---|---|
| 主机 | 192.168.31.29(FlexLM 许可服务器),1 台 |
| 组件 | /etc/sssd/sssd.conf(新建)、authselect 接管 PAM/NSS、sssd 服务;共享库 sssd_client_cli.py(新增)与本地配置 |
| 停服 | 否。不改 FlexLM 任何配置,只做系统认证接入 |
| 窗口 | 无窗口要求;单次执行约 1 分钟(含 dnf 装包) |
| 在跑业务 | FlexLM 服务不受影响(未触及 lmgrd 与许可文件) |
5. 分步操作¶
实现体:共享库 ~/py_public_modules/sssd_client_cli.py(入口)+ ~/py_public_modules/sssd_client.py(能力);
配置:services/sssd/flexlm-ldap-20261012/ldap_client.yaml(600)。
步骤 1:配置(含凭据)¶
hosts: [192.168.31.29]
domain_name: eda
ldap_uri: ldap://192.168.31.10:389
ldap_search_base: dc=rainchen,dc=com
ldap_bind_dn: cn=admin,dc=rainchen,dc=com
ldap_bind_password: "<从 slurm_ins 同源凭据填入>" # 文件权限 600
authselect_profile: sssd
authselect_features: [with-mkhomedir]
verify_user: rain01
verify_group: design
backup_dir: /var/backups/sssd
步骤 2:预演(零副作用)¶
cd /home/rain/Documents/services/sssd/flexlm-ldap-20261012
python3 -m venv --system-site-packages 不适用;用已挂共享库的解释器:
/home/rain/Documents/lustre_ins/.venv/bin/python \
/home/rain/py_public_modules/sssd_client_cli.py --config ldap_client.yaml --dry-run
预期:状态: pending,进入接入 + [dry-run] ... 将安装 ...,不改动系统。
步骤 3:执行接入¶
/home/rain/Documents/lustre_ins/.venv/bin/python \
/home/rain/py_public_modules/sssd_client_cli.py --config ldap_client.yaml --apply
节点侧等价命令与 lustre_ins 接入一致(同一实现体):备份 → dnf install sssd ... →
install -m 600 /dev/stdin /etc/sssd/sssd.conf → authselect select sssd with-mkhomedir --force →
systemctl enable --now sssd。详见 lustre_ins/ldap_client_20261012/SOP.md 第 5 章。
预期:接入完成并验证通过,RC=0。失败判断:任一环节报错 → 按第 7 章回滚。
6. 验证¶
# ① 幂等复跑:应「已符合期望,跳过」
/home/rain/Documents/lustre_ins/.venv/bin/python \
/home/rain/py_public_modules/sssd_client_cli.py --config ldap_client.yaml --apply
# ② 实机核对
python3 ~/py_public_modules/remote_exec.py --hosts 192.168.31.29 \
--probe "sssd=systemctl is-active sssd; systemctl is-enabled sssd" \
--probe "authselect=authselect current | head -3" \
--probe "sss_user=getent -s sss passwd rain01" \
--probe "nss_getent=getent passwd rain01" \
--probe "confmode=stat -c %a /etc/sssd/sssd.conf"
实测(2026-10-12):
| 检查项 | 结果 |
|---|---|
| 幂等复跑 | 已符合期望,跳过 |
| sssd 服务 | active + enabled |
| authselect | Profile ID: sssd,feature with-mkhomedir |
getent -s sss passwd rain01 |
rain01:*:2001:2000:rain01:/home/rain01:/bin/csh |
getent passwd rain01(默认) |
同 LDAP 值(.29 无本地镜像条目,不存在遮蔽) |
getent -s sss group dv |
dv:*:3000: |
sssd.conf 权限 |
600 |
复用性结论:同一 sssd_client 实现,.21/.22 经 lustre_ins 工程模块调用、.29 经共享库 CLI 调用,
两者行为与判据一致,未改动共享库能力代码。正是「能力在共享库、多调用方复用」的验证。
7. 回滚¶
/home/rain/Documents/lustre_ins/.venv/bin/python \
/home/rain/py_public_modules/sssd_client_cli.py --config ldap_client.yaml --rollback
动作:停 sssd + 禁自启 → authselect select minimal --force → 恢复 /var/backups/sssd/sssd.conf.bak.*。
回滚后 .29 回到「不接 LDAP」状态。
8. 风险说明¶
| 风险 | 说明与缓解 |
|---|---|
| 影响 FlexLM 服务 | 未触及 lmgrd 与许可文件;只做系统认证接入,许可分发不受影响 |
| authselect 接管 PAM | nsswitch 为 files sss(本地优先);变更前后 SSH 正常 |
| 凭据落盘 | 配置 600、与 slurm 同源;文档不落值 |
| 无工程承载导致无人维护 | 入口与配置已入共享库与主题目录并在 HANDOFF 登记;后续若 FlexLM 有专属工程,可改由该工程调用同一共享库能力 |
附录:交付物清单¶
| 文件 | 角色 |
|---|---|
| 本文件 | 变更档案 |
ldap_client.yaml |
接入配置(600) |
~/py_public_modules/sssd_client_cli.py |
共享库新增入口(CLI) |
~/py_public_modules/sssd_client.py |
复用(本次未改) |
backup/ |
台账 |
来源:
/home/rain/Documents/services/sssd/flexlm-ldap-20261012/SOP.md| 最后更新:2026-10-12 00:39(由build/sync.py同步,请勿在站点侧修改)