Я создал сервер sql и базу данных с помощью terraform, теперь мне нужно создать пользователя базы данных и назначить ему роль.
Как я могу это сделать. Пожалуйста, предложите мне.
Я начал работать над провайдером Terraform, который сделает это в https://github.com/jayway/terraform-provider-mssql. Это все еще очень ранняя работа, но мне удалось настроить учетные записи и пользователей для этих учетных записей в локальном экземпляре SQL Server (который уже работал, поэтому я вообще не тестировал его вместе, например, с поставщиком AzureRM) . Мы очень приветствуем тестирование и участие (но пока не используйте его для производственных сценариев)!
Создание пользователей и ролей - это функция SQL-сервера, а не платформы Azure. Таким образом, провайдер ARM Terraforms этим не занимается, и, насколько я могу судить, у Terraform нет поставщика MSSQL для этой работы (у него есть MYSQL и Postgres). Вам нужно будет выполнить эту работу с помощью сценариев SQL.
Используйте средство подготовки файлов Terraform для развертывания SQL, затем используйте средство удаленного выполнения, чтобы загрузить его в SQL Server.
Вот как я это сделал с помощью 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
}
Наконец, добавьте инициатор удаленного выполнения как часть создания вашего сервера:
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",
]
}