Изменение массива 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}}