我正在尝试使用terraform中的预配器将许可证文件复制到实例上。
我正在尝试最小化目录中的文件数量,因此,我希望避免有任何多余的文件。对于其他文件,我能够使用内容而不是Terraform Provisioner中的源将其传递到目标。但是,由于我要复制的文件是tar存档,因此我找不到将其转换为可表示为内容值的字符串格式的方法。
还需要使用terraform的语言对其进行解码,以便VM可以正确读取它。不幸的是,这限制了我对terraform的解码功能的选择] [https://www.terraform.io/docs/configuration/functions/base64decode.html)
我当时想我最好的选择是尝试将其编码为base64,但是我找不到方法。有什么建议吗?
答案 0 :(得分:0)
一种快速的方法。
首先将tar文件转换为base64并保存到参数存储
cat <tar_file>.tar |base64 -w0 |tee output.txt
注意:
-w0
可以确保输出在一行中
然后将base64哈希作为字符串或安全字符串保存到AWS Systems Manager Parameter Store,例如,将其命名为license_key
然后您可以在Terraform中进行操作
data "aws_ssm_parameter" "foo" {
name = "license_key"
}
locals {
license = base64encode(data.aws_ssm_parameter.value)
}
output "license" {
value = local.license
}
代码适用于Terraform 0.12.x
在terraform中使用Provisioner的其余部分,您应该知道该怎么做。
以上代码未经测试,我只是为您提供这个想法。