Amazon web services 在具有InSpec和远程状态的分布式环境中处理Terraform提供程序凭据
考虑到以下用例,有没有人对如何处理AWS的Terraform provider凭据有什么好主意: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帐户的分布式环境(prod/pre/qa/test/dev)
- 单个AWS帐户中所有环境的S3后端远程状态
- 使用InSpec测试厨房
AWS\u ACCESS\u密钥
和AWS\u SECRET\u密钥
:
-需要访问S3后端远程状态terraforminit
-需要访问特定环境+远程状态地形规划/应用
- 非功能性(一组凭据不能同时访问env+远程状态)
需要访问测试环境+远程状态
- 非功能性(与上述原因相同)
-需要访问测试环境厨房验证
- 我希望我可以将S3远程状态存储在各自的环境帐户中,但是Terraform
后端配置中似乎不支持变量
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
,以指定要使用的配置文件。