ansible批量分发更新配置文件的核心是copy模块+服务重启逻辑,需确保一致性、可回滚、不中断服务;通过ssh密钥免密登录管理主机,用backup: yes自动备份旧配置,配合nginx -t校验、service重载及uri验证实现安全更新。

用 Ansible 批量分发和更新配置文件,核心是 copy 模块 + 服务重启逻辑,关键在确保一致性、可回滚、不中断服务。不需要写 shell 脚本或逐台登录,一套 playbook 就能覆盖几十上百台服务器。
准备主机清单和连接方式
先让 Ansible 能连上所有目标机器:
- 推荐用 SSH 密钥免密登录(最安全),在控制机执行
ssh-copy-id user@host分发公钥 - 若必须用密码,在
/etc/ansible/hosts中按组写明:[web_servers] 192.168.10.11 ansible_ssh_user=deploy ansible_ssh_pass='xxx' 192.168.10.12 ansible_ssh_user=deploy ansible_ssh_pass='xxx'
- 如需提权操作(比如写入
/etc/下配置),在 playbook 里加become: true,或统一在ansible.cfg中配置become=True
用 copy 模块分发新配置文件
这是最常用也最稳妥的方式,支持校验、备份、权限设置:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
src指本地路径(相对 playbook 当前目录或绝对路径);dest是远程目标路径 - 加上
backup: yes,每次覆盖前自动备份旧文件为.bak后缀,便于紧急回退 - 指定
owner、group、mode,避免因权限问题导致服务启动失败 - 示例任务:
- name: Deploy nginx.conf copy: src: files/nginx.conf dest: /etc/nginx/nginx.conf owner: root group: root mode: '0644' backup: yes
更新后自动校验并重启服务
光换文件不够,得确认生效。建议按“检查 → 重载/重启 → 验证”三步走:
- 用
command或shell模块测试配置语法,比如nginx -t,失败则整个任务中止 - 用
service模块 reload(平滑重载)或 restart(重启),推荐state: reloaded降低影响 - 加个简单验证,例如用
uri模块请求服务首页,或shell检查进程状态 - 完整片段示例:
- name: Test nginx config command: nginx -t changed_when: false
name: Reload nginx service service: name: nginx state: reloaded
name: Verify nginx is responding uri: url: https://www.php.cn/link/5830bc2bbfda076fdc00e649f2c82e1f status_code: 200
进阶:按环境差异化部署
生产、预发、测试环境配置不同?用变量和条件控制:
- 在 inventory 中为不同组定义变量,例如:
[prod] 192.168.10.100 ansible_host=192.168.10.100 env=prod <p>[staging] 192.168.10.200 ansible_host=192.168.10.200 env=staging</p>
- playbook 中用
template模块渲染 Jinja2 模板,根据{{ env }}插入不同参数 - 或用
copy的src动态拼接路径:src: "files/{{ env }}/app.conf"










