前言
作为运维人员,批量部署软件的工作往往耗时耗力且容易出错。Ansible 无需在目标服务器安装额外代理程序,靠 SSH 通信,上手快,写好一次 Playbook,一条命令即可完成标准化部署,完美解决了手动操作的一致性难题。
本文将从零开始,构建一套完整、健壮、可复用的 Ansible 自动化部署方案。通过本教程,你将掌握如何利用 Ansible 实现 Nginx 的批量安装、配置管理、服务启停及状态验证。
1. 什么是 Ansible?为何选择 Ansible?
Ansible 是一款开源的自动化运维工具,旨在简化配置管理、应用部署、任务编排等操作。其核心设计理念是'简单、可靠、无侵入',通过声明式语言实现对大规模基础设施的高效管控。
核心优势:
- 无代理架构:无需在目标主机上安装额外客户端或代理程序,仅依赖标准 SSH 服务。
- 基于 SSH 的安全通信:利用成熟的 SSH 协议进行连接,天然支持密钥认证。
- 幂等性保障:无论 Playbook 被执行多少次,系统最终状态始终保持一致。
- YAML 驱动的声明式语法:使用结构清晰、易于阅读的 YAML 格式编写 Playbook。
- 丰富的模块生态:内置数千个模块,覆盖操作系统、网络设备、数据库等全场景需求。
2. 在 CentOS7 上安装 Ansible
更新所有系统软件包:
yum update -y
安装 EPEL 仓库(提供 Ansible 包):
yum install -y epel-release
安装 Ansible:
yum install -y ansible
验证是否安装成功:
ansible --version
3. 一键部署 Nginx
确保你在 playbook 所在目录(假设是 /etc/ansible):
cd /etc/ansible
编辑 hosts 文件,加入你所要部署的主机 IP 及其用户名:
[test]
192.168.42.146 ansible_ssh_user=root
注意:生产环境建议使用 SSH 密钥认证而非明文密码。
编辑命令 yml 文件(例如 deploy_nginx.yml):
---
- name: 在主机上安装并启动 Nginx
hosts: dbservers
become: yes
gather_facts: yes
tasks:
- name: 安装 EPEL 软件源(Nginx 依赖)
yum:
name: epel-release
state: present
- name: 安装 Nginx
yum:
name: nginx
state: present
- name: 启动 Nginx 服务并设置开机自启
systemd:
name: nginx
state: started
enabled: yes
然后使用 ansible-playbook 执行:
ansible-playbook -i hosts deploy_nginx.yml
接下来去目标主机查看一下 Nginx 是否安装成功:
rpm -q nginx
systemctl status nginx
ss -tuln | grep ':80'
netstat -tuln | grep ':80'
检查到了,一键部署即完成。我们可以在 hosts 文件添加上百台主机,皆可以使用 Ansible 命令一键安装。
若需异地远程访问内网机器,请确保网络可达性配置正确,如配置端口转发或静态公网 IP 映射,以便 Ansible 能够连接目标节点。
总结
本文介绍了从 Ansible 的核心优势讲起,一步步教大家在 CentOS7 上安装 Ansible,编写 Playbook 实现 Nginx 的批量安装与启动。整套流程下来,能彻底解决大规模服务器部署 Nginx 的效率问题,实现高效、可靠、可重复的基础设施管理。


