从零搭建运维自动化平台:Ansible 控制机部署与首个任务验证

运维自动化平台搭建不一定一上来就上 Jenkins、GitLab CI 或商业运维系统。
如果你只是想批量执行命令、统一分发配置、避免逐台登录服务器,用 Ansible 搭一个轻量控制机是最省事的起点。
它不需要在被管节点装客户端,只要控制机能通过 SSH 登录目标机即可。
下面这套流程在一台 Linux 控制机上完成,目标是把「一台机器批量管多台机器」这条链路先跑通,再往上叠加更复杂的编排。

先确认环境和前提

这套方案适合管理 Linux 服务器、网络可达、且你有目标机登录权限的场景。
开始前请确认以下条件:

  • 控制机:一台可用的 Linux(CentOS、Ubuntu、Debian 均可),能访问目标机的 22 端口。
  • 目标机:至少一到两台 Linux,且你知道登录用户名和密码或已有密钥。
  • 权限:控制机上有 sudo 权限,用于安装软件。
  • 网络:控制机能 ping 通目标机,ssh 能正常连接。

先验证连通性,避免后面报错时误判:

ping -c 2 192.168.1.10
ssh root@192.168.1.10

如果 SSH 都连不上,先解决网络或防火墙问题,再继续安装 Ansible。

安装 Ansible 控制机

Ansible 只装在控制机,目标机不需要装。
根据系统选择对应命令:

# Ubuntu / Debian
sudo apt update
sudo apt install -y ansible

# CentOS / Rocky / AlmaLinux
sudo yum install -y epel-release
sudo yum install -y ansible

安装完成后确认版本和可用性:

ansible --version

能正常输出版本信息即表示控制机就绪。
如果提示找不到命令,检查是否安装成功或 PATH 是否异常。

配置 SSH 免密登录

Ansible 默认走 SSH,如果每次都输密码,批量执行会非常麻烦。
推荐用密钥免密:

# 在控制机生成密钥(已存在可跳过)
ssh-keygen -t rsa -b 2048

# 把公钥推送到目标机
ssh-copy-id root@192.168.1.10

推送后测试一次,必须做到不再提示输入密码:

ssh root@192.168.1.10

如果仍要密码,检查目标机 ~/.ssh/authorized_keys 权限是否为 600,以及 ~/.ssh 目录是否为 700。

编写主机清单 Inventory

Inventory 是 Ansible 认识被管节点的入口。
新建一个目录并创建清单文件:

mkdir -p ~/ansible-lab
cd ~/ansible-lab
vi hosts.ini

写入以下内容,把 IP 换成你自己的目标机:

[web]
192.168.1.10
192.168.1.11

[web:vars]
ansible_user=root

分组名 web 可以按业务自定义,ansible_user 指定登录用户。
如果你的 SSH 端口不是 22,再加一行 ansible_port=2222。

跑通第一条批量任务

先用 ping 模块测试控制机与所有目标机的连通性。
注意这里的 ping 不是系统 ping,而是 Ansible 的连通性检测:

ansible -i hosts.ini web -m ping

期望看到每台机器返回 pong 和 SUCCESS。
只要有机器返回 UNREACHABLE,说明 SSH 或网络有问题,先回到免密那一步排查。

连通后执行一条真实命令,比如查看各机器运行时间:

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

如果这条命令能同时返回多台机器的结果,说明你的运维自动化平台骨架已经跑通。
下面就可以把重复操作写成 playbook,例如批量装 Nginx、统一改配置、定时巡检。

容易踩的几个坑

  • 在目标机也装了 Ansible:没必要,Ansible 是无代理架构,只有控制机需要装。
  • 用 root 直连却未开权限:部分系统默认禁止 root 远程登录,需改用普通用户加 become。
  • 主机清单写错分组名:执行时 web 必须和 hosts.ini 里的分组名完全一致。
  • 首次连接卡在指纹确认:可临时加 ANSIBLE_HOST_KEY_CHECKING=False 跳过,但生产环境建议先手动登录一次确认指纹。
  • 防火墙拦截 22 端口:连通性测试失败时,优先检查目标机防火墙规则。

验证是否真的生效

判断平台是否搭好,不只看命令有没有输出,还要确认结果一致:

  • ansible -i hosts.ini web -m ping 全部返回 SUCCESS。
  • 批量命令返回的机器数量与 Inventory 中定义的数量一致。
  • 手动挑一台目标机执行同样命令,结果与 Ansible 返回一致。
  • 新增一台目标机后,只改 Inventory 就能纳入管理,无需改动控制机其他配置。

满足这几条,说明基础自动化链路可靠。
后续再引入 playbook、角色和定时任务,风险会低很多。

常见疑问

必须用 Ansible 吗,Python 脚本不行吗?
脚本适合单次或少量机器,机器一多、逻辑一复杂,维护成本会快速上升。Ansible 用声明式配置和现成模块,更利于长期维护和交接。

目标机是 Windows 可以吗?
Ansible 管理 Windows 需要走 WinRM 并安装相应模块,配置方式和 Linux 不同,新手建议先用 Linux 跑通再扩展。

控制机需要一直开着吗?
执行任务时需要在线,任务执行完可以关闭;但如果你用定时任务做巡检,控制机需保持运行。

先把控制机、免密和 Inventory 这三件事做扎实,运维自动化平台搭建的后续步骤会顺很多。
遇到报错时,优先回到连通性和权限这两层排查,多数问题都能定位。

分享到:
上一篇
ITIL运维流程配置:从工单到闭环的实操指南
下一篇
运维工单系统搭建:零基础部署与排错指南
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意