Рекомендация: как использовать Terraform для создания пользовательского MySQL (RDS) пользователя через CI? - PullRequest
1 голос
/ 07 октября 2019

В настоящее время я создал экземпляр RDS в частных подсетях моего VPC. Теперь я хочу создать пользователя с некоторыми привилегиями и грантами. Для этого я использую типы ресурсов mysql_user и mysql_grants в TF. Так как мой экземпляр находится в частной подсети, код TF не может быть выполнен как часть конвейера CI для создания пользователя Mysql и грантов.

Насколько я понимаю, у меня есть два варианта:

  1. Не терраформировать пользователя и грантов. Вместо этого войдите в экземпляр RDS через хост-бастион и вручную создайте пользователя.

  2. Создайте экземпляр RDS в общедоступной подсети (подсеть db с общедоступными подсетями). Затем используйте TF для создания пользователя и грантов. Измените экземпляр db и переместите его в частную подсеть.

Я более склонен не делать этого. 2, так как все кодируется и повторяется. Но вы хотите знать, есть ли лучший способ добиться этого.

1 Ответ

0 голосов
/ 07 октября 2019

У нас была похожая ситуация. Nr. 2 звучит как хорошая ситуация, пока вы не поймете, что описываете состояние в Terraform, и что-то подобное действительно трудно выразить легко. Кроме того, если вам нужно добавить больше пользователей позже, вы временно делаете вашу базу данных доступной для внешнего мира, что не идеально.

Наше решение заключалось в использовании Liquibase (инструментмы уже использовали для миграции баз данных, но любой такой инструмент будет работать) для создания пользователей и грантов.

Мы работали в Kubernetes, поэтому я мог создать задание Kubernetes через Terraform, которое запустило Liquibase и выполнило создание пользователя, но подобное решение, вероятно, возможно для вашей ситуации. Terraform поддерживает инициатора remote-exec для запуска задания на удаленном хосте, который можно использовать для запуска задания на бастионе-хосте.

...