我用 Ansible 替代了所有的 Shell 部署脚本

Mei Lin | 2026-09-21T07:17:00 | DevOps

之前部署全靠手写 Shell 脚本,维护起来简直是噩梦。花了一周时间全部迁移到 Ansible,再也不用担心某台服务器漏执行了。

我们有 8 台服务器,之前部署全靠一堆 Shell 脚本。每次发版就是 ssh 到每台机器上跑脚本,偶尔忘了一台就出事故。 ## Shell 脚本的问题 ```bash #!/bin/bash cd /www/app git pull npm install pm run build pm2 restart app ``` 问题:要登录每台服务器手动执行容易漏、没有状态检查、路径硬编码、没有回滚机制。 ## Ansible 怎么解决 用 inventory 管理服务器,playbook 定义部署流程: ```yaml - hosts: web serial: 1 tasks: - name: Pull latest code git: repo: https://github.com/myorg/app.git dest: /www/app - name: Install & Build command: npm ci && npm run build args: chdir: /www/app - name: Restart command: pm2 restart app - name: Health check uri: url: http://localhost:3000/health status_code: 200 retries: 5 ``` 一条命令部署所有服务器:`ansible-playbook -i hosts.ini deploy.yml` 关键优势:幂等性、滚动部署(serial:1)、自动健康检查、无 Agent。迁移 15 个脚本花了一周,非常值得。

← Back to Blog