Ansible 自动化技术操作指南:从入门到实践

Ansible 自动化技术操作指南:从入门到实践
WeekendAnsible 自动化技术操作指南:从入门到实践
文章内容涵盖入门概念、安装配置、核心组件、常用命令、Playbook 编写实例,以及在实际项目中的最佳实践。
🧩 Ansible 技术操作指南:从入门到实践
作者: Weekend
发布日期: 2025年10月
实验操作系统: Ubuntu 22.04 LTS
标签: DevOps、自动化运维、Ansible、Linux、CI/CD
一、Ansible 简介
什么是 Ansible?
Ansible 是一个轻量级的 自动化配置管理工具,主要用于:
- 批量部署应用;
- 配置服务器环境;
- 持续交付(CI/CD);
- 运维自动化脚本执行。
它的最大特点是:
- 无客户端(Agentless):只需 SSH 即可操作远程节点;
- 使用 YAML 编写 Playbook:语法简单,易读易维护;
- 幂等性(Idempotent):多次执行结果一致,不会重复操作。
二、环境准备与安装
1. 安装 Ansible
在 Ubuntu / Debian 系统上:
1 | sudo apt update |
在 CentOS / RHEL 系统上:
1 | sudo yum install -y epel-release |
验证安装是否成功:
1 | ansible --version |
2. 配置 SSH 免密登录
Ansible 通过 SSH 与目标节点通信,因此需要配置免密访问:
1 | ssh-keygen -t rsa |
三、核心概念解析
| 概念 | 说明 |
|---|---|
| Inventory | 主机清单文件,定义要管理的服务器。 |
| Playbook | 自动化任务脚本,使用 YAML 格式编写。 |
| Task | 任务,定义在 Playbook 中要执行的操作。 |
| Module | 模块,Ansible 的执行单元(如 copy、yum、shell)。 |
| Role | 模块化结构,用于组织复杂 Playbook。 |
| Variable | 变量,可在不同环境中动态替换参数。 |
四、Inventory 主机清单示例
一个简单的 inventory.yml 文件如下:
1 | all: |
📘 提示:
可以通过命令行指定 Inventory 文件:ansible -i inventory.yml all -m ping
五、常用命令速查表
| 命令 | 功能说明 |
|---|---|
ansible all -m ping |
测试所有主机连接情况 |
ansible webservers -m shell -a "uptime" |
在 webservers 组执行命令 |
ansible all -m copy -a "src=./index.html dest=/var/www/html/" |
批量复制文件 |
ansible all -m yum -a "name=httpd state=present" |
安装软件包 |
ansible-playbook -i inventory.yml site.yml |
执行 Playbook |
六、Playbook 编写入门
一个基础的 site.yml Playbook 示例:
1 |
|
运行命令:
1 | ansible-playbook -i inventory.yml site.yml |
七、使用 Roles 优化结构
当项目变复杂时,可以使用 ansible-galaxy init 创建 Role 结构:
1 | ansible-galaxy init roles/web |
生成目录结构如下:
1 | roles/ |
在 site.yml 中引用:
1 | - hosts: webservers |
八、变量与模板(Jinja2)
在 vars/main.yml 中定义变量:
1 | web_port: 8080 |
在模板 templates/nginx.conf.j2 中使用:
1 | server { |
Playbook 中应用:
1 | - name: 部署 Nginx 配置 |
九、实际案例:一键部署多节点环境
文件结构
1 | project/ |
一键部署命令
1 | ansible-playbook -i inventory.yml site.yml |
实现内容:
- 批量安装 Nginx;
- 部署统一首页;
- 启动服务;
- 自动化完成所有节点配置。
十、最佳实践与技巧
使用 Roles 管理大型项目结构
通过
ansible-vault加密敏感信息1
ansible-vault create secrets.yml
结合 Git + CI/CD 实现自动化发布
使用
tags精确执行部分任务1
ansible-playbook site.yml --tags "deploy"
保持幂等性与安全性
- 优先使用模块(如
apt、service)而非shell; - 测试 Playbook 时使用
--check模式。
- 优先使用模块(如
十一、总结
Ansible 是 DevOps 自动化体系中最优雅的一环。
它轻量、易学、无依赖,几乎适用于所有 Linux 环境。
无论是批量配置服务器、部署集群,还是持续交付流水线中执行配置任务,Ansible 都能让你的运维自动化之路更加高效稳定。
💡 最后总结:
未来的基础架构运维,都是「自动化优先」的。
学会 Ansible,不只是学一门工具,而是掌握「让机器替你干活」的能力。








