Чтобы расширить другие ответы и комментарии. Один из принципов Chef заключается в том, что поваренные книги и рецепты должны быть идемпотентными и конвергентными. Они определяют состояние, в котором вы хотите, чтобы ваши узлы находились, они проверяют, что нужно сделать, чтобы привести его в это состояние, и применяют только эти изменения.
Это логически логично, сводит к минимуму ненужные изменения и то, как Chef структурирован для работы «из-под капота».
Запуск кода Ruby в вашем примере не добавит дополнительных символов «#», но будет обновлять ваш файл при каждом запуске. Это вводит в заблуждение и может повлиять, если какое-то приложение проверит время обновления вашего файла, чтобы увидеть, произошло ли изменение конфигурации.
Ресурс шаблона, предложенный @coderanger, будет обновлять файл только при необходимости. Кроме того, шаблон, скорее всего, понятнее, чем какой-нибудь Ruby Code. Этот подход показывает, как должен работать другой (хороший) код Chef.
person
matt freake
schedule
05.02.2016