Использование рецепта Chef для добавления нескольких строк в файл конфигурации
Я пытаюсь создать рецепт шеф-повара, чтобы добавить несколько строк (20-30) в определенный файл конфигурации.
Я знаю, что рекомендуемый шаблонизменить все файлы конфигурации а не просто добавление файла, но мне не нравится этот подход по нескольким причинам.
Пока единственное решение, которое я нашел, это использоватьcookbook_file
а затем использовать ресурс bash для:
cat lines_to_append >> /path/configfile
Очевидно, что это не будет работать должным образом, так как он будет добавлять файл снова и снова, каждый раз, когда вы запускаете chef-client. Мне нужно было бы создать небольшой скрипт bash, чтобы сначала проверить определенную строку, и,если не найден, добавьте в файл.
Но это, кажется, побеждает цель использования Chef. Должен быть лучший способ.
Одним из многообещающих решений былолиния поваренной книги от сообщества OpsCode. Он стремился решить именно эту проблему. К сожалению, функциональность неполна, глючит, а код - это просто быстрый взлом. Далеко не твердый раствор.
Другой вариант, который я оценил, былАвгий, Кажется довольно мощным, но это добавит еще один уровень абстракции в систему. Избыток, в моем случае.
Учитывая, что это одна из самых очевидных задач для любого системного администратора, есть ли какое-нибудь простое и красивое решение с шеф-поваром, которого я не вижу?
РЕДАКТИРОВАТЬ: вот как я решаю это до сих пор:
cookbook_file "/tmp/parms_to_append.conf" do
source "parms_to_append.conf"
end
bash "append_to_config" do
user "root"
code <<-EOF
cat /tmp/parms_to_append.conf >> /etc/config
rm /tmp/parms_to_append.conf
EOF
not_if "grep -q MY_IDENTIFIER /etc/config"
end
Это работает, но не уверен, что это рекомендуемый шаблон шеф-повара.