terragrunt - 调用 sops_decrypt_file() 时来自 Terragrunt 的错误
问题描述
我已经用生成器配置了 SOPS:
.sops.yaml
creation_rules:
- path_regex: \.dev\.yaml$
kms: *kms_arn*
aws_profile: dev
生成文件
sops secrets.dev.yaml
它生成加密文件为:
hello: ENC[AES256_GCM,data:8gtnzBNu2AG9l2zHFy3ovCS0gWFj3bdjgb3B/X8CUkvgox8GcxLQv/99aMUndQ==,iv:lw8VYzpWQUrm6bWQgJ6/KEYizhe8VxJAmdysF+Q6zTM=,tag:vRrdCo/iH4ec4dPzI7DB5Q==,type:str]
sops:
kms:
- arn: *kms_arn*
created_at: '2021-01-12T05:24:17Z'
enc: *enc_key*
aws_profile: dev
gcp_kms: []
azure_kv: []
hc_vault: []
lastmodified: "2021-01-12T05:24:43Z"
mac: *mac_key*
pgp: []
unencrypted_suffix: _unencrypted
version: 3.6.1
在 terragrunt 中使用:
terragrunt.hcl
locals {
secret_vars = yamldecode(sops_decrypt_file(find_in_parent_folders("secrets.dev.yaml")))
}
错误:
Error: Error in function call:
Call to function "sops_decrypt_file" failed: Error getting data key: 0 successful groups required, got 0.
解决方案
使用export AWS_PROFILE=dev
不是我的选择,因为我正在使用生成provider.tf
account_vars = read_terragrunt_config(find_in_parent_folders("account.hcl"))
generate "provider" {
path = "provider.tf"
if_exists = "overwrite_terragrunt"
contents = <<EOF
provider "aws" {
region = "${local.aws_region}"
shared_credentials_file = "~/.aws/credentials"
profile = "${local.account_name}"
}
EOF
}
我最终得到了一种解决方法,直接在关键组内设置角色
creation_rules:
- path_regex: \.dev\.yaml$
key_groups:
- kms:
- arn: <<kms_arn>>
role: <<role_arn>>
推荐阅读
- python - 嵌入在 Pandas 中的列中的列表
- reactjs - React 应用程序在内存中累积 Base64 编码的图像。可能是什么原因?
- amazon-web-services - 如何重新轮换 AWS RDS 证书以兼容 golang 1.15
- java - 在黑暗模式下在 cookie 中保存活动
- sql - 使用 UNION 查询 ORDER
- momentjs - 无法找到时刻 js 的差异
- postgresql - 浏览器在 Windows 上的 PgAdmin 4-5.0 中显示空窗口
- python - 如何获得 Selenium (Firefox) 的无头浏览器?
- c# - IdentityServer4:一起生成Refresh Token和ReferenceToken
- awk - awk:比较两个文件的内容,打印匹配和不匹配