পুতুল টেম্পলেট থেকে পুতুল ফাংশন কল?


13

0.24.8 হিসাবে, একটি পুতুল টেমপ্লেট একটি পুতুল ফাংশন কল করতে পারে?

আমি আমার ম্যানিফেস্টে ফাংশনটি কল করে, কোনও ভেরিয়েবলের জন্য ফেরতের মান নির্ধারণ করে এবং তারপরে টেমপ্লেটে লুক্কুভার ('ভেরিয়েবল') ব্যবহার করে অনুরূপ কার্যকারিতা পেতে পারি, তবে আমি মাঝখানে মানুষটিকে কাটাতে চাই।

উত্তর:


18

টেম্পলেটগুলির অভ্যন্তরে আপনার কোনও স্কোপ অবজেক্টে অ্যাক্সেস রয়েছে। পুতুলের ম্যালিফাইস্টে আপনি যে সমস্ত ক্রিয়াকলাপ অ্যাক্সেস করতে পারবেন সেগুলি সেই স্কোপ অবজেক্টের মাধ্যমে অ্যাক্সেস করা যেতে পারে, যদিও একই নামের মাধ্যমে নয়। শুরুতে যোগ "function_"ফাংশনের নাম শুরুতে। উদাহরণস্বরূপ, আমি এখানে অন্যটির মধ্যে একটি টেম্পলেট অন্তর্ভুক্ত করেছি:<%= scope.function_template("template2.erb") %>

http://reductivelabs.com/trac/puppet/wiki/PuppetTemplating টেমপ্লেট ভিতরে স্কোপ অবজেক্ট সম্পর্কে দুর্দান্ত ডকুমেন্টেশন আছে। টেমপ্লেট এবং ফাংশন সম্পর্কে সত্যই গভীর তথ্যের জন্য আপনি ভিতরে দেখতে পারেন lib/puppet/parser/templatewrapper.rbএবং lib/puppet/parser/functions.rb


দুর্দান্ত, ধন্যবাদ কোনও টেমপ্লেটে টেমপ্লেট () ফাংশনটি ব্যবহার করে এমন কাউকে সতর্কতার শব্দ: আপনি এখনও পুতুলের ম্যানিফেস্টে (যেমন, স্কোপ.ফंक्शन_টেমপ্লেট ("মডিউল / টেম্পলেট.বার")) এর মতো করে এটিকে যোগ্য করতে হবে।
sh-beta

টেমপ্লেটের মধ্যে টেমপ্লেট ফাংশন কলটির জন্য লোড করতে টেম্পলেট ফাইলের নামের জন্য একটি ভেরিয়েবল ব্যবহার করা সম্ভব? উদাহরণস্বরূপ<%= scope.function_template("sites/$domain/config.erb") %>
গ্যারি

একেবারে। শুধু মনে রাখবেন যে আপনি রুবিতে কাজ করছেন, পুতুলের ডিএসএল নয়, তাই পরিবর্তনশীল নাম (এবং আন্তঃবিচ্ছেদের নিয়ম) আলাদা। আপনার স্ট্রিং হওয়া উচিত <%= scope.function_template("sites/#{domain}/config.erb") %>
jgoldschrafe

3

আমাকে কাস্টম ফাংশনগুলিতেও প্রশ্নটি প্রসারিত করুন । মূলত, আপনি কাস্টম ফাংশনগুলিকে বিল্ট-ইন ফাংশনগুলির হিসাবে একইভাবে কল করেন (ফাংশন_ উপসর্গ ব্যবহার করে), তবে নিশ্চিত হয়ে নিন যে আপনি সমস্ত প্যারামগুলিকে একটি অ্যারেতে পাস করেছেন:

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') %>

আরও তথ্য: http://projects.puppetlabs.com/issues/7991


-2

আমি পুতুল ফাংশন বলতে কী বোঝাতে চাইছি তা সম্পূর্ণরূপে নিশ্চিত নই, তবে পুতুল টেমপ্লেটগুলি রুবি এম্বেড করা রয়েছে, তাই আপনি রুবিতে যে টেম্পলেটগুলি করতে পারেন সেগুলিতে আপনি কিছু করতে পারেন।


নেপাল পুতুল ফাংশনগুলি হ'ল fqdn_rand (), sha1 (), ট্যাগ করা () ইত্যাদি Custom এগুলি কি কোনও টেমপ্লেটের মধ্যে থেকে কল করা যেতে পারে?
sh-beta
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.