上一篇 下一篇 分享链接 返回 返回顶部

Ansible批量推送SSL证书实现面板站点自动生效

发布人: 发布时间:18小时前 阅读量:18

背景与需求

随着HTTPS普及,运维需频繁为服务器面板上的多个站点更新SSL证书。手动逐台登录服务器并上传证书效率低下且易出错,尤其当站点数量超过数十个时,证书更新可能延误导致安全警告。利用Ansible的自动化能力,可将证书文件批量推送到所有面板节点,并通过触发面板命令让证书即时生效。

Ansible批量推送方案优势

  • 幂等性:重复执行不会产生额外变更,仅在有差异时更新证书文件。
  • 并行执行:默认多线程并发,大幅缩短批量推送时间。
  • 配置集中:证书路径、面板类型等变量统一管理,便于维护。
  • 可审计:每次执行日志清晰记录推送结果与生效状态。

实现步骤

1. 定义Inventory与变量

在Ansible的hosts文件中按面板类型分组,例如:

  1. 创建分组[panel_servers]并列出所有服务器IP或域名。
  2. 在group_vars中定义SSL证书源路径(如ssl_cert_src)和目标路径(如/etc/ssl/certs)。

2. 编写Playbook任务

核心任务包括:将本地证书文件(证书链与私钥)复制到目标服务器,并确保权限正确。示例Playbook片段:

  • 使用copy模块推送fullchain.pemprivkey.pem到目标路径。
  • 使用file模块设置文件属主为root:root,权限为06440600

3. 触发面板站点批量生效

不同面板提供不同的CLI或API接口。以常用面板为例:

  • 宝塔面板:通过bt命令或写入站点配置文件后执行nginx -s reloadapachectl graceful
  • cPanel:调用whmapi1/scripts/rebuild_httpdconf后重载Web服务。
  • Plesk:使用plesk bin certificate --update命令更新证书并触发重载。

在Playbook中通过commandshell模块执行对应命令,并设置when条件判断面板类型。若证书文件校验和未变化,可通过handlers中定义的重载任务,仅在文件更新时才触发服务重载。

4. 验证与回滚

推送后使用uri模块或curl命令检查站点HTTPS证书到期时间与域名匹配。若验证失败,可借助Ansible直接从备份路径恢复旧证书并重载服务。

注意事项

  • 敏感信息保护:私钥文件建议使用Ansible Vault加密或从安全存储动态获取。
  • 通配符证书:多站点共用一张通配符证书时可减少推送次数,但需确认各站点域名校验逻辑。
  • 定时任务:配合Ansible Tower或AWX的Job Template实现证书到期前自动推送,并接入通知。

采用Ansible后,证书更新从逐台登录变为一键执行,面板站点批量生效时间缩短至分钟级,且操作记录可追溯,显著提升IDC运维效率。

目录结构
全文
企业微信 企业微信
微信公众号 微信公众号
服务热线: 400-790-1688
电子邮箱: 3310008520@qq.com