gpt4 book ai didi

azure - Terraform Azure SQL 服务器管理员密码更改强制重新创建资源

转载 作者:行者123 更新时间:2023-12-02 06:40:04 31 4
gpt4 key购买 nike

我有以下一段 Terraform 代码,其中 Terraform 从 key 保管库获取 sql 管理员密码。当我更改 key 保管库中的管理员登录名和密码,然后再次运行 terraform 来更新 sql server 时,它会破坏 sql 数据库和 sql server。

这是标准程序还是我可以改变这种行为?人们可以理解,在生产环境中重新创建资源实际上并不可行。我知道生命周期 Hook 可以防止删除资源,但如果我是正确的,这样的事情就会破坏管道。

data "azurerm_key_vault_secret" "sql_admin_user_secret" {
name = var.sql_admin_user_secret_name
key_vault_id = data.azurerm_key_vault.key_vault.id
}

data "azurerm_key_vault_secret" "sql_admin_password_secret" {
name = var.sql_admin_password_secret_name
key_vault_id = data.azurerm_key_vault.key_vault.id
}

resource "azurerm_sql_server" "sql_server" {
name = var.sql_server_name
resource_group_name = var.resource_group_name
location = var.location
version = var.sql_server_version
administrator_login = data.azurerm_key_vault_secret.sql_admin_user_secret.value
administrator_login_password = data.azurerm_key_vault_secret.sql_admin_password_secret.value
}

resource "azurerm_sql_database" "sql_database" {
name = var.sql_database_name
resource_group_name = var.resource_group_name
location = var.location
server_name = azurerm_sql_server.sql_server.name
edition = var.sql_edition
requested_service_objective_name = var.sql_service_level
}

我可以添加类似的内容,但这只能防止破坏并分别忽略这些字段中的更改。这又不是一个真正的选择。

lifecycle {
prevent_destroy = true
ignore_changes = ["administrator_login", "administrator_login_password"]
}

更新:

工作方式是永远不要更新administrator_loginadministrator_login_password 可以单独更新,这不会导致实例重新创建。

最佳答案

根据 official doc ,如果您更改administrator_login,则预计会重新创建资源。但是,如果您仅更改 administrator_login_password,它应该会更新。

administrator_login - (Required) The administrator login name for the new server. Changing this forces a new resource to be created.

这里无能为力,因为 Terraform 正在与 Azure API 进行通信,而 Azure API 的设计目的不是在不创建新资源的情况下更新 Azure SQL 的管理员用户 ID。

关于azure - Terraform Azure SQL 服务器管理员密码更改强制重新创建资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65143585/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com