Terraform 0.9.5.
我正在组建一组模块,我们的基础架构团队和自动化团队将使用这些模块以标准方式创建资源,然后创建堆栈以提供不同的环境.一切顺利.
就像所有使用terraform共享状态的团队成为一个问题.我已经配置terraform使用s3后端,它是版本化和加密的,通过dynamo db表添加了一个锁.完善.所有与本地帐户合作......好的问题......
我们有多个aws帐户,1个用于IAM,1个用于计费,1个用于生产,1个用于非生产,1个用于共享服务等...你得到我要去的地方.我的问题如下.
我在IAM帐户中作为用户进行身份验证并承担所需的角色.在我引入terraform后端配置以将s3用于共享状态之前,这一直像梦一样.看起来terraform中的后端配置需要在〜/ .aws/credentials中设置默认凭据.看起来这些用户必须是创建s3存储桶的帐户的本地用户.
有没有办法以这样的方式获得后端配置设置,它将使用提供程序中配置的信用卡和角色?有没有更好的方法来配置共享状态和锁定?欢迎任何建议:)
更新:有这个工作.我在创建s3存储桶的帐户中创建了一个新用户.创建了一个策略,只允许新用户s3:DeleteObject,GetObject,PutObject,ListBucket和dynamodb:*在特定的s3存储桶和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"
}
}
Run Code Online (Sandbox Code Playgroud)
它可以工作,但是需要在您的配置文件中进行初始配置才能使其正常工作.如果有人知道更好的设置或可以识别我的后端配置问题,请告诉我.
我需要在通过Azure PowerShell 模块更新记录时向 Azure 表存储实体添加新属性。我希望通过更新来实现这一点,而不是删除/添加新实体。
我当前拥有的脚本紧密遵循 Microsoft 的更新实体示例,并且非常适合更新现有属性。下面是他们示例的修改版本,我尝试添加新的“昵称”属性。
$user = Get-AzTableRow -table $cloudTable -customFilter $filter
# Change the entity.
$user.username = "Jessie2"
# Attempting to add a new property
$user.nickname= "Jess"
# To commit the change, pipe the updated record into the update cmdlet.
$user | Update-AzTableRow -table $cloudTable
Run Code Online (Sandbox Code Playgroud)
正如您所料,PowerShell 会抛出错误,因为该行没有现有的昵称属性:
Exception setting "nickname": "The property 'nickname' cannot be found on this object. Verify that the property exists and
can be set.
删除/创建新实体是添加新属性的唯一方法吗?