适用场景
手工登录 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
- 巡检:巡检日志按日期归档、异常主机单独列出
小结
自动化的落地顺序:先做只读巡检(收集信息)→ 再做低风险变更(时间同步、日志配置)→ 最后做高风险变更(网络与安全策略)。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。