跳转至

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. 目标

  1. .29 装上 sssd 并配置 LDAP 域 eda,服务 active + enabled;
  2. getent passwd rain01(默认路径)与 getent -s sss passwd rain01 均返回 LDAP 条目;
  3. 幂等:复跑第二次零变更、全跳过;
  4. 复用性验证:同一共享库模块,被第二个调用方(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 同步,请勿在站点侧修改)