上传 azurerm_storage_blob 时出现问题,因为存在 azurerm_storage_container
Problem with upload a azurerm_storage_blob because the azurerm_storage_container exists
我想将生成的文件作为新的 blobobject 上传到 azure。
我的问题是,如果 azurerm_storage_container 不存在,我必须将其创建为资源。但是如果这个容器已经存在于存储帐户中,我会得到错误
'The specified container already exists'。
所以我想我可以将我的 azurerm_storage_container 定义为数据对象。但是后来我得到一个错误
module.components.data.azurerm_storage_container.blobstorage:提供商不支持数据源:azurerm_storage_container
澄清一下:
如果天蓝色不存在,我想创建一个新的存储容器。之后,我想将我生成的本地文件上传到一个新的 blobobject 中,并包含在存储容器中。
我尝试将所有对象设置为资源和数据。我找不到这些对象的正确组合来实现我的目标
据我所知,您可以使用Terraform external data source执行脚本来获取容器是否存在的信息,然后根据状态创建或不创建容器。
这是使用 Azure CLI 命令的 bash 脚本的示例代码:
#!/bin/bash
eval "$(jq -r '@sh "export container_name=\(.container_name) account_name=\(.account_name)"')"
flag=$(az storage container exists --name $container_name --account-name $account_name --query exists)
if [ $flag ]
then
echo "{\"exists\":\"True\"}"
else
echo "{\"exists\":\"False\"}"
fi
地形:
variable "container_name" {}
data "azurerm_storage_account" "test" {
name = "charlescloudshell"
resource_group_name = "v-chaxu-ChinaCXPTeam"
}
data "external" "exists" {
program = ["/bin/bash", "./container.sh"]
query = {
container_name = "${var.container_name}"
account_name = "${data.azurerm_storage_account.test.name}"
}
}
resource "azurerm_storage_container" "test" {
count = "${data.external.exists.result["exists"] == "False" ? 1 : 0}"
name = "${var.container_name}"
storage_account_name = "${data.azurerm_storage_account.test.name}"
container_access_type = "private"
}
我想将生成的文件作为新的 blobobject 上传到 azure。 我的问题是,如果 azurerm_storage_container 不存在,我必须将其创建为资源。但是如果这个容器已经存在于存储帐户中,我会得到错误
'The specified container already exists'。
所以我想我可以将我的 azurerm_storage_container 定义为数据对象。但是后来我得到一个错误
module.components.data.azurerm_storage_container.blobstorage:提供商不支持数据源:azurerm_storage_container
澄清一下: 如果天蓝色不存在,我想创建一个新的存储容器。之后,我想将我生成的本地文件上传到一个新的 blobobject 中,并包含在存储容器中。
我尝试将所有对象设置为资源和数据。我找不到这些对象的正确组合来实现我的目标
据我所知,您可以使用Terraform external data source执行脚本来获取容器是否存在的信息,然后根据状态创建或不创建容器。
这是使用 Azure CLI 命令的 bash 脚本的示例代码:
#!/bin/bash
eval "$(jq -r '@sh "export container_name=\(.container_name) account_name=\(.account_name)"')"
flag=$(az storage container exists --name $container_name --account-name $account_name --query exists)
if [ $flag ]
then
echo "{\"exists\":\"True\"}"
else
echo "{\"exists\":\"False\"}"
fi
地形:
variable "container_name" {}
data "azurerm_storage_account" "test" {
name = "charlescloudshell"
resource_group_name = "v-chaxu-ChinaCXPTeam"
}
data "external" "exists" {
program = ["/bin/bash", "./container.sh"]
query = {
container_name = "${var.container_name}"
account_name = "${data.azurerm_storage_account.test.name}"
}
}
resource "azurerm_storage_container" "test" {
count = "${data.external.exists.result["exists"] == "False" ? 1 : 0}"
name = "${var.container_name}"
storage_account_name = "${data.azurerm_storage_account.test.name}"
container_access_type = "private"
}