При изменении любого пользовательского кода Ruby, такого как пользовательская функция, необходимо перезапустить Puppetmaster. Если вы запускаете марионетку под пассажиром, это означает перезапуск Apache. В противном случае вы получите старую версию.
Кроме того, возникает довольно неприятная ошибка, которая возникает, если вы размещаете несколько сред в своем puppetmaster с идентично названной функцией в другой среде. В этом случае у вас нет возможности быть уверенным, какая функция среды используется при вызове имени функции! Он использует одно и то же пространство имен функций во всех средах ... (это подтверждено в Puppet 2.7.22, не уверен насчет 3.x)
Как говорится в документации:
Мастер марионеток кэширует пользовательские функции. Если вы отредактируете существующий функции (например, пока вы ее разрабатываете), вам нужно будет перезапустить марионеточный мастер перед использованием новой версии.
https://docs.puppetlabs.com/guides/custom_functions.html
Примечание о перезапуске марионеточного мастера:
Если выполнить следующую команду для перезапуска марионеточного мастера:
$ service puppetmaster restart
Restarting puppet master
puppetmaster not configured to start, please edit /etc/default/puppetmaster to enable
.
Вы заметите, что служба останавливается, но не запускается.
В этом случае, как уже упоминал Steve Shipway, вы, вероятно, запускаете мастера марионеток под Passenger и вам нужно перезагрузить apache2, чтобы перезапустить мастера марионеток:
$ service apache2 reload