能,而且这正是 Ansible 的主要设计目的之一。
下面从“为什么能简化”以及“怎么简化”两个角度说清楚。
你写的是:
“服务器最终应该是什么状态”
而不是:
“先执行 A,再执行 B,如果失败怎么办”
- name: 确保 nginx 已安装
apt:
name: nginx
state: present
Ansible 会自动判断:
[web]
web1 ansible_host=10.0.0.1
web2 ansible_host=10.0.0.2
一条命令:
ansible web -m ping
| 场景 | 传统方式 | Ansible |
|---|---|---|
| 初始化新服务器 | 手动 SSH 配置 | 一条 playbook |
| 批量装软件 | 每台登录操作 | 一次执行 |
| 配置管理 | 改文件易遗漏 | 模板 + 变量 |
| 服务启停 | 人工操作 | module 控制 |
| 发布应用 | 脚本 + 人工 | role + playbook |
| 安全基线 | 文档 + 检查 | 自动校验 |
ssh root@web1
apt update
apt install -y nginx
systemctl enable nginx
systemctl start nginx
# 然后 web2、web3……
- hosts: web
become: yes
tasks:
- apt:
name: nginx
state: present
- systemd:
name: nginx
enabled: yes
state: started
ansible-playbook nginx.yml
✅ 一次写好,永久复用
它适合:
不太适合:
Ansible 把“重复、易错、依赖人”的运维,变成“可描述、可复用、可审计”的工程问题。
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。