Patcher:实现基础设施即代码持续更新的利器

作者:Claudio Masolo
  • 2023-06-02
    北京
  • 本文字数:1068 字

    阅读完需:约 4 分钟

Gruntwork发布Patcher 的 Beta 测试版。该工具可以自动保持基础设施即代码的更新,即使有重大更改也没问题。

 

在撰写本文时,Patcher 允许将参考架构CIS AWS Foundation Benchmark 1.4 版本升级到 1.5 版本。该版本引入了 200 多项更改并修复了 3 项重大更改。参考架构是一系列建议和最佳实践,将来自 Gruntwork 的基础设施即代码库组装成 AWS 上的端到端技术栈。Patcher 的目标是让用户可以管理 Gruntwork 基础设施即代码库的所有升级工作,并自动执行一系列的操作。

 

用户可以从 GitHub 存储库安装 Patcher(在撰写本文时,访问其存储库还需要向 Gruntwork 申请)。Patcher 使用 Docker 在沙盒环境中执行升级。

 

安装完成后,要升级 IaC 存储库,Patcher 会执行以下步骤:

  • 查找依赖项更新

  • 应用更改的补丁

  • 检查更改

  • 部署

 

Patcher 使用以下命令查找并更新依赖项:

patcher upgrade
复制代码

 

该工具会分析源代码并自动发现依赖项、每个依赖项的版本,以及是否有新版本。在下面的示例中,Patcher 发现了一些需要升级的依赖项。

Patcher如何显示需要升级的依赖项

 

Patcher 允许维护人员定义一个补丁,指定如何转换代码以完成重大更改。应用于代码的补丁通过 YAML 文件描述。Patcher 会执行 YAML 代码中定义的步骤。那些步骤可能是任意命令。例如,tflint(一种强制执行与安全组相关的新建议的方法)的补丁可以指定为:

name: "Add tflint hook to Terragrunt configuration for CIS compliance checks"author: Gruntwork <gruntwork.io>image: gruntwork/patcher_bash_env:v0.0.12steps:  - name: "Create tflint configuration"    run: create_tf_lint_config.sh  - name: "Add to the root terragrunt.hcl a hook for tflint"    run: add_hook.sh
复制代码

 

Patcher 在已定义的 Docker 镜像中执行升级。这使得代码可移植,并且能够通过限制镜像可以查看的内容和执行的操作来保证用户的安全。当 Patcher 升级完成后,它会显示应用的所有补丁的摘要信息。这样,用户就可以查看更改并应用它们。

 

可以使用 git diff 进行检查,因为 Patcher 会将所有的更改都保存在本地存储库中。然后,用户可以决定提交所有更改,还是进行部分更改。

在Patcher升级后执行git diff

 

在上面的屏幕截图中,作为从 CIS 1.4 到 1.5 升级的一部分,Patcher 做了一些更改,应用了一些补丁。

 

Patcher 的第一个版本专注于支持从 CIS 1.4 到 1.5 的迁移,但 Gruntwork 的愿景是将 Gruntwork 基础设施即代码和参考架构的所有更新都自动化。

 

原文链接:

https://www.infoq.com/news/2023/04/patcher-iac-upgrade/

相关阅读:

谷歌发布云基础设施可靠性指南,帮助消费者做出正确决策

Medium的Kubernetes基础设施