我们想要从git仓库中加载一个文件,并将其放入参数存储库中。该文件包含几个组织帐户的自定义配置数据,这些组织帐户正在使用Terraform构建,并且在其他方面是相同的。数据存储在"AWS SM参数存储"中。例如,将字符串存储为参数的Terraform代码是:
resource "aws_ssm_parameter" "parameter_config" {
name = "config_object"
type = "String"
value = "long json string with configuration data"
}
我知道有一个file()
操作符(参考)从Terraform,我知道TF可以从远程git仓库加载文件,但我不确定如果我能把这一切在一起。
有几种方法可以做到这一点。
第一个是使用github
提供程序和github_repository_file
数据源:
terraform {
required_providers {
github = {
source = "integrations/github"
version = "5.12.0"
}
}
}
provider "github" {
token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
owner = "org-name"
}
data "github_repository_file" "config" {
repository = "my-repo"
branch = "master"
file = "config-file"
}
resource "aws_ssm_parameter" "parameter_config" {
name = "config_object"
type = "String"
value = data.github_repository_file.config.content
}
您也可以对http
提供程序执行此操作:
data "http" "config" {
url = "https://raw.githubusercontent.com/my-org/my-repo/master/config-file"
}
resource "aws_ssm_parameter" "parameter_config" {
name = "config_object"
type = "String"
value = data.http.config.response_body
}
请记住,当使用http
数据源方法时,您可能会得到多行字符串分隔符。(例如:<<EOT ... EOT
)