最佳实践:如何使用 Terraform 通过 CI 创建自定义 MySQL (RDS) 用户?

Vin*_*ino 5 mysql amazon-web-services amazon-rds terraform

我目前已在 VPC 的私有子网中创建了一个 RDS 实例。现在我想创建一个具有一些权限和授权的用户。为此,我使用TF 中的mysql_usermysql_grants资源类型。由于我的实例位于私有子网中,因此 TF 代码无法作为 CI 管道的一部分执行来创建 Mysql 用户和授权。

据我了解,我有两个选择:

  1. 不要对用户和授权进行地形改造。而是通过堡垒主机登录 RDS 实例并手动创建用户。

  2. 在公有子网(db子网和公有子网)中创建RDS实例。然后使用 TF 创建用户并授予权限。修改数据库实例并将其移动到私有子网。

我更倾向于不做。2 因为一切都是代码并且可重复。但想知道是否有更好的方法来实现这一目标。

Blo*_*je5 2

我们也有类似的情况。编号。2 听起来像是一个很好的情况,直到您意识到您在 Terraform 中描述了状态,而类似的东西确实很难轻松表达。此外,如果您稍后需要添加更多用户,您将暂时使您的数据库可供外界访问,这并不理想。

我们的解决方案是使用Liquibase(我们已经在使用该工具进行数据库迁移,但任何此类工具都可以)来创建用户和授权。

我们在 Kubernetes 中运行,因此我可以通过 Terraform 创建一个 Kubernetes 作业,触发 Liquibase 并执行用户创建,但类似的解决方案可能适合您的情况。Terraform 支持远程执行配置程序来触发远程主机上的作业,该配置程序可用于触发堡垒主机上的作业。