Ansible统一管理多台Linux服务器的核心是免密SSH连接、inventory分组定义、模块驱动和playbook编排;无需被控端安装客户端,只需SSH可达且Python版本≥2.6即可批量执行命令、部署配置与服务管理。

用 Ansible 统一管理多台 Linux 服务器,核心在于“免密连接 + 清单定义 + 模块驱动 + playbook 编排”。不需要在被控端装客户端,只要 SSH 通、Python 有(2.6+),就能批量执行命令、部署配置、启停服务。
一、快速搭建控制环境
在一台机器(比如你的运维跳板机或本地工作站)上安装 Ansible:
- Ubuntu/Debian:sudo apt update && sudo apt install ansible
- CentOS/RHEL:sudo yum install epel-release && sudo yum install ansible(或 dnf)
- 验证安装:ansible --version,看到版本号即成功
Ansible 默认读取 /etc/ansible/hosts 作为主清单文件,你也可以自定义路径(如 ansible -i ./my_hosts ...)。
二、配置免密 SSH 连接
Ansible 通过 SSH 操作目标主机,必须提前打通免密登录。不是“禁用密码”,而是让控制机可无交互登录每台被控机:
- 在控制机生成密钥:ssh-keygen -t rsa -b 4096(一路回车)
- 分发公钥到每台目标服务器:ssh-copy-id user@192.168.1.10(替换为实际 IP 和用户)
- 测试连通性:ssh user@192.168.1.10 不输密码能直接登录,才算成功
若目标机用非标准端口或非 root 用户,可在 inventory 中指定:web01 ansible_host=192.168.1.10 ansible_port=2222 ansible_user=deploy
三、编写简单 inventory 分组管理
把服务器按角色或环境分类,是统一管理的基础。例如创建 ./inventory:
[web] web01 ansible_host=192.168.1.10 web02 ansible_host=192.168.1.11[db] db01 ansible_host=192.168.1.20
[all:vars] ansible_python_interpreter=/usr/bin/python3
这样就可以对整组操作:ansible web -i ./inventory -m ping 测试 Web 组连通性;ansible db -a "df -h" 查看所有 DB 服务器磁盘使用情况。
四、从 ad-hoc 命令过渡到 playbook 自动化
ad-hoc 命令适合临时检查或简单操作;复杂流程(如“更新 Nginx 配置 → 重载服务 → 验证端口”)建议写成 playbook:
- 新建 deploy-nginx.yml:
---
- hosts: web
become: true
tasks:
- name: Copy nginx config
copy:
src: ./files/nginx.conf
dest: /etc/nginx/nginx.conf
owner: root
group: root
mode: '0644'
- name: Reload nginx
service:
name: nginx
state: reloaded
- 执行:ansible-playbook -i ./inventory deploy-nginx.yml
Playbook 支持变量、条件判断、循环、错误处理等,是真正落地批量运维的关键载体。










