刚接触 Ansible 并在以下困境中寻求指导和/或代码。
Ansible 似乎是以服务器为中心的,迫使你从应用了角色的服务器的角度来思考,例如“这是一个 Web 和电子邮件服务器,这是一个数据库服务器,等等”。我无法想出一个解决方案来说明应用程序 A 应该部署在服务器 X 上。
对我来说,从应用程序的角度思考更自然,例如“应用程序 A 是任务关键型的,需要在 ServerBig 上运行,而应用程序 B 和 C 可以在 ServerSmall-N 上运行”。我知道您可能会说我应该将服务器分为任务关键型和普通型,但我不想在每个普通服务器上运行应用程序 B,而只想在一台服务器上运行,可能是目前使用最少的那台。而且这感觉不自然。
Ansible 可以以应用为中心吗?如果可以,这是否有意义?我是否应该转换一下并尝试一下?
答案1
您描述的用例(“应用程序 A 需要在 ServerBig 上运行”)与“这是一个 Web 和电子邮件服务器”完全相同,只是您将“Web”替换为“应用程序 A”。如果您为应用程序 A、应用程序 B 和应用程序 C 设置了单独的“类”,就像您为“Web 服务器”、“电子邮件服务器”和“数据库服务器”设置了单独的“类”一样,那么您将以完全相同的方式分配它们。
你在问题的最后一部分描述的是在一台轻负载机器上运行“应用程序 B”,这不是一个“配置管理”问题,而是一个动态资源分配问题,这是一个完全地不同的问题。一些配置管理系统有执行此操作的组件,或者至少尝试执行此操作,但实际上,您最好使用专门为此工作设计的东西。只要您愿意喝 Docker Kool-aid 并始终使用全容器,Kubernetes 似乎是该领域的“当前热点”。否则,我没有具体的建议,因为其中很大一部分取决于您的应用程序部署策略。