#ruby #plugins #puppet #cicd
Вопрос:
Я пытаюсь добавить новую функцию в старый кукольный модуль и добавил функцию со следующей командой.
pdk new function --type=v4 sum
это добавляет файл lib/puppet/functions/test/sum.rb
# frozen_string_literal: true
# https://github.com/puppetlabs/puppet-specifications/blob/master/language/func-api.md#the-4x-api
Puppet::Functions.create_function(:"test::sum") do
dispatch :sum do
param 'Numeric', :a
return_type 'Numeric'
end
# the function below is called by puppet and and must match
# the name of the puppet function above. You can set your
# required parameters below and puppet will enforce these
# so change x to suit your needs although only one parameter is required
# as defined in the dispatch method.
def sum(x)
x * 2
end
# you can define other helper methods in this code block as well
end
Я также вижу эту функцию pdk console
при запуске functions
команды.
но когда я пытаюсь вызвать функцию следующим образом
test::sum(5) # Evaluation Error: Unknown function: 'test::sum'
test::sum.call(5) # Evaluation Error: Unknown function: 'test::sum'
Deferred(test::sum, [5]).call # Evaluation Error: Unknown function: 'test::sum'
Почему это не работает? Я делаю что-то не так?
Примечание: Я совсем новичок в марионетке.
Комментарии:
1.
:"test::sum"
это тяжело для глаз, и я не уверен, делает ли это то, что вы хотите. Я бы"test::sum".to_sym
сам использовал.2. С учетом сказанного я не уверен, поддерживает ли Puppet префиксы пространства имен для функций.
3. Трудный путь-это то, что рекомендуется в официальных документах. Я уверен, что puppet поддерживает пространство имен, потому что в модуле есть отложенная функция, которая работает нормально.
4. С какой версией марионетки вы это используете? И можете ли вы представить более полный пример того, как вы пытаетесь вызвать функцию?
5. @JohnBollinger похоже, что и синтаксис, и пространство имен-это то, как функции описываются в документах . Примечание: Я абсолютно ничего не знаю о Puppet, так что это все, что я могу реально сделать