我正在使用Azure提供程序并将terraform状态存储在Azure blob存储中。使用下面的代码片段来实现这一点。
data "terraform_remote_state" "xxxxxx" {
backend = "azurerm"
config = {
container_name = "terraform-state"
resource_group_name = "${var.remote_state_resource_group}"
storage_account_name = "${var.remote_state_storage_account}"
access_key = "${var.remote_state_credentials}"
key = "${var.cluster_name}-k8s-worker"
}
defaults = {}
}如果我用最新版本的terraform版本0.12.x运行上面的代码,它会失败,并出现以下错误。但是在0.11.x下运行相同的代码,它可以像预期的那样工作。
Error message:
Error: Unable to find remote state
on example2.tf line 20, in data "terraform_remote_state" "xxxxxx":
20: data "terraform_remote_state" "xxxxxx" {
No stored state was found for the given workspace in the given backend.在使用Azure blob存储的terraform 0.12.x中,任何人都面临着类似的问题。
发布于 2020-01-14 15:08:16
我认为可能的原因是:
以上所有的原因都会导致你得到的错误。远程状态在terraform版本0.12.x中运行良好。
发布于 2021-03-19 17:52:43
当我有一个在azurerm中存储状态的terraform配置,然后我想在另一个terraform配置中使用该状态作为远程azurerm数据源时,我就遇到过这个问题。
具体地说,当第一个配置使用terraform工作空间时,就会出现这个问题。azurerm后端在blob键的末尾默默地附加一个形式为env:${terraform.workspace}的后缀。您必须在数据源中对此进行显式更正。
如果第一个配置的后端如下:
terraform {
backend "azurerm" {
resource_group_name = "rg-myapp"
storage_account_name = "myappterraform"
container_name = "tfstate"
key = "myapp.tfstate"
}
}第二个配置的数据源必须如下所示:
data "terraform_remote_state" "myapp" {
backend = "azurerm"
config = {
resource_group_name = "rg-myapp"
storage_account_name = "myappterraform"
container_name = "tfstate"
key = "myapp.tfstateenv:${terraform.workspace}"
}
}https://stackoverflow.com/questions/59728606
复制相似问题