Ansible 批量部署 Nginx 实战指南
前言
运维工作中,最头疼的莫过于面对上百台服务器时的重复劳动。手动逐台登录、安装、配置不仅效率低下,还容易因手误导致配置不一致,后续排查更是耗时耗力。
Ansible 的出现很好地解决了这个问题。它采用无代理架构,通过 SSH 通信即可管理目标主机,无需额外安装客户端。编写一次 Playbook,无论是几十台还是上百台机器,一条命令即可完成标准化部署,且具备幂等性,重复执行也不会出错。
本文将结合 CentOS 7 环境,从零开始演示如何利用 Ansible 实现 Nginx 的批量安装与配置,并探讨在异地网络环境下如何确保连接可达性。
1. 为什么选择 Ansible
Ansible 的核心设计理念是简单、可靠、无侵入。相比传统依赖脚本循环执行 SSH 命令的方式,它的优势在于:
- 无代理架构:仅依赖标准 SSH 服务,降低系统开销与维护复杂度。
- 基于 SSH 的安全通信:支持密钥认证、跳板机等企业级安全策略。
- 幂等性保障:无论执行多少次,系统最终状态保持一致,适合生产环境的配置修复与同步。
- YAML 驱动的声明式语法:Playbook 结构清晰,易于阅读和维护。
- 丰富的模块生态:内置数千个模块,覆盖操作系统、中间件及云平台管理。
2. 安装 Ansible
以 CentOS 7 为例,首先更新系统软件包并安装 EPEL 仓库:
yum update -y
yum install -y epel-release
接着安装 Ansible 核心包:
yum install -y ansible
验证安装是否成功:
ansible --version
3. 配置主机清单
Ansible 的主机清单(Inventory)定义了需要管理的目标机器。默认路径通常在 /etc/ansible/hosts。
假设我们要管理一组名为 servers 的主机,编辑 hosts 文件:
[servers]
192.168.42.146 ansible_user=root
注意:在生产环境中,建议配置 SSH 密钥认证,避免在 hosts 文件中明文存储密码。若必须使用密码,请确保内网安全或配合 Ansible Vault 加密敏感信息。
4. 编写 Playbook
创建一个名为 deploy_nginx.yml 的文件,定义部署任务。这里我们使用 YAML 格式声明期望的系统状态。
---
- name: 批量安装并启动 Nginx
hosts: servers
become: yes
gather_facts: yes
tasks:
-


