服务器运维自动化工具Ansible入门

什么时候需要服务器运维自动化工具

如果你手头有3台以上的服务器,
每次升级软件、
改配置文件都要一台台SSH进去敲命令,
非常容易漏掉某台或打错命令。服务器运维自动化工具能让你在一台控制机上写一个任务文件,
然后一次发往所有目标服务器自动执行。

本文以最流行的Ansible为例,帮你从零搭建一套自动化运维环境。

准备条件:两台服务器和一个密钥

  • 一台控制机(可以是你的本地电脑或一台轻量云服务器),安装Linux(CentOS / Ubuntu均可)
  • 至少一台目标服务器(支持SSH连接,同个内网或公网均可)
  • 控制机能通过SSH密钥方式免密登录目标服务器(如果不会配置密钥,参考下面简短步骤)
配置密钥示例(在控制机执行)

`bash
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""
ssh-copy-id root@目标服务器IP
`

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

出现版本号即成功。

添加目标服务器到主机清单

编辑 /etc/ansible/hosts 文件(或新建一个文件 ~/myhosts),添加目标服务器IP:

[webservers]
192.168.1.10
192.168.1.11

[webservers] 是组名,你可以随意命名。

测试连通性

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

如果返回 "ping": "pong" 表示连接成功。
如果失败,请检查SSH免密配置和防火墙。

编写第一个Playbook:自动安装Nginx

Playbook是Ansible的任务脚本,使用YAML格式。
新建文件 install-nginx.yml

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

说明hosts 指定目标组,become: yes 表示提权为root,apt 模块用于Debian系系统。
如果目标服务器是CentOS,请将 apt 改为 yum,并调整 when 条件。

执行Playbook:

ansible-playbook install-nginx.yml -i /etc/ansible/hosts

观察输出,如果显示 changedok 表示操作成功。

避坑指南和高频问题解答

问题1:执行Playbook时提示“SSH连接失败”

  • 检查目标服务器SSH服务是否运行:systemctl status sshd
  • 确认控制机公钥已正确添加到目标服务器的 ~/.ssh/authorized_keys
  • 如果目标服务器禁止密码认证,确保密钥已配置并验证 ssh root@目标IP 能直接登录

问题2:模块执行时报错“权限不足”

  • 确保Playbook中使用了 become: yes,并且目标服务器的sudo配置允许该用户无密码执行sudo(在 /etc/sudoers 中添加 username ALL=(ALL) NOPASSWD:ALL

问题3:Playbook语法检查

执行前可用 ansible-playbook --syntax-check your.yml 检查语法错误,YAML对缩进非常敏感,请统一使用空格不要用Tab。

问题4:如何批量执行自定义命令?

使用 commandshell 模块,例如:

- name: 查看当前内存
  command: free -h

效果验证与后续扩展

执行完Playbook后,在浏览器访问目标服务器的IP,如果看到Nginx欢迎页说明部署成功。
你也可以继续编写更多Playbook来管理用户、防火墙、应用部署等。

总结:通过服务器运维自动化工具Ansible,你只需要维护一份代码就能控制成百上千台服务器,大大减少重复劳动。
建议从简单任务开始,逐步完善你的Playbook库。
遇到问题时,多用 ansible-doc 查阅模块文档,或者回看本文的避坑部分。

如果你正在实践服务器运维自动化,先按照本文安装Ansible并跑通一个任务,再根据自己环境微调。
自动化运维并不难,关键在于勤于测试和记录。

分享到:
上一篇
Docker镜像加速器配置:手把手教你配置Docker镜像加
下一篇
宝塔面板PHP扩展安装教程指南
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意