自动化运维平台搭建实战:Ansible从入门到批量部署

为什么选择Ansible搭建自动化运维平台

对于刚接触服务器运维的同学,手动登录每台机器执行命令既低效又容易出错。自动化运维平台搭建的核心目标就是摆脱这种重复劳动。
Ansible 最大的优势是无需在被管节点安装客户端,通过 SSH 就能批量执行任务,学习成本低、部署快,非常适合零基础团队作为入门方案。

本文以 CentOS 7/8 为例,从零开始安装 Ansible、配置主机清单、编写第一个 Playbook,并给出常见踩坑点和验证方法。

前置准备:环境和密钥配置

在开始之前,你需要一台控制节点(管理机器)和至少一台被管节点(目标服务器)。
两者网络互通,并且控制节点能通过 SSH 访问被管节点。

在控制节点安装 Ansible

控制节点建议使用 Linux 系统。
SSH 登录后执行:

# 添加 EPEL 源(CentOS 7/8)
sudo yum install -y epel-release
# 安装 Ansible
sudo yum install -y ansible

安装完成后验证版本:

ansible --version

输出类似 ansible 2.9.x 即表示成功。
如果你的系统是 Ubuntu,使用 sudo apt install ansible

配置 SSH 免密登录

Ansible 默认通过 SSH 执行任务,所以需要让控制节点能无密码登录被管节点。

在控制节点生成密钥对(如果已有则跳过):

ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/id_rsa

将公钥复制到被管节点:

ssh-copy-id root@被管节点IP

输入一次密码后,后续登录就不再需要密码了。
测试免密是否生效:

ssh root@被管节点IP "hostname"

如果直接返回主机名,说明配置成功。

编写主机清单并执行基础命令

Ansible 使用 主机清单(Inventory) 来管理所有被管节点。
默认清单文件在 /etc/ansible/hosts,你也可以自定义。

编辑 /etc/ansible/hosts,添加被管节点:

[webservers]
192.168.1.101
192.168.1.102

[dbservers]
192.168.1.201 ansible_user=root

这里 [webservers][dbservers] 是组名,可以按功能分组。ansible_user 指定 SSH 用户,不写则默认使用当前用户。

然后执行第一条 Ansible 命令,测试连通性:

ansible all -m ping

如果被管节点返回 "pong": true,说明 Ansible 能正常工作。
随后我们可以批量执行一个系统命令,比如查看所有 web 服务器的内存使用:

ansible webservers -m shell -a "free -h"

这里的 -m shell 表示使用 shell 模块,-a 后跟要执行的命令。
这是最基础的自动化操作。

编写第一个Playbook实现批量部署

Playbook 是 Ansible 的核心,用 YAML 格式定义任务步骤。
下面以部署 Nginx 并启动服务为例,创建一个 deploy_nginx.yml

---
- name: 部署 Nginx 到 web 服务器
  hosts: webservers
  become: yes
  tasks:
    - name: 安装 nginx
      yum:
        name: nginx
        state: present

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

    - name: 拷贝自定义首页(可选)
      copy:
        src: /tmp/index.html
        dest: /usr/share/nginx/html/index.html

become: yes 表示使用 sudo 提权。
执行 Playbook:

ansible-playbook deploy_nginx.yml

执行过程中会显示每个任务的执行结果,绿色代表成功,红色代表失败。
部署完成后,用浏览器访问被管节点的 IP 就能看到 Nginx 欢迎页了。

避坑指南与高频问题

常见错误:无法连接或认证失败

检查点:

  • 控制节点能否 SSH 登录被管节点?重新执行 ssh root@IP 测试。
  • 如果被管节点更改了 SSH 端口,需要在主机清单中设置 ansible_port=2222
  • 首次连接时如果出现 HOST KEY NOT FOUND,可以设置 host_key_checking=False(修改 /etc/ansible/ansible.cfg 或在 Playbook 中添加环境变量)。

模块执行报错:module (yum) is missing arguments

YAML 缩进错误是新手最常犯的。
确保 yum: 下面的行缩进两个空格,且 namestate 对齐。

Playbook 运行超时怎么办?

如果任务涉及大量安装或大文件传输,可以在 /etc/ansible/ansible.cfg 中调大超时时间:

[defaults]
timeout = 60

如何验证自动化运维平台是否正常运行?

执行 ansible all -m command -a "uptime",查看所有机器返回的运行时间;
或者重新运行 Playbook 保证幂等性(多次运行结果不变)。

如果想深入学习,可以先掌握常见模块(copy、file、yum、service、user),再结合变量和模板实现更复杂的部署流程。自动化运维平台搭建是一个持续优化的过程,从简单的批量命令开始,逐步积累 Playbook 库,就能构建起适合自己团队的自动化体系。
分享到:
上一篇
服务器预测性维护监控新手搭建指南
下一篇
零基础搭建 Jenkins CI/CD 流水线
1
系统公告

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

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