Независимый от платформы способ создания временного файла в Chef Recipe

У меня есть рецепт шеф-повара, который использует шаблон для создания XML-документа. Расположение этого документа в файловой системе не имеет значения; местоположение просто нужно передать инструменту командной строки, который прочитает файл и использует его для настройки приложения. Файл xml не должен сохраняться после выполнения команды. Поэтому мне кажется, что файл должен быть создан в независимом от платформы каталоге временных файлов. C:\Temp в Windows или /TMP на большинстве nix-машин. Предоставляет ли шеф-повар средства для создания временных файлов, определения местоположения временного файла или иного достижения цели?


person Kenneth Baltrinic    schedule 17.12.2014    source источник


Ответы (1)


Лучший выбор: используйте Chef::Config['file_cache_path'], который используется шеф-поваром для хранения переходных данных. То есть: template "#{Chef::Config['file_cache_path']}/myfile.xml" do

Слева (перефразировано) после комментария, так как он все еще стоит того, чтобы быть там для общих целей:

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

Одной из ключевых идей шеф-повара является идемпотентность, шеф-повар может запустить 100 раз и делать что-то только тогда, когда это нужно сделать.

В этом случае шаблон будет сгенерирован один раз и никогда не будет меняться, если только не будет изменен параметр в атрибутах.

В таком случае (результирующий файл должен быть обновлен) шеф-повар заметит это, заменит его и будет действовать в соответствии с любым уведомлением, определенным для него.

person Tensibai    schedule 17.12.2014
comment
Да, это работает. Что касается идемпотентности, пункт понятен, но не имеет отношения к текущему рассмотрению. Выполняемая команда является идемпотентной, и важно, чтобы она выполнялась независимо от того, изменился вывод шаблона или нет. Мы хотим убедиться, что приложение настроено в соответствии с рецептом, и перезаписать любые изменения конфигурации вручную, которые могли произойти. Такие ручные изменения не приведут к изменению каких-либо файлов. - person Kenneth Baltrinic; 17.12.2014
comment
Хорошо, отредактировал ответ, оставив часть, так как я считаю их актуальными для общего ответа. - person Tensibai; 17.12.2014