【问题标题】:Large terraform pipeline in JenkinsJenkins 中的大型 terraform 管道
【发布时间】:2019-03-16 09:42:00
【问题描述】:

我正在为我们相当庞大且不断增长的基础设施构建 Jenkins。目前,我们使用 terraform 和 userdata 将我们的实例启动到 AWS。我们的 repo 当前设置了这个层次结构

terraform/
├── server1/
│   ├── server1.tf
│   ├── userdata.yaml
├── server2/
│   ├── server2.tf
│   ├── userdata.yaml
├── server3/
│   ├── server3.tf
│   ├── userdata.yaml
├── server4/
│   ├── server4.tf
│   ├── userdata.yaml
├── server5/
│   ├── server5.tf
│   ├── userdata.yaml

理想情况下,Jenkins 会在我们合并到 master 时启动,但是我们希望它只在更改/新文件上运行,以防止删除实例并尝试构建 50 多个服务器。 Jenkins 通过文件夹检查更改并仅将 terraform 管道应用于那些新/更新的最佳方法是什么?

谢谢大家

【问题讨论】:

  • Terraform 已经用它的状态文件处理了这个问题。

标签: jenkins jenkins-pipeline jenkins-plugins terraform


【解决方案1】:

我不喜欢你的方法,但如果你坚持通过 jenkins 来做,你可以编写一个包装器来运行 terraform,这取决于哪些文件被更改。

folders=`$(git show --name-only |awk -F \/ '/^terraform/{print $1, FS, $2}')

for folder in ${folders}
do
  pushd ${folder}
  terraform init <options>
  terraform plan <options>
  terraform apply <options>
  popd
done

【讨论】:

  • 您有什么建议?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 2021-10-23
  • 2022-11-15
  • 1970-01-01
  • 2021-11-30
  • 2015-10-12
  • 1970-01-01
相关资源
最近更新 更多