修改 bash 中的 yaml 数组

Modifying yaml array in bash

我有一个包含以下内容的文件,

- groups:
  - system:bootstrappers
  - system:nodes
  rolearn: arn:aws:iam::1234566:role/radeks-project-us-east-1-NodeInstanceRole
  username: system:node:{{EC2PrivateDNSName}}

我想附加此文件内容,如下所示,其中 eks ,iammappings 作为前两行,

eks:
  iammappings:
  - groups:
  - system:bootstrappers
  - system:nodes
  rolearn: arn:aws:iam::1234566:role/radeks-project-us-east-1-NodeInstanceRole
  username: system:node:{{EC2PrivateDNSName}}

我试过 yq merge.But 它没有用 me.Please 让我知道怎么做。

在 bash 中有一个用于解析 yaml 的特定工具,即 yqjq 相同。 Link - https://github.com/mikefarah/yq

你必须修改源yaml文件如下

- groups:
    - system:bootstrappers
    - system:nodes
    - rolearn: arn:aws:iam::1234566:role/radeks-project-us-east-1-NodeInstanceRole
    - username: system:node:{{EC2PrivateDNSName}}

否则 yq 不会接受它作为正确的 yaml 文件。

接下来要完成您的工作,请使用以下命令

yq p -i file.yaml 'eks.iammappings'

以上命令使用了prefix函数,会原地替换。文件内容如下

eks:
  iammappings:
    - groups:
        - system:bootstrappers
        - system:nodes
        - rolearn: arn:aws:iam::1234566:role/radeks-project-us-east-1-NodeInstanceRole
        - username: system:node:{{EC2PrivateDNSName}}