前言
作为运维人员,面对上百台服务器的批量部署,手动登录配置不仅耗时耗力,还容易因操作失误导致配置不一致。Ansible 的出现有效解决了这一痛点,它无需在目标服务器安装额外代理,仅通过 SSH 即可实现标准化管控。
本文将分享一套基于 Ansible 的 Nginx 批量部署方案,涵盖环境搭建、Playbook 编写及执行验证。重点在于如何通过声明式语法确保部署的一致性与可重复性,让运维工作更加高效可靠。
1. 为什么选择 Ansible
Ansible 的核心设计理念是简单、可靠且无侵入。相比传统脚本循环执行 SSH 命令的方式,它具有以下优势:
- 无代理架构:无需在目标主机安装客户端,降低系统开销与维护复杂度。
- 基于 SSH 的安全通信:利用成熟的 SSH 协议,支持密钥认证与企业级安全策略。
- 幂等性保障:无论 Playbook 执行多少次,系统最终状态始终保持一致,适合生产环境的配置修复。
- YAML 驱动的声明式语法:结构清晰,易于阅读和维护。
2. 环境准备与安装
以 CentOS 7 为例,首先更新系统包并安装 EPEL 仓库,这是获取 Ansible 包的前提。
yum update -y
yum install -y epel-release
接着安装 Ansible 并验证版本:
yum install -y ansible
ansible --version
3. 编写 Playbook 与配置
3.1 配置主机清单
在 /etc/ansible/hosts 文件中定义目标主机。建议优先配置 SSH 密钥免密登录,避免明文传输密码带来的安全风险。
[dbservers]
192.168.42.146 ansible_user=root
若必须使用密码,可添加 ansible_ssh_pass,但生产环境强烈建议使用密钥认证。
3.2 编写部署脚本
创建一个名为 nginx_deploy.yml 的文件,定义安装、配置及服务启动任务。注意 YAML 缩进需严格对齐。
---
- name: 在主机上安装并启动 Nginx
hosts: dbservers
become: yes
gather_facts: yes
tasks:
- name: 安装 EPEL 软件源(Nginx 依赖)
yum:
name: epel-release


