Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有人拥有terraform共享的\u凭证\u文件来处理多个配置文件?_Terraform - Fatal编程技术网

是否有人拥有terraform共享的\u凭证\u文件来处理多个配置文件?

是否有人拥有terraform共享的\u凭证\u文件来处理多个配置文件?,terraform,Terraform,我使用的是TerraformV0.13.5 我有多个项目,因此有多个配置文件。 如果有必要的话,我也在使用s3共享状态 我在provider.tf中声明了以下内容 shared_credentials_file = "~/.aws/credentials" profile = "profile_name" 但我得到了一个错误: 错误:配置Terraform AWS提供程序时出错:没有有效凭据 找到Terraform AWS提供程序的源 如果我还导出

我使用的是TerraformV0.13.5 我有多个项目,因此有多个配置文件。 如果有必要的话,我也在使用s3共享状态

我在provider.tf中声明了以下内容

shared_credentials_file = "~/.aws/credentials"
profile    = "profile_name"
但我得到了一个错误:

错误:配置Terraform AWS提供程序时出错:没有有效凭据 找到Terraform AWS提供程序的源

如果我还导出shell变量

export AWS_SHARED_CREDENTIALS_FILE=/Users/$USER/.aws/credentials
export AWS_PROFILE=profile_name
它起作用了。(两者似乎都是必需的,因为如果shell变量的值和provider.tf文件之间不匹配,它也会阻塞)

这很好,我可以将它们添加到我的.bashrc中,除非我有多个不同项目的概要文件名。我可以为每个窗口手动设置profile env变量,但这显然是一个难题

是否有人成功地使用了多个配置文件并仅在terraform.tf文件中指定了它们


是的,我知道这个问题已经讨论过很多次了。是的,我见过向Hashicorp报告的bug。以前有一个bug,应该已经修复了。我特别想知道stackoverflow上是否有人使用过terraform的更高版本,如果有,如何使用。

Martin的评论是正确的

我还需要将我的配置文件名添加到terraform.tf文件以及provider.tf文件中

我做了以下工作,它的工作

terraform {
  backend "s3" {
  bucket  = "my_bucketname"
  key     = "my_keyname"
  region  = "us-west-1"
  profile = "my_profile_name"
  }
}

环境变量对于AWS提供程序和S3状态存储后端都是通用的,因此如果不使用环境变量,则需要在配置中的至少两个位置设置这些参数。从您共享的内容来看,您似乎只配置了提供程序,而没有配置S3后端。