Изменение массива yaml в 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, но у меня не получилось. Пожалуйста, дайте мне знать, как это сделать.

1 ответ

Решение

В bash ie есть специальный инструмент для разбора 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}}

Другие вопросы по тегам