我已经将Azure SQL Server定义为:
resource "azurerm_sql_server" "azure-sql-server" {
name = "xxxxx"
resource_group_name = "xxxx"
location = "xxxx"
version = "12.0"
administrator_login = "admin_login"
administrator_login_password = "password"
}因为资源已经存在于我的Azure订阅中,所以我使用terraform import命令导入了它,该命令可以工作。
当我使用terraform plan时,terraform说administrator_login_password将被就地更新,即使我使用了服务器中设置的相同密码。
我该如何避免它的发生?
发布于 2021-03-12 12:14:06
使用terraform import将当前资源读入状态时,将不会检索密码。这是因为出于安全考虑,Azure API (和大多数其他API)将不支持从其相关端点读取密码。因此,当前状态中的密码是未知的,Terraform提供程序将尝试更新它。
可以通过以lifecycle元块ignore_changes元参数为目标的password参数来防止这种情况:
resource "azurerm_sql_server" "azure-sql-server" {
name = "xxxxx"
resource_group_name = "xxxx"
location = "xxxx"
version = "12.0"
administrator_login = "admin_login"
administrator_login_password = "password"
lifecycle {
ignore_changes = [administrator_login_password]
}
}而Azure提供程序将不再尝试对您的资源执行更新操作。ignore_changes的相关文档是这里。
https://stackoverflow.com/questions/66599373
复制相似问题