Ansible:无代理 IT 自动化运维工具部署与使用指南
Ansible 是一套「极其简单」的 IT 自动化系统,覆盖配置管理、应用部署、云资源编排、临时任务执行、网络自动化与多节点编排。它最大的特点是无代理(agentless):不需要在被管机器上安装任何客户端,直接复用系统已有的 SSH 守护进程就能批量管理机器,上手门槛低、安全且容易审计。
一、项目官方信息
| 项目 | 信息 |
|---|---|
| GitHub 仓库 | https://github.com/ansible/ansible |
| 官方网站 | https://www.ansible.com |
| 官方文档 | https://docs.ansible.com/ansible/latest/ |
| 开源协议 | GNU General Public License v3.0 or later(GPLv3+) |
| 主要语言 | Python(约 86.3%) |
| Star 数 | 71k+ |
| 赞助方 | Red Hat, Inc. |
说明:Ansible 官方仓库的 README 与源码中未提供 Logo / Banner 图片,故本文不设「官方图片」小节,封面亦不使用占位图。
二、设计原则(官方 README 原文要点)
- 安装过程极简、学习曲线平缓;
- 并行、快速地管理成批机器;
- 不装自定义代理、不开额外端口,靠现有 SSH 实现无代理管理;
- 用机器和人都友好的语言描述基础设施;
- 注重安全与可审计、可评审;
- 新机器拿到手即可管理,无需 bootstrap 任何软件;
- 模块可用任意动态语言(不止 Python)开发;
- 可以以非 root 用户运行。
三、环境要求
- 控制节点(你运行 ansible 的机器):Linux / macOS / 类 Unix,Python 3.10+(按官方安装指南),开启 SSH 客户端。
- 被管节点:只要能被控制节点 SSH 登录即可,无需安装任何 agent;需要 Python 3(绝大多数现代发行版自带)。
- 网络:控制节点到被管节点的 SSH(默认 22 端口)可达。
- 安装方式:README 明确说明,可用
pip或系统包管理器安装一个正式发布版本。
四、完整部署步骤
1. 用 pip 安装(官方推荐的通用方式)
README 指明「install a released version of Ansible with pip」:
pip install --user ansible
或在虚拟环境中:
python3 -m venv ~/ansible-venv
source ~/ansible-venv/bin/activate
pip install ansible
2. 用系统包管理器安装
按 README 的「package manager」方式,在常见发行版上:
# RHEL / CentOS / Fedora
sudo dnf install ansible
# Debian / Ubuntu
sudo apt update
sudo apt install ansible
3. 验证安装
ansible --version
能打印出 ansible-core 版本号与配置文件路径即安装成功。
4. (可选)从源码运行 devel 分支
README 说明:高级用户与开发者可直接运行 devel 分支获取最新特性,但更可能遇到破坏性变更,建议先参与社区。stable-2.X 分支对应稳定发布版。
五、使用方法
1. 准备主机清单(inventory)
新建一个 hosts 文件,列出要管理的机器:
[webservers]
192.168.1.10
192.168.1.11
[dbservers]
192.168.1.20
2. 临时命令(ad-hoc)批量执行
对 webservers 分组执行 ping 测试(使用 SSH 用户 youruser):
ansible webservers -i hosts -m ping -u youruser
批量 apt 安装某个软件:
ansible webservers -i hosts -m apt -a "name=nginx state=present" -b -u youruser
其中 -m 指定模块(ping、apt、yum、copy、command 等),-a 传模块参数,-b 表示提权(become sudo)。
3. 编写 Playbook(自动化剧本)
新建 site.yml:
---
- hosts: webservers
become: true
tasks:
- name: 安装 nginx
apt:
name: nginx
state: present
- name: 启动并设置开机自启
service:
name: nginx
state: started
enabled: true
执行:
ansible-playbook -i hosts site.yml
Playbook 用 YAML 描述一组状态,Ansible 会并行把所有被管节点收敛到该状态,天然支持零停机滚动更新等编排。
六、常见问题 FAQ
Q1:被管机器上需要装 Ansible 吗? 不需要。Ansible 是无代理的,控制节点通过 SSH 连过去执行,被管机器只要有 SSH 服务和 Python 即可。
Q2:必须用 root 运行吗?
不必。设计原则之一就是「usable as non-root」,需要提权时在任务里加 become: true 或命令行加 -b。
Q3:pip 安装和包管理器安装选哪个? 想要最新发布版、或在 macOS/任意 Linux 上用,选 pip;想跟随发行版仓库、和系统其他软件一起升级,选 dnf/apt。二者安装的是同一套正式发布版本。
Q4:devel 分支能直接上生产吗?
官方提醒:devel 较稳定但更可能遇到破坏性变更,生产请用 stable-2.X 分支或正式发布版。
Q5:Windows 被管机能管理吗? Ansible 控制节点本身不建议装在 Windows 上;被管的 Windows 机器通过 WinRM 管理,属于官方网络/Windows 自动化范畴,需额外配置。
Q6:出问题去哪里求助? 官方论坛 forum.ansible.com 有 Get Help、Social Spaces、News 等板块;文档站 docs.ansible.com 提供完整安装与模块参考。
七、跳转链接
- GitHub 仓库:https://github.com/ansible/ansible
- 官方网站:https://www.ansible.com
- 安装指南:https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html
- 开发者指南:https://docs.ansible.com/ansible/devel/dev_guide/