Я пытаюсь создать рецепт шеф-повара, чтобы добавить несколько строк (20-30) в конкретный файл конфигурации.
Я знаю, что рекомендуемый шаблон - изменить целые файлы конфигурации, а не просто добавлять к файлу, но мне не нравится этот подход по нескольким причинам.
До сих пор единственным решением, которое я нашел, было использование cookbook_file
, а затем использовать ресурс bash:
cat lines_to_append >> /path/configfile
Очевидно, что это не сработает должным образом, так как он будет добавлять файл снова и снова при каждом запуске chef-client. Мне нужно создать небольшой bash script, чтобы сначала проверить определенную строку и , если не найден, добавить к файлу.
Но это, похоже, преследует цель использования шеф-повара. Должен быть лучший способ.
Одним из перспективных решений было line cookbook из сообщества OpsCode. Он стремился решить эту точную проблему. К сожалению, функциональность неполна, глючит, а код - просто быстрый хак. Далеко не твердое решение.
Другой вариант, который я оценил, был augeas. Кажется довольно мощным, но он добавит еще один слой абстракции в систему. Overkill, в моем случае.
Учитывая, что это одна из самых очевидных задач для любого sysadmin, есть ли простое и красивое решение с шеф-поваром, которого я не вижу?
EDIT: вот как я его решаю до сих пор:
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
Он работает, но не уверен, что это рекомендуемый образец шеф-повара.