如何使用 terraform 建立資料庫使用者並為其指派角色

如何使用 terraform 建立資料庫使用者並為其指派角色

我已經使用 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 中。

相關內容