文章目录
- Ansible:一台机器管所有服务器的自动化利器
Ansible:一台机器管所有服务器的自动化利器
Ansible 是 Red Hat 赞助的开源 IT 自动化工具,目前斩获了 68,868 个 Star:
Ansible 的核心定位是用一条命令管理成百上千台服务器。配置变更、应用部署、云资源创建、网络设备管理,全部通过统一的方式完成。
和 Puppet、Chef 这些老牌工具相比,Ansible 最大的特点是不需要在目标机器上安装任何客户端。它直接通过 SSH 连接执行任务,装好控制端就能用,省去了部署 agent 的麻烦。
Ansible 怎么工作的
Ansible 用 YAML 格式的 Playbook 来定义自动化任务。一个 Playbook 描述的是"哪些机器、执行什么操作、按什么顺序",结构清晰,读起来和写流程文档差不多。
底层执行时,Ansible 会把 Playbook 编译成 Python 脚本,通过 SSH 推送到目标机器运行。任务执行完毕后脚本自动清理,目标机器上不会残留任何状态。
几个实际场景
批量改密码。运维团队要对 500 台服务器统一修改某个用户密码,手动操作需要大半天。用 Ansible 写一个 Playbook,几分钟搞定,还能自动跳过不通的机器并记录结果。
应用发布。新版本代码打包好之后,Ansible 可以按批次逐台滚动更新,配合负载均衡器实现零停机发布。每台机器更新后自动做健康检查,失败则回滚。
云资源编排。Ansible 有丰富的 cloud 模块,支持 AWS、Azure、GCP 等主流云平台。用 Playbook 定义一套完整的云环境拓扑,一键创建 VPC、EC2 实例、安全组、RDS 数据库,整个流程可版本化、可复现。
模块生态
Ansible 的功能扩展靠模块实现。目前官方和社区维护的模块覆盖了 Linux 系统管理、Windows 操作、数据库、中间件、容器、网络设备等几乎所有运维场景。不需要写代码,直接在 Playbook 里调用对应模块就行。
安装和上手
通过 pip 安装最方便:
pip install ansible装好之后跑一条 ad-hoc 命令就能验证环境是否正常:
ansible all -m ping -i inventory.iniinventory.ini 是一个简单的主机清单文件,写入服务器地址和认证信息即可。Playbook 用 YAML 编写,学习成本低,有 Shell 脚本基础的人半天就能上手。
适合谁用
Ansible 对中小团队特别友好。不需要搭建专门的基础设施服务器,不需要培训复杂的 DSL 语法,一台能跑 Python 的机器就是控制节点。大团队用 Ansible 同样合适,配合 Ansible Tower(现在叫 AAP)可以实现权限管控、任务审计和 Web 界面操作。
对于已经在用 Docker 和 Kubernetes 的团队,Ansible 也能很好地配合。用 Ansible 管理节点基础环境和集群初始化,用 K8s 管理容器编排,两层各司其职。
这个项目由 Michael DeHaan 创建,目前有超过 5000 名贡献者参与开发,采用 GPL v3.0 许可证。
ichael DeHaan 创建,目前有超过 5000 名贡献者参与开发,采用 GPL v3.0 许可证。