使用 Juju 中的 mysql charm 与动态数据库凭证的最佳方法是什么?

使用 Juju 中的 mysql charm 与动态数据库凭证的最佳方法是什么?

我正在创建一个 Juju charm 来涵盖许多 Django 开发项目。我已安装 Django、wsgi 和 Apache2。Django 对创建的每个项目使用单独的数据库、用户和密码。当 mysql charm 只有一组数据库凭据时,我该如何向 charm 提供这些凭据?我想解析所有已安装 Django 项目的 python 路径,并准备好使用 mysql charm。如下所示,用户必须手动设置这些路径,并在将新的/不同的 Django 项目部署到云时更改它们。

user=`relation-get user`
password=`relation-get password`
host=`relation-get host`
database=`relation-get database`

我的问题:我是否需要创建一个 bash 脚本来自动创建与 Django 项目具有对应名称的 mysql charms?

答案1

您可以创建一个新的 mysql charm,它具有一个新接口,可以在请求时动态分配 dbs,并从 django charm 中使用它,或者将项目部署为单独的服务。

实际上,mysql 的新接口将使钩子根据连接服务的请求分配新的数据库,而不是在新服务与 mysql 相关/连接时创建它们。

另一种选择是,修复你的 django 项目以使用表前缀,我认为他们已经这样做了(或者可能是使用项目作为应用程序表前缀)。

编辑

最好的解决方案可能是仅使用管理界面关系,它为您提供 mysql 上的 root 用户,然后您可以根据需要为所有已安装的 django 项目创建其他 db(clint 在 irc 上向我指出)。

答案2

mysql charm 有多个接口,其中一个是专门为您的应用设计的,可让您拥有整个服务器的管理员权限。因此,您只需创建您的关系

requires:
  db:
    interface: mysql-root

这将保证您拥有“根”用户,并且您可以使用这些用户权限来创建数据库/用户/等等。您不会获得“数据库”,因为您可以创建任何数据库,所以请记住这一点。

相关内容