GROUPS.CONF(5) ClusterShell User Manual GROUPS.CONF(5)

groups.conf - پرونده پیکربندی گروه‌های گره ClusterShell

کتابخانه ClusterShell پیکربندی گروه‌های گره خود را از منابع زیر، به ترتیب اولویت نزولی به دست می‌آورد:

1.
$CLUSTERSHELL_CFGDIR/groups.conf (فقط زمانی استفاده می‌شود که $CLUSTERSHELL_CFGDIR تعریف شده باشد)
2.
پرونده پیکربندی کاربر ($XDG_CONFIG_HOME/clustershell/groups.conf، به طور پیش‌فرض $HOME/.config/clustershell/groups.conf)
3.
محیط مجازی پایتون ({sys.prefix}/etc/clustershell/groups.conf)
4.
نصب محلی کاربر با pip ($HOME/.local/etc/clustershell/groups.conf)
5.
پرونده پیکربندی سراسری سیستم (/etc/clustershell/groups.conf)

برای هر پارامتر، اولین مقدار دریافت‌شده استفاده خواهد شد. اگر هیچ groups.conf یافت نشود، پشتیبانی از گروه غیرفعال خواهد شد.

همچنین پرونده‌های پیکربندی اضافی در صورت وجود از دایرکتوری‌های تعیین‌شده توسط گزینه confdir خوانده می‌شوند. برای جزئیات بیشتر به گزینه confdir در زیر مراجعه کنید.

پرونده‌های پیکربندی قالبی به سبک RFC 822 دارند که می‌توانند از چندین بخش با هر ترتیبی تشکیل شوند. دو نوع بخش وجود دارد: Main و Group_source:

گزینه‌های پیکربندی سراسری. تنها باید یک بخش Main وجود داشته باشد.
بخش‌های Group_source پیکربندی هر منبع گروه گره (یا فضای نام) را تعریف می‌کنند. این پیکربندی شامل تعاریف دستورات خارجی (map، mapall، all، list و reverse) است.

در پرونده‌های پیکربندی اضافی، تنها بخش‌های Group_source مجاز هستند.

پارامترهای پیکربندی بخش Main در زیر توضیح داده شده‌اند.

مشخص کردن منبع گروه پیش‌فرض (فضای نام گروه) که توسط تجزیه‌کننده NodeSet هنگام عدم تعیین صریح منبع گروه توسط کاربر (مثلاً "@io") استفاده می‌شود.
فهرست اختیاری از دایرکتوری‌ها که کتابخانه ClusterShell باید در آن‌ها به دنبال پرونده‌های .conf بگردد؛ پرونده‌هایی که منابع گروه مورد استفاده را تعریف می‌کنند. هر پرونده در این دایرکتوری‌ها با پسوند conf. باید شامل یک یا چند بخش Group_source باشد که در گزینه‌های [Group_source] در زیر مستند شده است. این بخش‌ها با منابع گروه تعریف‌شده در /etc/clustershell/groups.conf ادغام می‌شوند تا مجموعه کامل منابع گروهی را تشکیل دهند که ClusterShell استفاده خواهد کرد. بخش‌های Group_source تکراری مجاز نیستند. نکته: پرونده‌های conf. که برای کاربر جاری قابل خواندن نباشند نادیده گرفته می‌شوند (به جز پرونده‌ای که منبع گروه پیش‌فرض را تعریف می‌کند). متغیر $CFGDIR با مسیر دایرکتوری پیکربندی با بالاترین اولویت یافت‌شده (جایی که groups.conf قرار دارد) جایگزین می‌شود. مقدار پیش‌فرض confdir هم پیکربندی سراسری سیستم و هم هرگونه پیکربندی نصب‌شده کاربر را (به لطف $CFGDIR) فعال می‌کند. مسیرهای تکراری دایرکتوری نادیده گرفته می‌شوند. groupsdir به عنوان نام مستعار برای confdir پذیرفته می‌شود و در صورت تعریف هر دو، اولویت دارد.
فهرست اختیاری از دایرکتوری‌ها که کتابخانه ClusterShell باید در آن‌ها به دنبال پرونده‌های .yaml بگردد؛ پرونده‌هایی که فرهنگ لغت‌های گروهی درون‌پرونده‌ای را تعریف می‌کنند. نیازی به فراخوانی دستورات خارجی برای این پرونده‌ها نیست، آن‌ها توسط خود کتابخانه ClusterShell تجزیه می‌شوند. تعاریف چندگانه منابع گروه در یک پرونده پشتیبانی می‌شود. متغیر $CFGDIR با مسیر دایرکتوری پیکربندی با بالاترین اولویت یافت‌شده (جایی که groups.conf قرار دارد) جایگزین می‌شود. مقدار پیش‌فرض autodir هم پیکربندی سراسری سیستم و هم هرگونه پیکربندی نصب‌شده کاربر را (به لطف $CFGDIR) فعال می‌کند. مسیرهای تکراری دایرکتوری نادیده گرفته می‌شوند.

پارامترهای پیکربندی هر بخش منبع گروه در زیر توضیح داده شده‌اند.

مشخص کردن دستور شل خارجی مورد استفاده برای تبدیل یک نام گروه به یک nodeset، فهرستی از گره‌ها یا فهرستی از nodeset (جداشده با نویسه‌های فاصله یا خط جدید). متغیر $GROUP قبل از اجرای دستور جایگزین می‌شود. باید حداقل یکی از گزینه‌های map یا mapall تعریف شود.
دستور شل خارجی اختیاری که باید تمامی نگاشت‌های گروه به گره‌ها را برای این منبع گروه در یک فراخوانی واحد برگرداند؛ یک خط به صورت group: nodes به ازای هر گروه. زمانی مفید است که منبع بتواند تمام گروه‌های خود را به یکباره خروجی دهد (مثلاً با sinfo یا ansible-inventory --list)، زیرا در این صورت یک فراخوانی واحد به هر دو پرس‌وجوی map و list از حافظه موقت (کش) پاسخ می‌دهد. خروجی mapall بر فراخوانی list اولویت دارد. اگر map نیز تعریف شده باشد، به عنوان راهکار پشتیبان برای گروه‌هایی که در خروجی mapall وجود ندارند (یا برای همه گروه‌ها در صورت غیرفعال بودن کش) استفاده می‌شود؛ در غیر این صورت، گروه‌های ناموجود به یک nodeset خالی تبدیل می‌شوند. نخستین : در هر خط، نام گروه را از گره‌ها جدا می‌کند، بنابراین نام گروه‌ها باید واژه‌های تکی و بدون : باشند. خطوط تکراری گروه ادغام می‌شوند. یک خط خروجی بدشکل باعث شکست کل فراخوانی mapall می‌شود (چیزی کش نمی‌شود و پرس‌وجوی بعدی دوباره تلاش می‌کند)، و شکست در اجرای دستور mapall به map بازگشت نخواهد کرد.
دستور شل خارجی اختیاری که باید یک nodeset، فهرستی از گره‌ها یا فهرستی از nodeset از تمام گره‌ها را برای این منبع گروه برگرداند. در صورت عدم تعیین، کتابخانه تلاش می‌کند تا با استفاده از دستور خارجی list در همان منبع گروه و سپس map برای هر گروه، تمام گره‌ها را تفکیک کند.
دستور شل خارجی اختیاری که باید فهرست تمام گروه‌ها را برای این منبع گروه برگرداند (جداشده با نویسه‌های فاصله یا خط جدید). در صورتی که mapall تعریف شده باشد استفاده نمی‌شود، مگر اینکه کش غیرفعال شده باشد.
دستور شل خارجی اختیاری برای یافتن گروه(های) یک گره تکی. متغیر $NODE از قبل جایگزین می‌شود. اگر این فراخوانی مشخص نشود، عملیات معکوس در حافظه توسط کتابخانه از طریق فراخوانی‌های خارجی list و map محاسبه می‌شود. همچنین اگر تعداد گره‌ها برای عملیات معکوس بیشتر از تعداد گروه‌های موجود باشد، از اجرای دستور خارجی reverse به طور خودکار صرف‌نظر می‌شود.
تعداد ثانیه‌هایی که نتیجه هر فراخوانی فقط در حافظه رم (کش) نگهداری می‌شود. پیش‌فرض ۳۶۰۰ ثانیه است. این گزینه فقط برای دیمن‌هایی که از nodegroups استفاده می‌کنند مفید است.

هنگامی که کتابخانه یک دستور شل خارجی منبع گروه را اجرا می‌کند، دایرکتوری کاری جاری از قبل روی confdir مربوطه تنظیم می‌شود. این امر امکان استفاده از مسیرهای نسبی برای پرونده‌های شخص ثالث را در دستور فراهم می‌کند. ورودی استاندارد دستور به /dev/null متصل است.

علاوه بر متغیرهای وابسته به متن $GROUP و $NODE که در بالا توضیح داده شد، دو متغیر زیر نیز همیشه در دسترس هستند و قبل از اجرای دستورات شل جایگزین می‌شوند:

  • $CFGDIR با مسیر دایرکتوری پایه با بالاترین اولویت groups.conf جایگزین می‌شود
  • $SOURCE با نام منبع جاری جایگزین می‌شود

هر دستور خارجی در صورتی که عملیات قابل انجام نباشد ممکن است یک کد بازگشتی غیرصفر برگرداند. اما اگر فراخوانی مقدار صفر برگرداند (برای مثال برای یک گروه ناموجود)، کاربر هنگام تلاش برای تفکیک چنین گروه ناشناخته‌ای هیچ خطایی دریافت نخواهد کرد. رفتار مطلوب بر عهده مدیر سیستم است.

تمامی نتایج دستورات خارجی برای جلوگیری از فراخوانی‌های مکرر در حافظه کش می‌شوند. هر نتیجه برای مدت زمان محدودی نگهداری می‌شود. برای تنظیم این رفتار به گزینه cache_time مراجعه کنید.

پرونده پیکربندی ساده برای گروه‌های محلی و اتصال به پارتیشن‌های Slurm.

[Main]
default: local
confdir: /etc/clustershell/groups.conf.d $CFGDIR/groups.conf.d
autodir: /etc/clustershell/groups.d $CFGDIR/groups.d
[local]
map: sed -n 's/^$GROUP:\(.*\)/\1/p' /etc/clustershell/groups
list: sed -n 's/^\([0-9A-Za-z_-]*\):.*/\1/p' /etc/clustershell/groups
[slurm]
map: sinfo -h -o "%N" -p $GROUP
all: sinfo -h -o "%N"
list: sinfo -h -o "%P"
reverse: sinfo -h -N -o "%P" -n $NODE

$CLUSTERSHELL_CFGDIR/groups.conf (پیش‌فرض: /etc/clustershell/groups.conf)
پرونده پیکربندی سراسری گروه‌های گره.
$CLUSTERSHELL_CFGDIR/groups.conf.d/ (پیش‌فرض: /etc/clustershell/groups.conf.d/)
دایرکتوری پیشنهادی برای پرونده‌های پیکربندی اضافی.
$CLUSTERSHELL_CFGDIR/groups.d/ (پیش‌فرض: /etc/clustershell/groups.d/)
دایرکتوری پیشنهادی برای autodir، جایی که پرونده‌های بومی تعریف گروه (پرونده‌های yaml.) در آن قرار دارند.
$XDG_CONFIG_HOME/clustershell/groups.conf
پرونده پیکربندی اصلی کاربر برای groups.conf. اگر $XDG_CONFIG_HOME تعریف نشده باشد، به جای آن از $HOME/.config/clustershell/groups.conf استفاده می‌شود.
{sys.prefix}/etc/clustershell/groups.conf
پرونده پیکربندی هنگامی که ClusterShell در یک محیط مجازی پایتون نصب شده باشد.
$HOME/.local/etc/clustershell/groups.conf
پرونده پیکربندی محلی کاربر برای groups.conf (نصب پیش‌فرض برای pip --user)

clubak(1), cluset(1), clush(1), nodeset(1)

https://clustershell.readthedocs.io

Stephane Thiell

GNU Lesser General Public License version 2.1 or later (LGPLv2.1+)

2026-07-16 1.10.1