Как создать пользователя базы данных и назначить ему роль с помощью terraform

Как создать пользователя базы данных и назначить ему роль с помощью terraform

Я создал SQL-сервер и базу данных с помощью Terraform, теперь мне нужно создать пользователя базы данных и назначить ему роль.

Как мне это сделать? Пожалуйста, подскажите.

решение1

Я начал работать над поставщиком Terraform, который будет делать это наhttps://github.com/jayway/terraform-provider-mssql. Это все еще очень ранняя работа, но мне удалось сделать так, чтобы она предоставляла логины и пользователей для этих логинов в локальном экземпляре SQL Server (который уже работал, поэтому я вообще не тестировал его в сочетании, например, с поставщиком AzureRM). Тестирование и вклад очень приветствуются (но пока не используйте его для производственных сценариев)!

решение2

Создание пользователей и ролей — это функция SQL-сервера, а не платформы Azure. Таким образом, поставщик Terraforms ARM не занимается этим, и, насколько я могу судить, у Terraform нет поставщика MSSQL для этой работы (есть MYSQL и Postgres). Вам нужно будет выполнить эту работу с помощью скриптов SQL.

решение3

Вот как я это сделал, используя postgres/psql.

Сначала сгенерируйте хеш пароля md5, добавив имя пользователя к паролю:

$ echo -n mypasswordbob|md5sum
fd9c9714184c4ae189ca83f1c21aeeb8

Добавьте строку «md5» к полученному хешу, чтобы получить зашифрованную форму пароля, которую примет Postgres: md5fd9c9714184c4ae189ca83f1c21aeeb8

Затем добавьте отдельный файл шаблона с командами базы данных, которые вы хотите запустить:

data "template_file" "db_roles" {
  vars {
    username_bob = "bob"
    password_bob = "md5fd9c9714184c4ae189ca83f1c21aeeb8"
  }
  template = <<EOF

  create user $${username_bob};
  alter user $${username_bob} WITH ENCRYPTED PASSWORD '$${password_bob}';

  EOF
}

Наконец, добавьте remote-exec provisioner как часть создания сервера:

  provisioner "remote-exec" {
    inline = [
      "set -x",
      "cat > db_roles.sql <<EOL\n${data.template_file.db_roles.rendered}\nEOL",
      "psql -U myuser < db_roles.sql",
    ]
  }

решение4

Используйте средство подготовки файлов Terraform для развертывания SQL, а затем используйте средство подготовки remote-exec для загрузки его в SQL Server.

Связанный контент