如何将 tar 编码文件转换为 terraform 变量?
How can I convert a tar encoded file into a terraform variable?
我正在尝试使用 terraform 中的配置器将许可证文件复制到实例上。
我正在尝试尽量减少目录中的文件数量,因此我想避免有任何额外的文件。对于其他文件,我能够使用内容而不是 terraform 供应器中的源将其传递到目的地。但是,由于我要复制的文件是 tar 存档,因此我找不到将其转换为可以表示为内容值的字符串格式的方法。
它还需要使用terraform 的语言进行解码,以便VM 可以正确读取它。不幸的是,这限制了我对 terraform 解码功能的选择](https://www.terraform.io/docs/configuration/functions/base64decode.html)
我认为我最好的选择是尝试将其编码为 base64,但我找不到实现它的方法。有什么建议吗?
一个快速的方法。
首先将您的 tar 文件编码为 base64 并保存到参数存储
cat <tar_file>.tar |base64 -w0 |tee output.txt
Notes: -w0
can make sure the output in one line
然后将base64哈希保存到AWS Systems Manager Parameter Store作为字符串或安全字符串,例如,将其命名为license_key
然后你可以在terraform中工作得到它
data "aws_ssm_parameter" "foo" {
name = "license_key"
}
locals {
license = base64encode(data.aws_ssm_parameter.foo.value)
}
output "license" {
value = local.license
}
codes are for terraform 0.12.x
在 terraform 中使用 provisioner 的其余部分,您应该知道该怎么做。
以上代码未经测试,只是提供思路给大家。
我正在尝试使用 terraform 中的配置器将许可证文件复制到实例上。
我正在尝试尽量减少目录中的文件数量,因此我想避免有任何额外的文件。对于其他文件,我能够使用内容而不是 terraform 供应器中的源将其传递到目的地。但是,由于我要复制的文件是 tar 存档,因此我找不到将其转换为可以表示为内容值的字符串格式的方法。
它还需要使用terraform 的语言进行解码,以便VM 可以正确读取它。不幸的是,这限制了我对 terraform 解码功能的选择](https://www.terraform.io/docs/configuration/functions/base64decode.html)
我认为我最好的选择是尝试将其编码为 base64,但我找不到实现它的方法。有什么建议吗?
一个快速的方法。
首先将您的 tar 文件编码为 base64 并保存到参数存储
cat <tar_file>.tar |base64 -w0 |tee output.txt
Notes:
-w0
can make sure the output in one line
然后将base64哈希保存到AWS Systems Manager Parameter Store作为字符串或安全字符串,例如,将其命名为license_key
然后你可以在terraform中工作得到它
data "aws_ssm_parameter" "foo" {
name = "license_key"
}
locals {
license = base64encode(data.aws_ssm_parameter.foo.value)
}
output "license" {
value = local.license
}
codes are for terraform 0.12.x
在 terraform 中使用 provisioner 的其余部分,您应该知道该怎么做。
以上代码未经测试,只是提供思路给大家。