在bash中修改yaml数组

时间:2020-07-14 22:17:54

标签: yq

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

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

我要将此文件内容附加到下面所示的eks,前两行,

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

我尝试了yq合并。但这对我没有用。请让我知道该怎么做。

1 个答案:

答案 0 :(得分:1)

有一种用于以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}}