Skip to main content

部署(模型 B)

playbook 在目标主机上做了什么、把东西放在哪、装完怎么验收、失败了怎么清干净,以及交付清单。

操作步骤在快速开始里。这一页讲 playbook 背后的事,排障和二次交付时用。

playbook 做了什么

deploy-ipaserver.yml 四段,全部幂等,重跑只补差异:

做什么落在哪
离线 RPM 源把包内 rpms/ 推到目标机,注册为本地 yum 源(签名校验开着)/opt/idmatrix-rpms//etc/yum.repos.d/idmatrix-offline.repo
FreeIPA 服务端freeipa.ansible_freeipaipaserver 角色:装包、ipa-server-install(目录、KDC、CA、DNS、adtrust);开 oddjob-mkhomedir,用户首次登录自动建家目录FreeIPA 标准路径
管理台推送 dist/ 到目标机,/etc/httpd/conf.d/ipa.conf/ipa/modern-ui 别名指向它IDM_WEBUI_DIST_DST,默认 /opt/idmatrix/dist
许可层装校验脚本、嵌入公钥、状态端点、请求闸门、主机数插件、每日校验 timer,然后立刻跑一次校验/opt/idmatrix-license//var/lib/idmatrix-license/status.json
每日备份备份脚本 + idmatrix-backup.timer,每日 02:30 在线数据备份/var/lib/ipa/backup/

许可层三件东西的分工在许可里。

装完之后目标机上多了什么

路径内容
/opt/idmatrix-license/gate_wsgi.py(请求闸门)、license_gate.py(分类器)、phonehome.py(校验)、public.pem(嵌入公钥)、rstlic/ SDK
/var/lib/idmatrix-license/license.lic(激活后)、status.json(当前许可状态,管理台横幅和闸门都读它)
/etc/httpd/conf.d/ipa.confWSGIScriptAlias /ipa/usr/share/ipa/wsgi.py 改指向 /opt/idmatrix-license/gate_wsgi.py/ipa/modern-ui 别名
/etc/httpd/conf.d/idmatrix-license.conf状态查询、指纹请求、许可上传三个端点
FreeIPA 插件目录idmatrix_hostlimit.py,服务端硬限受管主机数
/etc/systemd/system/idmatrix-license.{service,timer}idmatrix-backup.{service,timer}

回滚许可层只要把 ipa.conf 里那一行 WSGIScriptAlias 改回 /usr/share/ipa/wsgi.pysystemctl reload httpd,FreeIPA 本体不受影响。

验收

六条全过才算装完:

sudo ipactl status                                       # ① 11 个服务全 RUNNING
curl -sk -o /dev/null -w '%{http_code}\n' https://<FQDN>/ipa/modern-ui/   # ② 200 或 301
sudo systemctl list-timers idmatrix-backup.timer         # ③ NEXT = 次日 02:30
sudo systemctl start idmatrix-backup.service && ls /var/lib/ipa/backup/   #    立刻跑一次,看到产物
cat /var/lib/idmatrix-license/status.json                # ④ valid:false,未激活正常
echo '<admin口令>' | kinit admin && ipa pwpolicy-mod --minlength=9   # ⑤ 期望 Forbidden
chronyc sources                                          # ⑥ 时间同步正常

第 ⑤ 条是许可门控的存在性检查。未激活时写操作被拒是设计行为;它成功了说明 ipa.confWSGIScriptAlias 没改过来,或 status.json 不可读导致闸门失效开放。门控失效不报任何错。

11 个服务是:Directory Service、krb5kdc、kadmin、named、httpd、ipa-custodia、pki-tomcatd、ipa-otpd、ipa-dnskeysyncd、smb、winbind。IPA_SETUP_DNS=false 少 named 和 ipa-dnskeysyncd;IPA_SETUP_ADTRUST=false 少 smb 和 winbind。

装失败了

ipa-server-install 不是原子的,中途失败会留下半个目录实例、半个 KDC。不要直接重跑 playbook,先在目标机清干净:

sudo ipa-server-install --uninstall -U
ls -d /etc/dirsrv/slapd-* /etc/pki/pki-tomcat /etc/ipa/default.conf 2>&1   # 应全部 No such file
sudo getcert list | grep -c MONITORING                                      # 应为 0

有残留就手工补:dsctl slapd-<REALM> remove --do-itrm -rf /etc/pki/pki-tomcatgetcert stop-tracking -i <id>ipa-client-install --uninstall 会把 /etc/nsswitch.conf 还原成装前的备份,如果装前改过 hosts: 行(去 myhostname),卸载后要再改一次。

失败的常见原因按出现顺序:

卡在原因
主机名检查hostname -fIPA_HOSTNAME 不一致;FQDN 解析到 127.0.0.1 / ::1
DNS 转发器检查IPA_FORWARDERS 不可达,或 IPA_AUTO_FORWARDERS=true 抓到 resolv.conf 里的坏地址
时间与 NTP 源或域控时差超过 5 分钟
configuring mod_ssl目标机缺 mod_sslrpm -q mod_ssl 查,包内 RPM 仓有
setting up httpd keytab / pkispawn 建不出日志目标机不是干净系统,/var/lib/ipa/gssproxy/var/log/pki 这类目录被删过。`rpm -Va --nofiledigest

交付清单

给客户:

  • 管理台地址、admin 口令、Directory Manager 口令,写进客户的密码库
  • 包内 docs/ 全部手册
  • COPYINGidmatrix-source.tar.gz。管理台是 GPLv3 的 freeipa-webui 二次开发,必须随附对应源码
  • 备份产物在 /var/lib/ipa/backup/,离机同步由客户自配

不给: customer.env(明文口令)、控制节点上的 ssh 私钥、厂商内部文档。

本页内容