运维批量管理工具Ansible实操

开始前需要准备好的三样东西

Ansible 是一个基于 SSH 的批量管理工具,你只需要一台装有 Linux 的机器作为控制节点,不需要在被管服务器上安装额外软件。

  • 控制节点:推荐 Ubuntu 20.04 以上或 CentOS 7/8,2G 内存即可。
  • 被管节点:任意 Linux 服务器,能通过 SSH 连接。
  • SSH 密钥对:在控制节点用 ssh-keygen -t rsa -b 4096 生成,然后通过 ssh-copy-id root@被管IP 把公钥复制到每台被管节点,实现免密登录。

确认你自己有 root 权限 或者可以使用 sudo -i 提权。

安装 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

输出会显示 Python 版本和配置文件路径,默认配置文件在 /etc/ansible/ansible.cfg

接着编辑主机清单文件 /etc/ansible/hosts,把你要管理的服务器 IP 写进去:

[webservers]
192.168.1.101
192.168.1.102

[dbservers]
192.168.1.201

方括号内的 webserversdbservers分组名,你可以按业务划分。

编写第一个批量执行任务

先测试连通性,执行以下命令,-i 指定清单文件(如果用的是默认文件可以省略),-m 指定模块:

ansible all -i /etc/ansible/hosts -m ping

如果返回绿色 "ping": "pong",说明连接成功。

接着用 command 模块批量查看所有服务器 uptime:

ansible webservers -m command -a 'uptime'

如果想让结果更直观,可以用 shell 模块执行管道命令:

ansible dbservers -m shell -a 'free -h | grep Mem'

当你需要重复执行一组操作时,建议写成 Playbook(YAML 文件)。
新建一个文件 first.yml

---
- name: 在 webservers 上安装 nginx
  hosts: webservers
  become: yes
  tasks:
    - name: 安装 nginx
      apt:
        name: nginx
        state: present
      when: ansible_os_family == "Debian"

    - name: 启动 nginx 并设置开机自启
      service:
        name: nginx
        state: started
        enabled: yes

使用 ansible-playbook first.yml 执行,Ansible 会根据每台机器的系统发行版自动跳过不适用的任务。

避坑:新手最常遇到的三个问题

1. SSH 连接失败
如果 ansible all -m ping 报错 Permission denied (publickey),请检查 SSH 密钥是否正确复制;或者在被管节点上执行 systemctl status sshd 确认 SSH 服务正常运行。

2. Python 解释器找不到
部分最小化系统未装 Python,被管节点需要运行:

# CentOS / RHEL
sudo yum install python3 -y
# Ubuntu / Debian
sudo apt install python3 -y

3. Playbook 执行时权限不足
当安装软件或修改系统文件时,需要在 Playbook 的 hosts 下面加上 become: yes,或者执行 ansible-playbook 时加 -b 参数。

如果任务卡住很久,可以加上 -vvv 开启详细日志:ansible-playbook first.yml -vvv

验证批量管理效果

执行以下命令确认 nginx 已经在所有 webservers 上运行:

ansible webservers -m shell -a 'systemctl is-active nginx'

返回全部 active 即成功。
也可以写一个简单的验证 Playbook:

---
- name: 验证 nginx 端口监听
  hosts: webservers
  tasks:
    - name: 检查 80 端口
      shell: ss -tlnp | grep 80
      register: result
    - debug: var=result.stdout_lines

如果你需要管理几十上百台服务器,建议把主机清单按业务、地区、环境分组,并定期用 ansible all -m ping 做一次连通性巡检。
掌握这些基础操作后,就能慢慢搭建完整的自动化运维体系了。

分享到:
上一篇
Git代码管理服务器配置使用:零基础搭建Git代码管理服务器
下一篇
SaltStack自动化运维配置指南
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意