Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/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
Amazon web services 在具有InSpec和远程状态的分布式环境中处理Terraform提供程序凭据_Amazon Web Services_Amazon S3_Terraform_Test Kitchen_Inspec - Fatal编程技术网

Amazon web services 在具有InSpec和远程状态的分布式环境中处理Terraform提供程序凭据

Amazon web services 在具有InSpec和远程状态的分布式环境中处理Terraform提供程序凭据,amazon-web-services,amazon-s3,terraform,test-kitchen,inspec,Amazon Web Services,Amazon S3,Terraform,Test Kitchen,Inspec,考虑到以下用例,有没有人对如何处理AWS的Terraform provider凭据有什么好主意: 具有单个AWS帐户的分布式环境(prod/pre/qa/test/dev) 单个AWS帐户中所有环境的S3后端远程状态 使用InSpec测试厨房 我当前的工作流程需要根据操作更改AWS\u ACCESS\u密钥和AWS\u SECRET\u密钥: terraforminit-需要访问S3后端远程状态 地形规划/应用-需要访问特定环境+远程状态 非功能性(一组凭据不能同时访问env+远程状态)

考虑到以下用例,有没有人对如何处理AWS的Terraform provider凭据有什么好主意:

  • 具有单个AWS帐户的分布式环境(prod/pre/qa/test/dev)
  • 单个AWS帐户中所有环境的S3后端远程状态
  • 使用InSpec测试厨房
我当前的工作流程需要根据操作更改
AWS\u ACCESS\u密钥
AWS\u SECRET\u密钥

  • terraforminit
    -需要访问S3后端远程状态
  • 地形规划/应用
    -需要访问特定环境+远程状态
    • 非功能性(一组凭据不能同时访问env+远程状态)
  • 需要访问测试环境+远程状态
    
    • 非功能性(与上述原因相同)
  • 厨房验证
    -需要访问测试环境
想法

  • 我希望我可以将S3远程状态存储在各自的环境帐户中,但是Terraform
    后端配置中似乎不支持变量

您需要主帐户能够在每个env帐户上扮演一个角色来执行更改,而远程主帐户将保留所有状态。这是使用terraform worspaces的一个好方法假设您有两个工作区,prod和dev,您可以尝试以下方法:

variable "workspace_roles" {
  default = {
    dev  = "arn:aws:iam::<dev account id>:role/terra_role"
    prod = "arn:aws:iam::<prodaccount id>:role/terra_role"
  }
}

provider "aws" {
 assume_role = var.workspace_roles[terraform.workspace]
}
变量“工作区角色”{
默认值={
dev=“arn:aws:iam:::角色/terra_角色”
prod=“arn:aws:iam:::角色/terra_角色”
}
}
提供商“aws”{
假设_role=var.workspace_roles[terraform.workspace]
}

谢谢,我在其他地方也看到过推荐的。这将是解决方案的一部分。我只需要弄清楚如何处理Kitchen,因为它使用AWS env vars或~/.AWS/credentials。@XeonFibre您可以在Kitchen config上传递
shared\u credentials\u profile
,以指定要使用的配置文件。