我有一个包含以下内容的文件,
- 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的工具,即yq
和jq
。链接-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}}