![使用 Ubuntu JUJU 实现混合云自动化](https://linux22.com/image/972109/%E4%BD%BF%E7%94%A8%20Ubuntu%20JUJU%20%E5%AE%9E%E7%8E%B0%E6%B7%B7%E5%90%88%E4%BA%91%E8%87%AA%E5%8A%A8%E5%8C%96.png)
我是帮助组织部署云服务的管理员。是否可以使用 Juju 根据用户请求部署服务。
请回答我以下的疑问。
用户使用 Web 界面请求服务。是否可以使用 JUJU 自动部署服务?
根据用户请求,我们可以使用 JUJU 部署服务。部署后,我们希望将虚拟机和服务分配给请求的用户。如何为已部署的虚拟机/服务创建用户名和密码?
哪种编程语言支持 JUJU API 最好?
我们计划使用 JUJU 创建混合服务部署。使用 Web 界面,用户可以选择要使用哪个公共云来部署服务。如何将特定云服务部署到特定的公共云服务提供商?
请帮助解决我的疑问。
答案1
聚聚图形界面(来源:lp:juju-gui; 居住演示)允许您通过 Web 浏览器在 Juju 环境中部署服务。这是一款免费软件,AGPL v3 许可证,因此如果它不太符合您的需求,您可以根据需要对其进行分叉和修改。要使用它,您需要将其部署到您的环境中并公开它。请参阅部署说明。
如果这不适合你的目的,你可以直接使用 Juju websocket 和基于 HTTPS 的 API(这就是 GUI 从 JavaScript 中所做的)。关于它的文档不太完善,而且它自动生成的来自 Go 源代码。有一些简明的开发人员文档juju-core 源。
使用 Juju 进行自动化/脚本化(非基于 Web)部署的另一种选择是基于 Python 的Juju 部署者。
Juju 尚不支持基于角色的权限和多个用户帐户的概念,但计划支持。因此,Juju 无法直接帮助您的客户进行用户帐户管理,除非您编写提供此功能的自定义 charm。
Juju API 通过 JSON 编码的请求/响应通过 websocket 工作。它被设计为独立于语言。目前有 Go、JavaScript 和 Python 的客户端,但遗憾的是不是作为独立库,而是作为其他产品(分别是 juju-core、GUI 和 Deployer)的一部分。
最后,每个 Juju 环境都特定于单个云提供商。因此,为了选择在哪里部署服务,您需要在 environment.yaml 中为所选的公共云生成配置,然后引导它(每个客户),最后部署服务。一个有趣的想法是手动配置,它允许您将任何现有机器添加到环境中,只要您可以使用 SSH 连接到它,并且该机器可以连接回状态服务器节点(如果您要向其中添加关系,那么其他机器也可以)。
所以您会看到,即使 Juju 可以帮助您进行部署和编排,也必须在其周围定制大量“粘合剂”,以实现您想要向最终用户提供的此类托管解决方案。