Ресурс применяется только один раз для каждого приложения каталога, что происходит один раз для каждого каталога.Вы можете убедиться в этом сами, попробовав.
Если скрипту Python не удается создать файл, ресурс просто будет снова применен во время следующего приложения каталога.В противном случае идемпотентность преобладает, и ресурс не применяется, потому что файл уже существует.
Кроме того, вы должны упростить ваши ресурсы до:
exec { 'run the script':
command => 'python my-script.py',
path => '/bin:/usr/bin:/usr/local/bin',
timeout => 900,
creates => '/var/lib/my-file',
subscribe => File["my-settings.yaml"],
refreshonly => true,
}
Это функционально так же, как у вас вВаш вопрос и является более эффективным и легче читать.