[英]Terraform Azurerm: Create blob if not exists
我从创建存储帐户、容器和块 blob 的代码中获得了 Terra。 是否可以配置仅当块 blob 不存在时才创建它?
在重新运行 terraform 的情况下,如果 blob 已经存在,我不想替换它,因为内容可能已被手动修改,我想保留它。
有小费吗? 我唯一能想到的替代方案是在进一步的部署步骤中运行 powershell/bash 脚本,如果需要,它会创建文件,但我很好奇这是否可以仅使用 Terraform 来完成。
locals {
storage_account_name_teast = format("%s%s", local.main_pw_prefix_short, "teast")
}
resource "azurerm_storage_account" "teaststorage" {
name = local.storage_account_name_teast
resource_group_name = azurerm_resource_group.main.name
location = var.location
account_tier = var.account_tier
account_replication_type = var.account_replication_type
allow_nested_items_to_be_public = false
min_tls_version = "TLS1_2"
network_rules {
default_action = "Deny"
bypass = [
"AzureServices"
]
virtual_network_subnet_ids = []
ip_rules = local.ip_rules
}
tags = var.tags
}
resource "azurerm_storage_container" "teastconfig" {
name = "config"
storage_account_name = azurerm_storage_account.teaststorage.name
container_access_type = "private"
}
resource "azurerm_storage_blob" "teastfeaturetoggle" {
name = "featureToggles.json"
storage_account_name = azurerm_storage_account.teaststorage.name
storage_container_name = azurerm_storage_container.teastconfig.name
type = "Block"
source = "vars-pr-default-toggles.json"
}
扫描完 terraform 计划后,我发现它正在强制替换 blob,因为:
content_md5 = "9a95db04fb1ff3abcd7ff81fcfb96307" -> null # forces replacement
我将生命周期挂钩添加到 blob 资源以防止它:
resource "azurerm_storage_blob" "teastfeaturetoggle" {
name = "featureToggles.json"
storage_account_name = azurerm_storage_account.teaststorage.name
storage_container_name = azurerm_storage_container.teastconfig.name
type = "Block"
source = "vars-pr-default-toggles.json"
lifecycle {
ignore_changes = [
content_md5,
]
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.