উত্তর:
টেম্পলেটগুলির অভ্যন্তরে আপনার কোনও স্কোপ অবজেক্টে অ্যাক্সেস রয়েছে। পুতুলের ম্যালিফাইস্টে আপনি যে সমস্ত ক্রিয়াকলাপ অ্যাক্সেস করতে পারবেন সেগুলি সেই স্কোপ অবজেক্টের মাধ্যমে অ্যাক্সেস করা যেতে পারে, যদিও একই নামের মাধ্যমে নয়। শুরুতে যোগ "function_"
ফাংশনের নাম শুরুতে। উদাহরণস্বরূপ, আমি এখানে অন্যটির মধ্যে একটি টেম্পলেট অন্তর্ভুক্ত করেছি:<%= scope.function_template("template2.erb") %>
http://reductivelabs.com/trac/puppet/wiki/PuppetTemplating টেমপ্লেট ভিতরে স্কোপ অবজেক্ট সম্পর্কে দুর্দান্ত ডকুমেন্টেশন আছে। টেমপ্লেট এবং ফাংশন সম্পর্কে সত্যই গভীর তথ্যের জন্য আপনি ভিতরে দেখতে পারেন lib/puppet/parser/templatewrapper.rb
এবং lib/puppet/parser/functions.rb
।
<%= scope.function_template("sites/$domain/config.erb") %>
<%= scope.function_template("sites/#{domain}/config.erb") %>
।
আমাকে কাস্টম ফাংশনগুলিতেও প্রশ্নটি প্রসারিত করুন । মূলত, আপনি কাস্টম ফাংশনগুলিকে বিল্ট-ইন ফাংশনগুলির হিসাবে একইভাবে কল করেন (ফাংশন_ উপসর্গ ব্যবহার করে), তবে নিশ্চিত হয়ে নিন যে আপনি সমস্ত প্যারামগুলিকে একটি অ্যারেতে পাস করেছেন:
module Puppet::Parser::Functions
newfunction(:namegoeshere, :type => :rvalue) do |args|
# ...
end
end
<%= scope.function_namegoeshere(["one","two"]) %>
দয়া করে মনে রাখবেন এটি কিছু পুপেট সংস্করণে স্কোয়ার ব্রেসগুলি ছাড়াও কাজ করে। আরও তথ্য: http://docs.puppetlabs.com/guides/custom_funifications.html#referencesਸਿੰਗ- কাস্টম- ফাংশন- ইন- টিম্পলেট
আরেকটি গুরুত্বপূর্ণ বিষয় হ'ল পুতুল ২.6 বা তার বেশি বয়সীতে একটি বাগ (বা বৈশিষ্ট্য) রয়েছে যেখানে কাস্টম ফাংশনগুলি টেম্পলেট স্কোপে স্বয়ংক্রিয়ভাবে লোড হয় না। আপনাকে সেগুলি ম্যানুয়ালি লোড করা দরকার , অন্যথায় ফাংশনটি খুঁজে পাওয়া যাবে না!
<% Puppet::Parser::Functions::function('namegoeshere') %>
আমি পুতুল ফাংশন বলতে কী বোঝাতে চাইছি তা সম্পূর্ণরূপে নিশ্চিত নই, তবে পুতুল টেমপ্লেটগুলি রুবি এম্বেড করা রয়েছে, তাই আপনি রুবিতে যে টেম্পলেটগুলি করতে পারেন সেগুলিতে আপনি কিছু করতে পারেন।