如何将tar编码的文件转换为Terraform变量?

时间:2019-07-18 21:31:10

标签: terraform tar data-conversion

我正在尝试使用terraform中的预配器将许可证文件复制到实例上。

我正在尝试最小化目录中的文件数量,因此,我希望避免有任何多余的文件。对于其他文件,我能够使用内容而不是Terraform Provisioner中的源将其传递到目标。但是,由于我要复制的文件是tar存档,因此我找不到将其转换为可表示为内容值的字符串格式的方法。

还需要使用terraform的语言对其进行解码,以便VM可以正确读取它。不幸的是,这限制了我对terraform的解码功能的选择] [https://www.terraform.io/docs/configuration/functions/base64decode.html

我当时想我最好的选择是尝试将其编码为base64,但是我找不到方法。有什么建议吗?

1 个答案:

答案 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的其余部分,您应该知道该怎么做。

以上代码未经测试,我只是为您提供这个想法。