【问题标题】:replace code block in terraform file替换 terraform 文件中的代码块
【发布时间】:2017-10-05 22:49:37
【问题描述】:

我正在我的 Jenkins 服务器上运行构建,我希望使用当前构建中的提交号动态填充 git_commit 字段。该文件中有多个函数,我想使用 sed 匹配模块的 core-lambda-function1 名称,并使用当前构建中的提交号更新 git_commit 字段。任何帮助表示赞赏。谢谢。

module "core-lambda-function1" {
  source  = "./lambda"
  name    = "core-lambda-function"
  runtime = "nodejs6.10"
  role    = "${aws_iam_role.iam_role_for_lambda.arn}"
  filename = "../Archive.zip"
  source_code_hash  = "${base64sha256(file("../Archive.zip"))}"
  source_dir = "../"
  git_commit = ""
}

module "core-lambda-function2" {
  source  = "./lambda"
  name    = "core-lambda-function"
  runtime = "nodejs6.10"
  role    = "${aws_iam_role.iam_role_for_lambda.arn}"
  filename = "../Archive.zip"
  source_code_hash  = "${base64sha256(file("../Archive.zip"))}"
  source_dir = "../"
  git_commit = ""
}

这是我目前拥有的。

#!/bin/bash
set -e

while read p; do
  NAME=$p
  GIT_COMMIT=`git rev-parse HEAD`
  echo $NAME | grep `xargs` main.tf -A 7 | sed -ri '7s/git_commit = ""/git_commit\ = \"'$GIT_COMMIT'"/g'
done < build_name

【问题讨论】:

    标签: bash jenkins sed aws-lambda terraform


    【解决方案1】:

    为什么不Input Variables in Terraform

    variable "git_commit" {}
    
    module "core-lambda-function1" {
      source  = "./lambda"
      name    = "core-lambda-function"
      runtime = "nodejs6.10"
      role    = "${aws_iam_role.iam_role_for_lambda.arn}"
      filename = "../Archive.zip"
      source_code_hash  = "${base64sha256(file("../Archive.zip"))}"
      source_dir = "../"
      git_commit = "${var.git_commit}"      #### Use variable here.
    }
    

    因此,在您的包装脚本中,您可以更新为:

    #!/bin/bash
    set -e
    
    GIT_COMMIT=$(git rev-parse HEAD)
    
    terraform plan -var 'git_commit=${GIT_COMMIT}' ...
    

    【讨论】:

    • 也像这样:terraform plan -var "git_commit=git rev-parse HEAD"
    猜你喜欢
    • 2017-11-05
    • 2012-02-07
    • 2019-02-07
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 2023-03-23
    • 2018-06-06
    相关资源
    最近更新 更多