Ansible一键部署核心是编写幂等YAML任务并通过ansible-playbook触发,依赖SSH和Python,需配置控制节点、受控节点免密登录及主机清单,再编写含服务管理、配置渲染、数据库操作的Playbook并执行验证。

在 Linux 中用 Ansible 实现应用的一键自动化部署,核心是把部署流程拆解为可复用、可验证、幂等的 YAML 任务,并通过 ansible-playbook 命令统一触发。它不依赖客户端,只靠 SSH 和 Python 就能批量执行,真正实现“写一次,跑多次,处处一致”。
准备控制节点和受控节点
确保控制机(你操作的这台)已安装 Ansible,受控机(目标服务器)满足基础条件:
- 运行 SSH 服务,且能被控制机免密登录(推荐用
ssh-keygen+ssh-copy-id配置) - 已安装 Python 3.6+(多数现代发行版默认自带;若无,Ansible 可通过
raw模块先装 Python) - 网络连通,防火墙放行 22 端口
定义主机清单(Inventory)
编辑 /etc/ansible/hosts 或自定义路径(如 inventory.yml),用清晰分组描述目标环境:
all:
children:
app_servers:
hosts:
192.168.92.20:
ansible_user: deploy
ansible_ssh_private_key_file: ~/.ssh/id_rsa_app
db_servers:
hosts:
192.168.92.21:
然后用 ansible app_servers -m ping 测试连通性。成功返回 "ping": "pong" 表示就绪。
编写一键部署 Playbook
创建 deploy-app.yml,整合后端、前端、数据库等环节。例如部署 Spring Boot + Vue + Nginx 场景:
- 用
copy或get_url下载构建好的 jar 包和 dist 文件 - 用
systemd模块管理 Spring Boot 服务(含 unit 文件模板) - 用
template渲染 Nginx 配置,自动注入后端地址和静态路径 - 用
mysql模块建库、授权;用community.mysql.mysql_db管理结构 - 所有关键步骤加
when判断系统类型(ansible_facts['os_family'] == 'RedHat')或版本,提升兼容性
执行与验证
运行命令启动全流程:
ansible-playbook -i inventory.yml deploy-app.yml --limit app_servers
加 --limit 可指定范围,加 --check 可试运行(不实际变更),加 -v 或 -vvv 查看详细输出。部署完成后,建议在 Playbook 末尾加入 uri 模块做健康检查,比如访问 /actuator/health 或首页 HTTP 状态码校验。


















