Loading...

文章背景图

Ansible:无代理 IT 自动化运维工具部署与使用指南

2026-10-27
0
- 字
- 分钟
|

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/
评论交流

文章目录