У меня есть рецепт шеф-повара, который использует шаблон для создания XML-документа. Расположение этого документа в файловой системе не имеет значения; местоположение просто нужно передать инструменту командной строки, который прочитает файл и использует его для настройки приложения. Файл xml не должен сохраняться после выполнения команды. Поэтому мне кажется, что файл должен быть создан в независимом от платформы каталоге временных файлов. C:\Temp в Windows или /TMP на большинстве nix-машин. Предоставляет ли шеф-повар средства для создания временных файлов, определения местоположения временного файла или иного достижения цели?
Независимый от платформы способ создания временного файла в Chef Recipe
Ответы (1)
Лучший выбор: используйте Chef::Config['file_cache_path']
, который используется шеф-поваром для хранения переходных данных. То есть: template "#{Chef::Config['file_cache_path']}/myfile.xml" do
Слева (перефразировано) после комментария, так как он все еще стоит того, чтобы быть там для общих целей:
Согласно комментарию, исполняемый ресурс будет работать в любом случае с этим вводом, чтобы обеспечить соответствующую настройку приложения, файл должен присутствовать только при запуске исполняемого ресурса, в других случаях следует помнить о том, что ниже.
Одной из ключевых идей шеф-повара является идемпотентность, шеф-повар может запустить 100 раз и делать что-то только тогда, когда это нужно сделать.
В этом случае шаблон будет сгенерирован один раз и никогда не будет меняться, если только не будет изменен параметр в атрибутах.
В таком случае (результирующий файл должен быть обновлен) шеф-повар заметит это, заменит его и будет действовать в соответствии с любым уведомлением, определенным для него.