【问题标题】:Merge yml files for Cloucustodian policies为 Cloud Custodian 策略合并 yaml 文件
【发布时间】:2022-07-13 22:37:24
【问题描述】:

我使用 Cloudcustodian 作为云合规工具。

为了获得最佳实践使用,我想将我的策略分开,并在部署所述策略时将它们合并到一个管道中。

假设我有 2 个策略文件:shutdown.ymllogs.yml。仅提供示例内容,而不是实际的 Cloucustodian 政策。

shutdown.yml:

policies:

  - name: start-ec2-office-hours
    resource: ec2

logs.yml:

policies:

  - name: logs-retention-period
    resource: log-group

如何将这些文件合并到最后

policies:

  - name: start-ec2-cologne-office-hours
    resource: ec2

  - name: logs-retention-period
    resource: log-group

?

当然我试过了

cat *.yml > test.yml

但我最终会发现 policies 被重复,这是一个问题。

有没有什么方法可以使用yq 或其他(轻型)工具来执行此操作?

【问题讨论】:

标签: yaml yq


【解决方案1】:

使用mikefarah/yq,即yq 的Go 实现,任务非常简单。它有运算符来合并来自多个文件的对象,Merging all files 并使用 append arrays option

yq ea '. as $item ireduce({}; . *+ $item)' shutdown.yml logs.yml

在版本 4.25.3 上测试

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 2012-07-05
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 2020-11-21
    相关资源
    最近更新 更多