У меня есть следующий фрагмент кода Terraform, где Terraform извлекает пароль администратора sql из хранилища ключей. Когда я изменил логин и пароль администратора в хранилище ключей, а затем снова запустил terraform для обновления сервера sql, он уничтожил базу данных sql и сервер sql.
Это стандартная процедура или я могу изменить это поведение? Можно было понять, что воссоздание ресурсов в производственной среде нецелесообразно. Я знаю, что ловушка жизненного цикла может предотвратить удаление ресурса, но такая вещь может нарушить конвейер, если я прав.
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_login
. administrator_login_password
можно обновлять отдельно, что не приводит к повторному созданию экземпляра.
ForceNew
в параметреadministrator_login_password
, поэтому это не должно происходить исключительно из-за обновления пароля. - person ydaetskcoR   schedule 07.12.2020