Ansible 自动化运维:从批量部署到服务器管理全指南
导语
面对数十台服务器的配置管理,手动逐个登录执行命令显然不现实。Ansible 作为轻量级自动化工具,通过「剧本(Playbook)」实现批量服务器操作,无需在被控节点安装额外软件,仅凭 SSH 即可完成配置部署、应用发布与系统管理。本文带你从零搭建 Ansible 自动化流程!
一、Ansible 核心概念
- 控制节点(Controller):安装 Ansible 的管理主机,负责执行剧本。
- 被控节点(Managed Nodes):通过 SSH 被管理的目标服务器,无需安装 Ansible。
- Playbook:YAML 格式的自动化脚本,定义对被控节点的操作流程。
- Inventory:被控节点的清单,记录服务器 IP、端口、认证信息等。
二、环境搭建与安装
1. 在控制节点安装 Ansible
# Ubuntu/Debian
sudo apt install ansible
# CentOS/RHEL
sudo dnf install ansible
# macOS(Homebrew)
brew install ansible
2. 配置 SSH 无密码登录
为避免执行剧本时频繁输入密码,需在控制节点生成 SSH 密钥并分发到被控节点:
# 生成密钥对
ssh-keygen -t rsa
# 分发公钥到目标服务器(假设 IP 为 192.168.1.100)
ssh-copy-id [email protected]
三、Inventory 与 Playbook 实战
1. 编写 Inventory 文件
创建 hosts
文件定义被控节点:
# 示例:hosts 文件
[web_servers]
web1.example.com ansible_host=192.168.1.101
web2.example.com ansible_host=192.168.1.102
[db_servers]
db1.example.com ansible_host=192.168.1.103
2. 编写 Playbook 剧本
以「安装开发环境依赖」为例,创建 setup_dev_env.yml
:
---
- name: 配置开发环境依赖
hosts: web_servers,db_servers # 同时作用于 web 和 db 服务器
become: yes # 使用 sudo 权限
tasks:
- name: 安装基础工具
apt:
update_cache: yes
name:
- build-essential
- git
- curl
- vim
state: present
- name: 安装 Python 3 环境
apt:
name:
- python3
- python3-pip
- python3-venv
state: present
- name: 安装 GitHub CLI
apt:
name: gh
state: present
3. 执行 Playbook
ansible-playbook -i hosts setup_dev_env.yml
执行过程中,Ansible 会显示每台服务器的任务进度,失败任务会高亮标记。
四、进阶功能:变量与模板
1. 使用变量动态配置
在 Playbook 中定义变量:
---
- name: 部署应用
hosts: web_servers
vars:
app_name: myapp
app_version: 1.0.0
tasks:
- name: 创建应用目录
file:
path: /opt/
state: directory
2. Jinja2 模板渲染
创建配置文件模板 config.j2
:
app_name =
version =
env =
在 Playbook 中使用模板:
- name: 复制配置文件
template:
src: config.j2
dest: /etc//config.ini
vars:
env_type: production
五、总结
Ansible 的「无代理」设计和 YAML 剧本语法降低了自动化运维的门槛,无论是批量安装软件、部署应用还是执行系统命令,都能通过代码化的方式实现可复用、可审计的操作流程。对于运维团队或多服务器管理场景,Ansible 是提升效率、减少人为错误的必备工具。