分享多哈服务器使用 Ansible 实现自动化运维的实战经验,提升运维效率。
服务器数量多了之后,手工运维效率低且易错。本文分享多哈服务器 Ansible 自动化运维实战。
Ansible 简介 1) 无 Agent:通过 SSH 管理,无需安装客户端 2) YAML 配置:Playbook 用 YAML 编写,易读 3) 幂等性:重复执行结果一致 4) 模块丰富:内置大量模块,覆盖常见操作 5) 社区活跃:Galaxy 共享角色
基础架构 1) 控制节点:安装 Ansible 的机器 2) 受控节点:被管理的服务器 3) Inventory:主机清单文件 4) Playbook:任务编排文件 5) Roles:可复用的角色
Inventory 配置 ```ini [doha_servers] web1 ansible_host=1.2.3.1 web2 ansible_host=1.2.3.2 db1 ansible_host=1.2.3.3
[doha_servers:vars] ansible_user=root ansible_ssh_private_key_file=/root/.ssh/id_rsa ```
常用 Playbook 示例 1) 系统初始化:更新软件包、设置时区、创建用户 2) 安全加固:配置防火墙、SSH 加固、安装 fail2ban 3) 服务部署:安装 Nginx、配置虚拟主机、启动服务 4) 配置管理:同步配置文件、重启服务 5) 批量操作:执行命令、拷贝文件
Roles 组织 1) 按功能分 role:nginx、mysql、redis、docker 2) 可复用:不同项目共享 role 3) Galaxy:从社区下载成熟 role 4) 版本管理:role 纳入 Git
自动化部署流程 1) CI/CD 触发:代码提交触发部署 2) 构建镜像:Docker 构建应用镜像 3) 推送仓库:推送到私有镜像仓库 4) Ansible 部署:在服务器拉取镜像并重启 5) 健康检查:验证服务正常 6) 回滚:失败自动回滚
常用模块 1) apt/yum:包管理 2) copy/template:文件管理 3) service:服务管理 4) command/shell:执行命令 5) git:代码管理 6) docker_container:容器管理 7) firewalld/ufw:防火墙
多环境管理 1) 环境隔离:dev、staging、prod 分开 2) 变量管理:group_vars 和 host_vars 3) Vault:敏感信息加密存储 4) 灰度发布:先部署部分服务器验证
实战经验 1) 先小范围测试,再批量执行 2) 使用 --check 模式预览变更 3) 重要操作加 --diff 查看差异 4) 定期检查 Playbook 执行结果 5) 版本控制:Playbook 纳入 Git
效果对比 | 指标 | 手工运维 | Ansible 自动化 | | --- | --- | --- | | 部署 10 台服务器 | 2 小时 | 5 分钟 | | 配置一致性 | 易出错 | 100% 一致 | | 运维文档 | 分散 | 代码即文档 | | 回滚能力 | 困难 | 一键回滚 | | 人力成本 | 高 | 低 |
注意事项 1) 控制节点要稳定,最好高可用 2) SSH 密钥管理要安全 3) 敏感数据用 Ansible Vault 加密 4) 定期测试 Playbook 5) 保留执行日志,便于审计
总结:Ansible 是服务器自动化运维的利器。通过 Playbook 和 Roles,可以大幅提升运维效率,保证配置一致性,降低人为错误。