PUPPET-EPP(8) OpenVox manual PUPPET-EPP(8)

puppet-epp - تعامل مستقیم با تجزیه‌کننده و رندرکننده قالب EPP.

puppet epp action

توجه داشته باشید که هر تنظیمی که در فایل پیکربندی معتبر باشد، به عنوان یک آرگومان بلند نیز معتبر است، هرچند ممکن است به اقدام فعلی مربوط باشد یا نباشد. برای مثال، server و run_mode تنظیمات معتبری هستند، بنابراین می‌توانید --server <servername> یا --run_mode <runmode> را به عنوان آرگومان مشخص کنید.

برای مشاهده فهرست کامل پارامترهای مجاز، مستندات فایل پیکربندی را در https://puppet.com/docs/puppet/latest/configuration.html ببینید. فهرستی دارای توضیح از تمام گزینه‌های پیکربندی را می‌توان با اجرای puppet همراه با --genconfig نیز ایجاد کرد.

قالبی که خروجی در آن ارائه (رندر) می‌شود. رایج‌ترین قالب‌ها عبارتند از json، s (رشته)، yaml و console، اما گزینه‌های دیگری مانند dot نیز گاهی در دسترس هستند.
آیا ثبت گزارش‌ها با جزئیات کامل (پرحرف) انجام شود یا خیر.
آیا اطلاعات اشکال‌زدایی ثبت شود یا خیر.

•
dump - خروجی گرفتن از درخت تجزیه داخلی قالب جهت اشکال‌زدایی: خلاصه دستور (SYNOPSIS)
puppet epp dump [--e source] [--[no-]validate] [--format old, pn, or json] [--pretty] [--[no-]header] [--format old|pn|json] [--pretty] { -e source | [templates ...] }
توضیحات (DESCRIPTION)
عملیات dump ساختار نحوی EPP را تجزیه و اعتبارسنجی می‌کند و مدل AST حاصل را در قالبی خوانا برای انسان (اما نه لزوماً ساده برای درک) استخراج می‌کند.
قالب خروجی را می‌توان با استفاده از --format old|pn|json کنترل کرد که در آن:
  • 'old' قالب پیش‌فرض اما اکنون منسوخ‌شده است که API به شمار نمی‌آید.
  • 'pn' نمادگذاری گسترش‌یافته S-Expression در پاپت (Puppet Extended S-Expression Notation) است.
  • 'json' همان گراف 'pn' را با ساختار نحوی JSON خروجی می‌دهد.
هنگامی که گزینه --pretty همراه با --format 'pn' یا 'json' مشخص شود، خروجی به شکل مرتب و خوانا (pretty printed) نمایش داده می‌شود. این گزینه روی قالب 'old' تأثیری ندارد.
این دستور یک یا چند فایل قالب (.epp) یا یک -e همراه با متن منبع قالب را می‌پذیرد. قالب‌های مشخص‌شده می‌توانند مسیرهایی به فایل‌های قالب باشند، یا ارجاعاتی به قالب‌ها در ماژول‌ها که به شکل modulename/template-name.epp داده شده‌اند. اگر هیچ آرگومانی داده نشود، stdin خوانده می‌شود (مگر اینکه به ترمینال متصل باشد).
اگر چند قالب مشخص شده باشد، آن‌ها با یک هدر که نشان‌دهنده نام قالب است از یکدیگر جدا می‌شوند. این هدر را می‌توان با گزینه --no-header حذف کرد. گزینه --[no-]header در صورتی که فقط یک قالب دامپ شود، هیچ تأثیری ندارد.
هنگام اشکال‌زدایی خودِ تجزیه‌کننده epp، ممکن است مفید باشد که مرحله اعتبارسنجی را با گزینه --no-validate غیرفعال کنید تا مشاهده شود که تجزیه‌کننده از منبع داده‌شده چه چیزی تولید کرده است.
این دستور تنظیم/گزینه --render-as را نادیده می‌گیرد.
گزینه‌ها (OPTIONS) --e <source> - دامپ کردن یک عبارت منبع epp که در خط فرمان داده شده است.
--format <old, pn, or json> - دریافت نتیجه در قالب 'old' (منسوخ‌شده)، 'pn' (قالب جدید)، یا 'json' (قالب جدید در JSON).
--[no-]header - نمایش دادن یا ندادن هدر حاوی نام فایل میان فایل‌ها.
--pretty - مرتب‌سازی و زیباسازی خروجی. فقط همراه با --format pn یا json قابل استفاده است.
--[no-]validate - اعتبارسنجی یا عدم اعتبارسنجی نتیجه تجزیه‌شده؛ با no-validate فقط خطاهای نحوی گزارش می‌شوند.
مقادیر بازگشتی (RETURNS)
دامپ حاصل از مدل AST، مگر اینکه خطاهای نحوی یا اعتبارسنجی وجود داشته باشد.
•
render - رندر کردن یک قالب epp به صورت متن: خلاصه دستور (SYNOPSIS)
puppet epp render [--node node_name] [--e source] [--values values_hash] [--values_file pp_or_yaml_file] [--facts facts_file] [--[no-]header] -e source | [templates ...]
توضیحات (DESCRIPTION)
این عملیات یک یا چند قالب EPP را رندر می‌کند.
این دستور یک یا چند قالب (فایل‌های .epp) را می‌پذیرد که به همان روشی داده می‌شوند که قالب‌ها به تابع epp در پاپت ارسال می‌شوند (یک مسیر کامل، یا یک ارجاع نسبی به صورت 'modulename/template-name.epp')، یا به عنوان یک مسیر نسبی. در صورتی که مسیر داده‌شده هم با یک نام ماژول/قالب و هم با یک فایل مطابقت داشته باشد، قالب موجود در ماژول استفاده می‌شود.
همچنین می‌توان معادل inline_epp را با دادن قالب پس از یک -e، یا با هدایت متن منبع EPP از طریق لوله (pipe) به دستور انجام داد.
مقادیر قالب را می‌توان با استفاده از زبان پاپت در خط فرمان با --values، یا در یک فایل .pp یا .yaml با ارجاع از طریق --values_file تعریف کرد. در صورت مشخص کردن هر دو، نتیجه ادغام می‌شود و --values اولویت بالاتری دارد.
گزینه --values اجازه می‌دهد توالی‌ای از عبارات زبان پاپت در خط فرمان تعریف شود، درست همان‌گونه که ممکن است در یک فایل .pp ارجاع داده‌شده با --values_file داده شود. این گزینه می‌تواند مقادیر متغیرها را تنظیم کند (که در قالب در دسترس قرار می‌گیرند)، و باید یا undef یا یک Hash از مقادیر تولید کند (هش می‌تواند خالی باشد). تولید undef شبیه‌سازی می‌کند که قالب بدون هش آرگومان‌ها فراخوانی شده و در نتیجه فقط به متغیرهای حوزه بیرونی خود ارجاع می‌دهد. هنگامی که یک هش داده می‌شود، قالب محدود به مشاهده تنها حوزه سراسری (global scope) است. بنابراین امکان شبیه‌سازی انواع مختلف فراخوانی توابع epp و inline_epp، با یا بدون هش مشخص، وجود دارد. توجه داشته باشید اگر متغیرهایی داده شوند، در این شبیه‌سازی همیشه در دسترس هستند - برای آزمایش اینکه قالب فقط به متغیرهای ارائه‌شده به عنوان آرگومان ارجاع دهد، یک هش در --values یا --values_file ایجاد کنید، هیچ متغیر غیر سراسری را مشخص نکنید، و تنظیم --strict_variables را فعال کنید.
اگر چند قالب مشخص شود، همان مجموعه مقادیر به هر قالب داده می‌شود. اگر هم از --values و هم از --values_file استفاده شود، مقادیر --values روی مقادیر ارائه‌شده در فایل بازنویسی و ادغام می‌شوند.
هنگامی که چند قالب رندر می‌شوند، یک هدر جداکننده بین قالب‌ها نمایش داده می‌شود که نام قالب را قبل از خروجی نشان می‌دهد. خروجی هدر را می‌توان با --no-header خاموش کرد. این کار همچنین نتایج قالب‌ها را بدون اضافه کردن جداکننده‌های خط جدید به یکدیگر متصل می‌کند.
به طور پیش‌فرض از فکت‌های (Facts) مربوط به نودی که دستور روی آن اجرا می‌شود استفاده می‌شود. در صورتی که نودهای دیگر گزارش داده باشند و فکت‌های خود را فرستاده باشند، می‌توان با استفاده از فلگ --node <nodename> فکت‌های آن نودها را به دست آورد.
می‌توان بازنویسی فکت‌های نود و همچنین فکت‌های اضافی را در یک فایل .yaml یا .json تعیین کرده و با گزینه --facts به آن ارجاع داد. (مقادیر را می‌توان در قالب yaml مستقیماً از facter یا از puppet برای یک نود خاص به دست آورد). توجه داشته باشید که شبیه‌سازی متغیر رزروشده $facts به هیچ روش دیگری امکان‌پذیر نیست.
توجه داشته باشید که تنظیم متغیرها با استفاده از زبان پاپت که نام یکسانی با فکت‌ها دارند ممکن نیست، زیرا از آنجا که فکت‌ها ابتدا مقداردهی می‌شوند، این کار منجر به خطای "attempt to redefine a variable" (تلاش برای بازتعریف یک متغیر) می‌شود.
اگر هیچ خطای اعتبارسنجی وجود نداشته باشد، با کد وضعیت 0 خارج می‌شود. در صورت بروز خطا، هیچ خروجی رندرشده‌ای برای آن فایل قالب تولید نمی‌شود.
هنگام طراحی قالب‌های EPP، اکیداً توصیه می‌شود تمام آرگومان‌های قالب را در خود قالب تعریف کنید، هنگام فراخوانی epp یا inline_epp آن‌ها را در یک هش ارسال کنید، و تا حد امکان از متغیرهای سراسری کمتری (ترجیحاً فقط هش $facts) استفاده کنید. این کار قالب‌ها را مستقل‌تر کرده و استفاده مجدد و آزمایش آن‌ها را آسان‌تر می‌سازد.
گزینه‌ها (OPTIONS) --e <source> - رندر کردن یک قالب درون‌خطی epp که در خط فرمان داده شده است.
--facts <facts_file> - یک فایل .yaml یا .json حاوی هش فکت‌ها که در $facts و $trusted در دسترس قرار می‌گیرند.
--[no-]header - نمایش دادن یا ندادن هدر حاوی نام فایل میان نتایج رندرشده.
--node <node_name> - نام نودی که فکت‌ها برای آن دریافت می‌شوند؛ پیش‌فرض فکت‌های نود محلی است.
--values <values_hash> - یک Hash در قالب زبان پاپت (Puppet DSL) که به عنوان آرگومان به قالب در حال رندر داده می‌شود.
--values_file <pp_or_yaml_file> - یک فایل .pp یا .yaml که پردازش شده و هش مقادیر را برای قالب تولید می‌کند.
مقادیر بازگشتی (RETURNS)
نتیجه رندرشده یک یا چند قالب ارائه‌شده.
•
validate - اعتبارسنجی ساختار نحوی یک یا چند قالب EPP: خلاصه دستور (SYNOPSIS)
puppet epp validate [--[no-]continue_on_error] [template] [template ...]
توضیحات (DESCRIPTION)
این عملیات ساختار نحوی EPP را بدون تولید هیچ خروجی اعتبارسنجی می‌کند.
هنگام اعتبارسنجی، خطاهای چندگانه به ازای هر فایل تا سقف تنظیمات max_error و max_warnings گزارش می‌شوند. پس از گزارش خطاها برای اولین فایل دارای خطای مشاهده‌شده، پردازش متوقف می‌شود مگر اینکه گزینه --continue_on_error داده شده باشد.
فایل‌ها را می‌توان با استفاده از سبک modulename/template.epp جهت جستجوی قالب از یک ماژول، یا به عنوان ارجاعی به یک فایل مشخص کرد. اگر ارجاع به یک فایل بتواند با یک قالب در ماژول تطبیق داده شود، نسخه ماژول برنده است - در این حالت اگر نسخه ماژول مد نظر نباشد، از یک مسیر مطلق برای ارجاع به فایل قالب استفاده کنید.
اگر خطای اعتبارسنجی وجود نداشته باشد با 0 خارج می‌شود.
گزینه‌ها (OPTIONS) --[no-]continue_on_error - ادامه دادن یا ندادن پس از گزارش خطاها برای یک قالب.
مقادیر بازگشتی (RETURNS)
هیچ، یا خطاهای نحوی مشاهده‌شده.

render

رندر کردن قالب 'mytemplate.epp' در ماژول 'mymodule' و ارسال دو آرگومان a و b به آن:

$ puppet epp render mymodule/mytemplate.epp --values '{a => 10, b => 20}'

رندر کردن قالب با استفاده از یک مسیر مطلق:

$ puppet epp render /tmp/testing/mytemplate.epp --values '{a => 10, b => 20}'

رندر کردن یک قالب با داده‌های برگرفته از فایل .pp:

$ puppet epp render /tmp/testing/mytemplate.epp --values_file mydata.pp

رندر کردن یک قالب با داده‌های فایل .pp و بازنویسی یک مقدار در خط فرمان:

$ puppet epp render /tmp/testing/mytemplate.epp --values_file mydata.pp --values '{a=>10}'

رندر کردن از ورودی استاندارد (STDIN):

$ cat template.epp | puppet epp render --values '{a => 10, b => 20}'

تنظیم متغیرها در یک فایل .pp و رندر کردن قالبی که از ارجاعات متغیر استفاده می‌کند:

# data.pp file
$greeted = 'a global var'
undef
$ puppet epp render -e 'hello <%= $greeted %>' --values_file data.pp

رندر کردن قالبی که یک فکت را در خروجی نمایش می‌دهد:

$ facter --yaml > data.yaml
$ puppet epp render -e '<% $facts[osfamily] %>' --facts data.yaml

validate

اعتبارسنجی قالب 'template.epp' در ماژول 'mymodule':

$ puppet epp validate mymodule/template.epp

اعتبارسنجی دو فایل قالب دلخواه:

$ puppet epp validate mymodule/template1.epp yourmodule/something.epp

اعتبارسنجی یک قالب در جایی از سیستم فایل:

$ puppet epp validate /tmp/testing/template1.epp

اعتبارسنجی قالب نسبت به یک فایل در دایرکتوری جاری:

$ puppet epp validate template1.epp
$ puppet epp validate ./template1.epp

اعتبارسنجی از ورودی استاندارد (STDIN):

$ cat template.epp | puppet epp validate

ادامه دادن در صورت بروز خطا برای مشاهده خطاهای تمام قالب‌ها:

$ puppet epp validate mymodule/template1.epp mymodule/template2.epp --continue_on_error

کپی‌رایت 2014 توسط Puppet Inc., Vox Pupuli تحت مجوز Apache 2؛ فایل COPYING را ببینید.

January 2025 Vox Pupuli