| NM-CLOUD-SETUP(8) | Automatic Network Configuration | NM-CLOUD-SETUP(8) |
نام (NAME)
nm-cloud-setup - نمای کلی از پیکربندی خودکار شبکه در محیطهای ابری
نمای کلی (OVERVIEW)
هنگام اجرای یک ماشین مجازی در محیط ابری عمومی، پیکربندی خودکار شبکه آن ماشین مجازی مطلوب و مورد انتظار است. در پیکربندیهای ساده، ماشین مجازی تنها یک رابط شبکه دارد و ابر عمومی از پیکربندی خودکار از طریق DHCP ،DHCP6 یا IPv6 autoconf پشتیبانی میکند. با این حال، ممکن است ماشین مجازی چندین رابط شبکه داشته باشد، یا دارای چندین آدرس IP و زیرشبکه IP روی یک رابط باشد که نمیتوان آنها را از طریق DHCP پیکربندی کرد. همچنین ممکن است مدیر سیستم در حین اجرای ماشین، شبکه را بازپیکربندی کند. ابزار nm-cloud-setup در NetworkManager ابزاری است که چنین پیکربندیهایی را در محیطهای ابری بهطور خودکار شناسایی کرده و پیکربندی شبکه میزبان را بهروزرسانی میکند.
ارائهدهندگان ابری متعددی پشتیبانی میشوند. بخش “ارائهدهندگان ابری پشتیبانیشده (SUPPORTED CLOUD PROVIDERS)” را ببینید.
کاربرد (USE)
هدف nm-cloud-setup این است که بدون نیاز به پیکربندی دستی و بهطور خودکار کار کند. تنها کاری که باید انجام دهید این است که ارائهدهندگان ابری مورد نظر را فعال کنید (بخش “متغیرهای محیطی (ENVIRONMENT VARIABLES)” را ببینید) و /usr/libexec/nm-cloud-setup را اجرا کنید.
معمولاً این کار با فعالسازی سرویس سیستمدی nm-cloud-setup.service و اجرای دورهای آن انجام میشود. برای این منظور، هم یک تایمر سیستمدی nm-cloud-setup.timer و هم یک اسکریپت دیسپچر NetworkManager در دسترس است.
جزئیات (DETAILS)
ابزار nm-cloud-setup شبکه را با واکشی پیکربندی از سرور فراداده (Metadata) شناختهشده ارائهدهنده ابری پیکربندی میکند. این بدان معناست که شبکه باید از پیش تا حدی پیکربندی شده باشد که بتواند به سرور فراداده دسترسی پیدا کند. معمولاً این بدین معنی است که یک نمایه اتصال ساده فعال است که احتمالاً از DHCP برای دریافت آدرس IP اولیه استفاده میکند. چنانچه در تنظیمات "no-auto-default" در NetworkManager.conf خلاف آن مشخص نشده باشد، NetworkManager چنین نمایهای را بهطور خودکار برای دستگاههای اترنت ایجاد میکند. یک راهکار جایگزین ممکن است ایجاد چنین نمایه اولیهای با دستور nmcli device connect "$DEVICE" یا nmcli connection add type ethernet ... باشد.
با تنظیم داده کاربر org.freedesktop.nm-cloud-setup.skip=yes روی نمایه، nm-cloud-setup از این دستگاه صرفنظر خواهد کرد.
ابزار nm-cloud-setup پیکربندی زمان اجرا را مشابه دستور nmcli device modify تغییر میدهد. با این رویکرد، پیکربندی ذخیره و ماندگار نمیشود و تنها تا زمان قطع اتصال دستگاه حفظ میگردد.
/usr/libexec/nm-cloud-setup
فایل اجرایی /usr/libexec/nm-cloud-setup بیشتر کارها را انجام میدهد. این برنامه از هیچ آرگومان خط فرمانی پشتیبانی نمیکند اما از طریق متغیرهای محیطی قابل پیکربندی است. برای مشاهده متغیرهای محیطی پشتیبانیشده، بخش “متغیرهای محیطی (ENVIRONMENT VARIABLES)” را ببینید.
بهطور پیشفرض، تمام ارائهدهندگان ابری غیرفعال هستند مگر اینکه با فعال کردن یک یا چند ارائهدهنده، آنها را انتخاب کنید. در صورت فعال بودن ارائهدهندگان ابری، برنامه تلاش میکند پیکربندی میزبان را از طریق HTTP از سرور فراداده ابر دریافت کند. اگر پیکربندی دریافت نشود، هیچ ارائهدهنده ابری شناسایی نشده و برنامه خارج میشود. در صورتی که پیکربندی میزبان به دست آید، ارائهدهنده ابری مربوطه با موفقیت شناسایی شده است. سپس شبکه میزبان پیکربندی خواهد شد.
هدف این است که هر بار که پیکربندی (احتمالاً) تغییر میکند، nm-cloud-setup دوباره اجرا شود. این ابزار خاصیت خودتوان (idempotent) دارد، بنابراین اجرای آن بیش از حد نیاز نیز مشکلی ایجاد نمیکند. میتوانید /usr/libexec/nm-cloud-setup را مستقیماً اجرا کنید. با این حال ترجیح داده میشود که بهجای آن، سرویس سیستمدی nm-cloud-setup را مجدداً راهاندازی کنید یا از تایمر یا اسکریپت دیسپچر برای اجرای دورهای آن استفاده نمایید (به بخش زیر مراجعه کنید).
واحد سیستمدی nm-cloud-setup.service (nm-cloud-setup.service systemd unit)
معمولاً /usr/libexec/nm-cloud-setup بهطور مستقیم اجرا نمیشود، بلکه تنها با دستور systemctl restart nm-cloud-setup.service فراخوانی میگردد. این کار تضمین میکند که این ابزار در هر لحظه تنها یک بار اجرا شود. این واحد همچنین توسط تایمر سیستمدی nm-cloud-setup استفاده میشود و امکان فعال یا غیرفعال کردن سرویس را از طریق سیستمدی فراهم میسازد.
از آنجا که برای پیکربندی فایل اجرایی nm-cloud-setup نیاز به تنظیم متغیرهای محیطی دارید، میتوانید این کار را از طریق فایلهای بازنویسی (override) سیستمدی انجام دهید. دستور systemctl edit nm-cloud-setup.service را امتحان کنید.
تایمر سیستمدی nm-cloud-setup.timer (nm-cloud-setup.timer systemd timer)
فایل اجرایی /usr/libexec/nm-cloud-setup به این منظور طراحی شده است که در هر زمان که بهروزرسانی لازم باشد اجرا گردد؛ برای مثال، در هنگام راهاندازی سیستم یا هنگام تغییر پیکربندی شبکه ماشین مجازی از طریق ارائهدهنده ابری.
یکی از روشهای انجام این کار، فعالسازی تایمر سیستمدی nm-cloud-setup.timer با دستور زیر است:
systemctl enable --now nm-cloud-setup.timer
/usr/lib/NetworkManager/dispatcher.d/90-nm-cloud-setup.sh
همچنین یک اسکریپت دیسپچر در NetworkManager وجود دارد که به عنوان مثال هنگام فعال شدن یک رابط شبکه توسط NetworkManager اجرا میشود. این اسکریپت در کنار تایمر سیستمدی nm-cloud-setup.timer تغییرات شبکه را بهطور خودکار دریافت میکند.
اسکریپت دیسپچر تا زمانی که سرویس سیستمدی فعال نشده باشد، هیچ کاری انجام نخواهد داد. بنابراین برای استفاده از اسکریپت دیسپچر، باید یک بار دستور systemctl enable nm-cloud-setup.service را اجرا کنید.
متغیرهای محیطی (ENVIRONMENT VARIABLES)
متغیرهای محیطی زیر برای پیکربندی /usr/libexec/nm-cloud-setup به کار میروند. ممکن است بخواهید آنها را با یک فایل دراپاین (drop-in) برای سرویس سیستمدی تنظیم کنید؛ برای مثال با اجرای دستور systemctl edit nm-cloud-setup.service و پیکربندی [Service] Environment= ، همانطور که در راهنمای systemd.exec(5) توصیف شده است.
اشکالزدایی (DEBUGGING)
با تنظیم متغیر محیطی NM_CLOUD_SETUP_LOG روی مقدار TRACE گزارشگیری اشکالزدایی را فعال کنید.
در حالت معمول که nm-cloud-setup به عنوان سرویس سیستمدی در حال اجرا است، این کار از طریق دستور systemctl edit nm-cloud-setup.service و افزودن Environment=NM_CLOUD_SETUP_LOG=TRACE به بخش [Service] انجام میشود. پس از آن، لاگها از طریق دستور journalctl در لاگهای سیستم (syslog) قابل مشاهده خواهند بود. همچنین ممکن است بخواهید همانطور که در بخش اشکالزدایی راهنمای NetworkManager(5) آمده است، گزارشگیری اشکالزدایی را در NetworkManager فعال کنید. هنگام اشتراکگذاری لاگها، بهتر است لاگهای کامل به اشتراک گذاشته شوند و از فیلتر کردن پیشاپیش لاگهای NetworkManager یا nm-cloud-setup خودداری شود.
پیکربندی نمونه برای تنظیم و استقرار پیشاپیش NM-CLOUD-SETUP (EXAMPLE SETUP FOR CONFIGURING AND PREDEPLOYING NM-CLOUD-SETUP)
همانطور که پیشتر توضیح داده شد، nm-cloud-setup باید صریحاً فعال شود. با توجه به اینکه این ابزار به عنوان یک سرویس و تایمر سیستمدی اجرا میشود، این فعالسازی اساساً به معنای فعال کردن و پیکربندی آنهاست. این کار با قرار دادن فایلها و پیوندهای نمادین مناسب روی دیسک امکانپذیر است.
مثال زیر nm-cloud-setup را برای ابر Amazon EC2 فعال میکند:
dnf install -y NetworkManager-cloud-setup mkdir -p /etc/systemd/system/nm-cloud-setup.service.d cat > /etc/systemd/system/nm-cloud-setup.service.d/10-enable-ec2.conf << EOF [Service] Environment=NM_CLOUD_SETUP_EC2=yes EOF # systemctl enable nm-cloud-setup.service mkdir -p /etc/systemd/system/NetworkManager.service.wants/ ln -s /usr/lib/systemd/system/nm-cloud-setup.service /etc/systemd/system/NetworkManager.service.wants/nm-cloud-setup.service # systemctl enable nm-cloud-setup.timer mkdir -p /etc/systemd/system/timers.target.wants/ ln -s /etc/systemd/system/timers.target.wants/nm-cloud-setup.timer /usr/lib/systemd/system/nm-cloud-setup.timer # systemctl daemon-reload
ارائهدهندگان ابری پشتیبانیشده (SUPPORTED CLOUD PROVIDERS)
Amazon EC2 (AWS)
برای AWS، این ابزار تلاش میکند پیکربندی را از http://169.254.169.254 واکشی کند. در حال حاضر، این ابزار فقط IPv4 را پیکربندی کرده و کاری برای IPv6 انجام نمیدهد. مراحل زیر انجام خواهد شد:
اگر فقط یک رابط و یک آدرس پیکربندی شده باشد، ابزار هیچ کاری انجام نداده و پیکربندی خودکار بهدستآمده از طریق DHCP را بدون تغییر رها میکند.
در غیر این صورت، این ابزار پیکربندی زمان اجرای دستگاه را تغییر خواهد داد.
همچنین جدول مسیریابی 30200 + شناسه رابط را انتخاب میکند. این جدول شامل مسیرهای مستقیم به زیرشبکههای این رابط است.
با مثال فوق، این موارد برای رابط eth0 تقریباً معادل دستور زیر است:
nmcli device modify "eth0" ipv4.addresses "172.16.5.3/24,172.16.5.4/24" ipv4.routes "172.16.5.0/24 0.0.0.0 10 table=30200, 0.0.0.0/0 172.16.5.1 10 table=30400" ipv4.routing-rules "priority 30200 from 172.16.5.3/32 table 30200, priority 30200 from 172.16.5.4/32 table 30200, priority 20350 table main suppress_prefixlength 0, priority 30400 from 172.16.5.3/32 table 30400, priority 30400 from 172.16.5.4/32 table 30400". توجه داشته باشید که این کار آدرسها، مسیرها و قوانین قبلی را با اطلاعات جدید جایگزین میکند. اما همچنین دقت کنید که این دستور تنها پیکربندی زمان اجرای دستگاه را تغییر میدهد و نمایه اتصال ذخیرهشده روی دیسک تحت تأثیر قرار نمیگیرد.
Google Cloud Platform (GCP)
برای GCP، فراداده از نشانیهای اینترنتی شروعشده با http://metadata.google.internal/computeMetadata/v1/ به همراه هدر HTTP با مقدار "Metadata-Flavor: Google" واکشی میشود. در حال حاضر، این ابزار تنها IPv4 را پیکربندی کرده و کاری برای IPv6 انجام نمیدهد. مراحل زیر انجام خواهد شد:
برای هر دستگاه، اتصال اعمالشده فعلی در NetworkManager را جستجو میکنیم. این امر مستلزم آن است که دستگاه در حال حاضر در NetworkManager فعال باشد. اگر چنین دستگاهی در NetworkManager وجود نداشته باشد، یا اگر نمایه دارای داده کاربر org.freedesktop.nm-cloud-setup.skip=yes باشد، از دستگاه صرفنظر میکنیم. اکنون برای هر آدرس IP پیداشده، یک مسیر ایستا به صورت "$FIPS_ADDR/32 0.0.0.0 100 type=local" اضافه کرده و تغییر را مجدداً اعمال میکنیم.
نتیجه این کار مشابه اجرای دستور زیر برای تمام دستگاههای مربوطه و تمام آدرسهای پیداشده است:
nmcli device modify "$DEVICE" ipv4.routes "$FIPS_ADDR/32 0.0.0.0 100 type=local [,...]"
Microsoft Azure
برای آژور، فراداده از نشانیهای اینترنتی شروعشده با http://169.254.169.254/metadata/instance به همراه پارامتر URL "?format=text&api-version=2017-04-02" و هدر HTTP "Metadata:true" واکشی میشود. در حال حاضر، این ابزار فقط IPv4 را پیکربندی کرده و کاری برای IPv6 انجام نمیدهد. مراحل زیر انجام خواهد شد:
سپس این ابزار سیستم را مشابه محیط AWS پیکربندی میکند؛ یعنی با استفاده از مسیریابی مبتنی بر خطمشی مبتنی بر مبدأ با جداول/قوانین 30200/30400.
Alibaba Cloud (Aliyun)
برای علیبابا کلود (Aliyun)، ابزار تلاش میکند پیکربندی را از http://100.100.100.200 واکشی کند. در حال حاضر، این ابزار فقط IPv4 را پیکربندی کرده و کاری برای IPv6 انجام نمیدهد. مراحل زیر انجام خواهد شد:
سپس این ابزار سیستم را مشابه محیط AWS پیکربندی میکند؛ یعنی با استفاده از مسیریابی مبتنی بر خطمشی مبتنی بر مبدأ با جداول/قوانین 30200/30400. یک تفاوت با AWS این است که درگاه پیشفرض (gateway) نیز بهجای استفاده از اولین آدرس IP در زیرشبکه، از طریق فراداده واکشی میشود.
Oracle Cloud (OCI)
برای OCI، ابزار تلاش میکند پیکربندی را از http://169.254.169.254 واکشی کند. در حال حاضر، این ابزار فقط IPv4 را پیکربندی کرده و کاری برای IPv6 انجام نمیدهد. مراحل زیر انجام خواهد شد:
سپس این ابزار سیستم را مشابه محیط AWS پیکربندی میکند؛ یعنی با استفاده از مسیریابی مبتنی بر خطمشی مبتنی بر مبدأ با جداول/قوانین 30200/30400.
همچنین ببینید (SEE ALSO)
| NetworkManager 1.58.1 |