适用场景

手工登录 50 台服务器改配置,出错概率极高且没有记录。自动化不是为了炫技,而是"一次编写、批量执行、结果可查"。

配置步骤(Playbook 与批量巡检)

# check.yml
- hosts: all
  gather_facts: yes
  tasks:
    - name: 磁盘使用率
      shell: df -h / | tail -1 | awk '{print $5}'
      register: disk
    - name: 输出结果
      debug: { msg: \「{{ inventory_hostname }} 磁盘 {{ disk.stdout }}\」 }

关键参数与建议

  • 先建清单(inventory)与分组,按角色组织主机
  • 幂等性优先:脚本重复执行结果一致,避免"跑两次就坏"
  • 敏感信息用 ansible-vault 加密,不要明文写在 playbook
  • 批量操作前先 --check 与 -l 限制范围,避免误伤全网
  • 执行结果归档(谁在什么时候改了什么)

容易踩的坑

  • shell 模块不幂等,用于变更会反复触发
  • 未做失败处理,中途失败后状态不一致
  • 输出不归档,事后无法追溯

验证与巡检

ansible-playbook -i inventory.ini check.yml | tee /var/log/ansible/check_$(date +%F).log
  • 巡检:巡检日志按日期归档、异常主机单独列出

小结

自动化的落地顺序:先做只读巡检(收集信息)→ 再做低风险变更(时间同步、日志配置)→ 最后做高风险变更(网络与安全策略)。

> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。