![Puppet - Пользовательская функция - Оператор - Ошибка - «Должно быть значением оператора...»](https://rvso.com/image/668017/Puppet%20-%20%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B0%D1%8F%20%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F%20-%20%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%20-%20%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0%20-%20%C2%AB%D0%94%D0%BE%D0%BB%D0%B6%D0%BD%D0%BE%20%D0%B1%D1%8B%D1%82%D1%8C%20%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC%20%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0...%C2%BB.png)
Кажется, все достаточно просто...
# /path/to/puppet/modules/custom/lib/puppet/parser/functions
module Puppet::Parser::Functions
newfunction(:release_check) do |args|
raise(Puppet::ParseError, "Testing!")
end
end
# /path/to/puppet/modules/mysql/manifests/install.pp
class mysql::install {
# Doesn't work
release_check(1)
# Does work, but I don't want anything returned making the assignment superfluous
$whocares = release_check(1)
}
Но я постоянно получаю эту ошибку:
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Function 'release_check' must be the value of a statement at /etc/puppet/modules/mysql/manifests/install.pp:4 on node service-a-3
Но согласнокукольные документы, я должен иметь возможность сделать этот звонок, как написано.
Эта простая функция write_line_to_file является примером функции-оператора. Она выполняет действие и не возвращает значение.
Что я упускаю?
CentOS: 6.7 Кукловод: 2.7.26
решение1
После некоторого фейспалма складывается впечатление, что вам приходится перезапускать puppetmaster после КАЖДОГО изменения, которое вы вносите в пользовательскую функцию, даже несмотря на то, что изменения отправляются агенту после КАЖДОГО изменения.
Вводящий в заблуждениемягко говоря.