Кукольный: сколько раз исполняется блок exec с командой create? - PullRequest
0 голосов
/ 08 мая 2018

У меня есть два указанных ниже ресурса exec, и я хочу, чтобы ресурс exec run the script запускался всякий раз, когда отсутствует файл /var/lib/my-file. Мне интересно, что произойдет, если файл никогда не будет создан. Будет ли ресурс exec check if file exists работать вечно в цикле, пока он не будет создан?

exec { 'run the script':
  command     => "python my-script.py",
  path        => '/bin:/usr/bin:/usr/local/bin',
  timeout     => 900,
  subscribe   => File["my-settings.yaml"],
  refreshonly => true,
} 

exec { 'check if file exists':
  command => 'true',
  path    => '/bin:/usr/bin:/usr/local/bin',
  creates => '/var/lib/my-file',
  notify  => Exec['run the script']
}

1 Ответ

0 голосов
/ 08 мая 2018

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

Если скрипту 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,
}

Это функционально так же, как у вас вВаш вопрос и является более эффективным и легче читать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...