Ansible批量管理多台服务器:零基础入门实战教程

适用场景

当你手上有几台、几十台甚至上百台服务器需要同时执行某个命令、更新配置或部署应用时,逐一登录操作不仅低效还容易出错。Ansible 是一种轻量级的自动化工具,无需在被控端安装代理,依赖 SSH 即可实现批量管理。
本文目标:让零基础用户看完就能上手,用 Ansible 批量管理多台服务器。

第一步:准备环境

Ansible 采用控制节点(你的电脑或一台跳板机)加被控节点(需要管理的服务器)的架构。

控制节点要求

  • 操作系统:Linux / macOS / Windows(WSL)均可,推荐 Linux。
  • Python 3.8 以上(大多数系统自带)。
  • 网络能访问被控节点(SSH 端口 22 开放)。

被控节点要求

  • 支持 SSH 连接,有可登录的账号(root 或普通用户)。
  • Python 2.7 或 3.5 以上(Ansible 默认依赖 Python 执行模块,但通过 raw 模块也可用于极简环境)。
  • 不需要安装 Ansible。

第二步:安装 Ansible

在控制节点上执行以下命令安装(以 Ubuntu/Debian 为例):

sudo apt update
sudo apt install ansible -y

CentOS / RHEL 使用:

sudo yum install epel-release -y
sudo yum install ansible -y

验证安装:

ansible --version

看到版本号即成功。

第三步:配置 SSH 免密登录

Ansible 通过 SSH 连接被控节点,因此需要控制节点能够无密码登录到每一台被控机。

  1. 在控制节点生成 SSH 密钥(如果已有则跳过):
ssh-keygen -t rsa -b 4096
  1. 将公钥拷贝到被控节点:
ssh-copy-id root@被控节点IP

按提示输入被控机密码。
重复此操作直至所有被控节点都加入信任列表。

  1. 测试免密登录:
ssh root@被控节点IP "hostname"

如果能直接返回主机名则配置成功。

第四步:编写 Inventory(主机清单)

Inventory 告诉 Ansible 要管理哪些服务器。
创建一个纯文本文件,例如 /etc/ansible/hosts 或项目目录下的 hosts.ini

[webservers]
192.168.1.10
192.168.1.11 ansible_user=ubuntu ansible_port=22

[dbservers]
192.168.1.20 ansible_ssh_private_key_file=/home/user/.ssh/id_rsa
  • 方括号内是组名(可自定义),用于分组管理。
  • 每一行列出一个主机 IP 或域名,可指定连接用户、端口、密钥等。
  • 若不指定,Ansible 会用当前 SSH 默认用户(通常是 root)。

第五步:执行 Ad-hoc 命令实现批量操作

Ad-hoc 模式适合执行单条命令。
常用模块:

测试连通性

ansible all -i hosts.ini -m ping

若返回 pong 则表示连通正常。

批量执行 shell 命令

ansible webservers -i hosts.ini -m command -a "uptime"

批量安装软件(使用 apt 模块)

ansible all -i hosts.ini -m apt -a "name=curl state=present" --become

注意 --become 用于提权(类似 sudo)。

批量拷贝文件

ansible all -i hosts.ini -m copy -a "src=/tmp/myfile dest=/opt/"

第六步:避坑指南

  1. Host key checking 报错:首次连接时 SSH 会提示确认主机指纹。建议在 ansible.cfg 中设置 host_key_checking = False 或环境变量 ANSIBLE_HOST_KEY_CHECKING=False(注意安全风险)。
  2. Python 版本不匹配:被控端 Python 版本过低或路径不同。可在 Inventory 中指定 ansible_python_interpreter=/usr/bin/python3
  3. SSH 连接超时:检查控制节点是否能 ping 通被控机,防火墙是否放行 22 端口,并确认 sshd 服务运行。
  4. 权限不足:如果使用非 root 用户执行需要 sudo 的命令,确认该用户有 sudo 权限并设置 --become 参数。
  5. Inventory 语法错误:IP 地址后不要加空格,组名不要包含特殊字符。

验证效果

做完以上步骤后,你已具备 Ansible 批量管理多台服务器的基本能力。
可以尝试编写一个简单的 Playbook(例如安装 Nginx 并启动服务),批量应用到整个组,进一步体会自动化带来的效率提升。

如果你需要更复杂的任务编排,建议学习 Playbook 的语法和变量。
本文侧重于快速上手,后续可继续阅读“Ansible Playbook 入门”相关教程。

分享到:
上一篇
云原生微服务跨境项目部署:从零搭建到上线避坑指南
下一篇
Jenkins CI/CD自动化建站发布
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意