我已經使用 terraform 建立了 sql server 和資料庫,現在我必須建立資料庫使用者並為其指派角色。
我怎樣才能做到。請建議我。
答案1
我已經開始研究 Terraform 提供程序,該提供程序將在https://github.com/jayway/terraform-provider-mssql。這仍然是非常早期的工作,但我已經設法在本機 SQL Server 實例中為這些登入配置登入名稱和使用者(該執行個體已經在運行,所以我根本沒有與 AzureRM 提供者一起測試它) 。非常歡迎測試和貢獻(但暫時不要將其用於生產場景)!
答案2
建立使用者和角色是 SQL Server 的功能,而不是 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
}
最後,新增一個遠端執行配置程式作為伺服器建立的一部分:
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,然後使用遠端執行配置程式將其載入到 SQL Server 中。