使用Terraform从git仓库加载单个文件



我们想要从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)

最新更新