我对 Terraform 很陌生。我正在尝试使用 sops 提供程序插件从 yaml 文件中加密秘密: Sops Provider
我需要为稍后的配置阶段创建一个 Terraform 用户对象,如下例所示:
users = [{
name = "user123"
password = "password12"
}]
我准备了一个 secrets.values.enc.yaml 文件来存储我的秘密数据:
yaml_users:
- name: user123
password: password12
我已经使用“sops”命令加密了文件。我可以成功解密文件以进行测试。
现在我尝试使用 Terraform 中的加密文件来创建用户对象:
data "sops_file" "test-secret" {
source_file = "secrets.values.enc.yaml"
}
# user data decryption
users = yamldecode(data.sops_file.test-secret.raw).yaml_users
不幸的是,我无法调试数据或“用户”的结构,因为 Terraform 不显示敏感数据。当我尝试在稍后的配置阶段使用该用户变量时,它似乎并不需要:
不能在 for_each 中使用一组字符串值映射。需要一个可迭代的集合。
当我对未加密的yaml 文件做同样的事情时,一切似乎都工作正常:
users = yamldecode(file("secrets.values.dec.yaml")).yaml_users
看起来 sops 提供程序解密不会创建我需要的数组或“可迭代集合”。
有谁知道如何使用 terraform sops 提供程序来解密一组键值对?像“adminpassword”这样的单个值工作正常。