terraform - 使用 local-exec 供应商更新资源
问题描述
我用 local-exec 供应商写了一个 null_resource :
resource "null_resource" "custom-users" {
depends_on = [azurerm_sql_database.db]
for_each = { for user_def in var.custom_users : format("%s-%s", user_def.name, user_def.database) => user_def }
triggers = {
user = each.value.name
password = random_password.custom-users[each.key].result
roles = join(",", each.value.roles)
database = each.value.database
server = azurerm_sql_server.server.fully_qualified_domain_name
admin_login = var.administrator_login
admin_password = var.administrator_password
}
provisioner "local-exec" {
command = <<EOC
${path.module}/scripts/mssql_users.py --debug \
-s ${azurerm_sql_server.server.fully_qualified_domain_name} \
-d ${each.value.database} \
--admin-user ${var.administrator_login} \
--admin-password '${var.administrator_password}' \
--user ${each.value.name} \
--password '${random_password.custom-users[each.key].result}' \
--roles ${join(",", each.value.roles)}
EOC
}
provisioner "local-exec" {
when = destroy
command = <<EOC
${path.module}/scripts/mssql_users.py --debug \
-s ${self.triggers.server} \
-d ${self.triggers.database} \
--admin-user ${self.triggers.admin_login} \
--admin-password '${self.triggers.admin_password}' \
--user ${self.triggers.user} \
--delete
EOC
}
}
当“密码”属性改变时,terraform 销毁并创建资源。
我想在不破坏资源的情况下对资源进行真正的更新。
如果 terraform 只是再次运行 local-exec 配置程序,就足够了。
我将在 python 脚本中管理更新。
有没有办法不破坏资源?
谢谢。
大卫。
解决方案
推荐阅读
- java - Thymeleaf 和 Spring Boot 导致 TypeMismatchException
- reactjs - Material UI 覆盖样式,增加了特异性
- azure - PHP 版本不是通过 ARM 模板设置的
- c# - C# 从 XML 获取特定元素
- delphi - Delphi 10.3 (Rio) 社区版,打开项目不打开任何源文件
- vb.net - 将后续号码添加到已添加的现有号码
- python - 如何将多个数组提供给 keras 机器学习算法?
- hadoop - 是否可以升级为 HDP 集群提供元数据存储的数据库?
- google-apps-script - 在 Google 表格中创建分组
- angular - ng serve --open 在 vs 代码上创建问题