修改bash中的yaml数组



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

- 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合并。但是它对我不起作用。请告诉我怎么做。

bash中有一个特定的解析yaml的工具,即yqjq。链接-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}}

最新更新