Ansible 是什么

一句话总结

一个自动配置服务器的工具。你告诉它”这台机器要装 Docker、装 Agent、配 nginx”,它自动 SSH 过去帮你全搞定,不用你手动敲命令。


🤔 为什么会有它 / 解决了什么问题

没有 Ansible 之前,Press 加一台新服务器需要手动做:

  • SSH 进去装 Docker
  • 装 rsync、openssh-client
  • 拉 Agent 代码、装 Python 依赖
  • 配置 nginx、supervisor
  • 设防火墙

每台机器都要重做一遍,容易漏步骤。Ansible 把整套操作编码为一个 playbook(剧本),你点一下按钮,它自动跑完全部步骤。

它填补的空白:把”人工操作 VPS”变成”可重复执行的代码”。


🔍 具体原理 / 运作逻辑

Ansible 的核心是 playbook——一个 YAML 格式的文件,里面写好了”这台机器应该是什么样的”:

  • 装哪些包
  • 跑哪些命令
  • 放哪些文件

你告诉 Ansible 目标机器的 IP 和 SSH 密钥,它通过 SSH 连过去,逐条执行 playbook 里的任务。跑完之后,机器就变成 playbook 描述的样子。

关键点:Ansible 不需要在目标机器上预装任何东西(只需要 SSH),这和 Agent 不同。


🧭 什么情况下会用到 / 什么场景会遇到它

  • 新建一台 f-B 或 n-B VPS 时 → Press UI 点 “Setup Server” → Ansible 自动配好
  • 某台机器重建后 → 再跑一次 playbook → 恢复到可用状态
  • 批量部署多台机器时 → 同一个 playbook 对所有机器跑一遍

⚖️ 副作用 / 代价 / 取舍

  • playbook 变量如果没传对(如 press_url),配出来的机器连不上 Press,需要手动修正
  • playbook 是我们 fork 的 Agent 仓库的一部分,上游更新时需要注意合并冲突
  • Ansible 本身不复杂,但 playbook 写错了会导致所有机器统一配错

🕰️ 来历

  • 谁创造:Michael DeHaan,2012 年发布
  • 在 Press 中的角色:Frappe Cloud 团队选择 Ansible 作为服务器配置工具。我们自建 Press 沿用同样的机制——playbook 在 Agent 仓库里,Ansible 命令由 Press 触发

🔗 关联 / 经常一起出现的概念

  • Agent:Ansible 配置好机器后,Agent 是常驻在机器上的进程,负责接收 Press 的后续指令。Ansible 是”装房子”,Agent 是”住房子”
  • playbook:Ansible 的剧本文件,定义了一台机器从零到可用的所有步骤
  • Press UI “Setup Server”:这个按钮的背后就是 Ansible 在跑 playbook

📎 记忆锚点

Ansible = 装修队。接到新房(新 VPS),按图纸(playbook)一次性装好水电门窗(Docker、Agent、nginx),装完就走,不常驻。


📝 更新日志

日期改动原因
2026-07-08首次创建名词科普