首页 > 解决方案 > 使用 Azure Devops CICD 使用 Terraform 部署 Azure SQL 数据对象

问题描述

我已经使用 Terraform 成功部署了 Azure SQL Server 和数据库。现在我想部署 SSDT 文件(现有数据库中的所有对象都使用 Terraform。)

我无法在存储库中的数据库对象下方找到要部署的 .tf 代码。

存储库中的数据库文件

标签: azureazure-devopsterraformdevopscicd

解决方案


你不会找到这样的资源,因为这不是 Terraform 的范围。Howeer 你仍然可以做解决方法和使用null_resource

resource "null_resource" "database-initialization" {

  triggers = {
    filename_sha1 = "${sha1(file("filename.sql"))}"
  }

  provisioner "local-exec" {
    command = <<EOT

        sqlcmd -U $SQL_ADMIN_LOGIN -S ${data.azurerm_sql_server.sql.fqdn} -P $SQL_FOUNDATION_ADMIN_PASSWORD -d ${var.db_name} -i "filename.sql"
        
    EOT
  }
}

您可以以类似的方式使用 sqlpackage 来部署例如 DACPAC。但是,您需要计算要运行的文件的第一个哈希值并将其用作触发器,每次更改文件时都会触发资源。


推荐阅读