云原生之旅 - 7)部署Terrform基础设施代码的自动化利器 Atlantis( 二 )

  • Step 6: PR merged automatically.
  • 自定义 Workflow加个Terraform format check,代码如下:
    workflows:test:plan:steps:- env:name: ENV_NAMEcommand: 'echo "dynamic-value-$(date)"'- run: terraform${ATLANTIS_TERRAFORM_VERSION} fmt -check=true -write=false -diff=true- init- planapply:steps:- apply需显示申明使用此workflow 如 "workflow: test", 完整 Atlantis yaml 参考
    云原生之旅 - 7)部署Terrform基础设施代码的自动化利器 Atlantis

    文章插图
    云原生之旅 - 7)部署Terrform基础设施代码的自动化利器 Atlantis

    文章插图
    ---version: 3automerge: truedelete_source_branch_on_merge: trueprojects:- name: project-demodir: Terraform/quick_demoterraform_version: 1.2.9autoplan:when_modified:- '**/*.tf'- name: project-module-demodir: Terraform/module_demo/project_1terraform_version: 1.2.9workflow: testautoplan:when_modified:- '**/*.tf'# (Optional) custom workflowsworkflows:test:plan:steps:- env:name: ENV_NAMEcommand: 'echo "dynamic-value-$(date)"'- run: terraform${ATLANTIS_TERRAFORM_VERSION} fmt -check=true -write=false -diff=true- init- planapply:steps:- applyatlantis.yaml
    测试
    云原生之旅 - 7)部署Terrform基础设施代码的自动化利器 Atlantis

    文章插图
    总结我们的Terraform 代码结构是按环境分成不同的folder,这样做的好处是可以通过github CODEOWNERS文件来针对不同的文件夹(环境)给不同的组权限 。比如以下例子给予group-dev权限审批这个folder project-xx/dev下面的Terraform代码变化 。
    * @sreTerraform/project-xx/dev/** @group-devTerraform/project-xx/prod/** @sre
    我们也试过同一套代码利用Terraform的工作区workspace 来区分环境,实践下来不如上面的结构灵活,维护性差 。
    感谢阅读,如果您觉得本文的内容对您的学习有所帮助,您可以打赏和推荐,您的鼓励是我创作的动力 。

    经验总结扩展阅读