Terraform 0.9.5。Terraform共享状态
我在组建一个小组,我们的基础架构团队和自动化团队将使用以标准方式,进而创建资源模块的过程中创建堆栈来提供不同的ENVS。一切运作良好。
喜欢用terraform
共享状态的所有球队成为一个问题。我已经配置terraform来使用s3后端,它是版本化和加密的,通过一个Dynamo数据库表添加了一个锁。完善。所有具有本地户口的工作...好问题...
我们有多个AWS账户,1 IAM,1计费,1进行生产,1用于非生产,1共享服务等...你会得到我要去的地方。我的问题如下。
我作为用户在我们的IAM帐户进行身份验证,并承担所需的角色。直到我引入terraform后端配置才能将s3用于共享状态之前,这一直像梦一样工作。它看起来像terraform内的后端配置需要在〜/ .aws/credentials中设置默认凭证。它看起来像这些必须是s3存储桶创建帐户的本地用户。
有没有办法让后台的配置设置这样一种方式,它会使用供应商中配置vim的信任状和作用?有没有更好的方式来配置共享状态和锁定?任何建议表示欢迎:)
更新:得到这个工作。我在创建s3存储桶的帐户中创建了一个新用户。创建了一个策略,在特定的s3存储桶和dynamodb表上允许新用户s3:DeleteObject,GetObject,PutObject,ListBucket和dynamodb:*。创建一个自定义凭证文件并添加分配给该新用户的访问密钥和密钥的默认配置文件。使用后端配置类似于
terraform {
required_version = ">= 0.9.5"
backend "s3" {
bucket = "remote_state"
key = "/NAME_OF_STACK/terraform.tfstate"
region = "us-east-1"
encrypt = "true"
shared_credentials_file = "PATH_TO_CUSTOM_CREDENTAILS_FILE"
lock_table = "MY_LOCK_TABLE"
}
}
它的工作原理,但有一个初始配置需要发生在您的配置文件,以使其工作。如果有人知道更好的设置或可以识别我的后端配置问题,请让我知道。
从你的描述来看,很多主要的观点都是基于这个观点的。 Terraform从不要求您共享状态文件。 – BMW
它似乎按预期工作。我为每个堆栈使用不同的密钥,并使用一个dynamodb表。 – DMcKenna