Ansible自动化运维实战指南

陈DevOps

· 阅读 152

分享
Ansible自动化运维

Ansible自动化运维实战指南

当你需要管理10台以上的服务器时,手动SSH逐台操作就不可持续了。Ansible是最流行的自动化运维工具,无需在目标机器安装Agent,通过SSH就能批量执行命令、部署应用、配置系统。

基础概念

Inventory(清单):定义要管理的主机列表。可以是INI格式或YAML格式。支持分组(web、db、cache),可以对不同组执行不同的Playbook。

Module(模块):Ansible的执行单元。常用的有:command(执行命令)、copy(复制文件)、template(模板渲染)、service(管理服务)、yum/apt(安装软件包)、user(管理用户)。

Playbook(剧本):用YAML编写的自动化任务集合。一个Playbook包含多个Play,每个Play定义一组主机和要执行的任务。Playbook是幂等的——执行多次结果和执行一次相同。

实战示例

部署一个Nginx Web服务器的Playbook:安装Nginx → 复制配置文件 → 复制网站文件 → 启动服务 → 设置开机自启。整个流程一条命令执行:ansible-playbook deploy-nginx.yml

批量更新系统补丁:对所有服务器执行 yum update -y && reboot。使用rolling update策略,每次更新10台,更新后等待健康检查通过再继续下一批。

Roles角色

当Playbook变复杂时,使用Roles组织代码。Role将任务、变量、模板、文件按功能组织成目录结构,便于复用和分享。Ansible Galaxy上有大量社区贡献的Role可以直接使用。

最佳实践

使用Vault加密敏感数据(密码、密钥)。使用标签(tags)选择性执行任务。使用 --check 模式预演变更。使用 --diff 查看文件变更内容。将Playbook纳入Git版本管理,每次变更都有记录。