управлять пакетом данных шеф-повара проще и быстрее с помощью команды ножа

Правильно ли я думаю, что, вероятно, нет возможности изменить значение из командной строки?

Например что-то вроде этого:

knife data bag edit my_data_bag host1 ...action "upgrade"

Итак, вторая строка будет изменена с «удалить» на «обновить»:

{
    "id": "host1",
    "action": "remove"
}

Я знаю, что могу сделать это из файла, но я хотел упростить процесс для разных команд. Было бы проще предоставить команду, а не файлы для редактирования. Требуется некоторое понимание, чтобы отредактировать файл json и перейти к ножу. Также могут возникнуть трудности с редактированием json для сотен ящиков.

Может быть, вы видите хороший способ упростить это? Цель состоит в том, чтобы предоставить простой процесс, такой как несколько команд, а не редактирование файлов.


person laimison    schedule 22.02.2016    source источник
comment
Вы можете создать что-то вокруг knife exec ... Но это звучит как плохой паттерн с высокими рисками (элементы пакетов данных заменяются на стороне сервера, а не объединяются. Условия гонки появятся, если у вас есть много пользователей, изменяющих один и тот же элемент, и некоторые модификации будут потеряны)   -  person Tensibai    schedule 22.02.2016


Ответы (1)


Поскольку нет прямого способа изменить его через knife, я бы рекомендовал программно изменить файл с помощью jq полезность.

Основываясь на простом сценарии, вы можете прочитать ввод пользователя, соответствующим образом изменить файл JSON, а затем вызвать knife data bag from file, не требуя, чтобы пользователь напрямую вызывал knife.

Другой вариант — и я лично предпочел бы это — заключается в том, что измененный файл JSON передается через Git, который затем запускает сервер CI (например, Jenkins), который затем обновляет пакет данных. Это упростит вашу настройку, если не всем нужен доступ к серверу Chef.

person StephenKing    schedule 22.02.2016
comment
Спасибо за предложение. В качестве второго варианта, как пользователь может изменить значение с удаления на обновление? Если я правильно понял, Дженкинс может вызвать нож для обновления пакета данных, используя подготовленный файл json. Хотел получить более подробную информацию о его начале. - person laimison; 22.02.2016