Nix و NixOS برای زیرساخت بازتولیدپذیر، بخش ۶: home-manager و استقرار از راه دور

در بخش پایانی دو قطعه‌ی آخر را کنار هم می‌گذاریم. اول home-manager برای اینکه محیط شخصی کاربر (ابزارها، تنظیمات git، aliasها و ...) را هم مثل خود سیستم اعلانی کنیم. سپس همان مدل flake را برای استقرار از راه دور روی یک ماشین دیگر به‌کار می‌بریم؛ درست مثل اینکه از روی لپ‌تاپ خودتان یک سرور را بسازید.

محیط کاربر با home-manager

تا اینجا سیستم را اعلانی کردیم، اما محیط شخصی کاربر (dotfiles) هنوز دستی بود. home-manager همان مدل را به سطح کاربر می‌آورد: package‌های کاربر، تنظیمات git، پیکربندی shell و aliasها همه در یک فایل توصیف می‌شوند و با همان nixos-rebuild switch اعمال می‌شوند:

پیکربندی محیط کاربر با home-manager و بررسی تنظیمات git و aliasها
محیط کاربر به‌صورت اعلانی با home-manager: package‌ها، تنظیمات git و alias‌ها. پس از rebuild همه‌چیز سرجایش است؛ dotfiles هم بازتولیدپذیر می‌شوند.

استقرار از راه دور روی یک ماشین دیگر

حالا نکته‌ی نهایی: اگر کل یک سیستم یک nixosConfiguration در یک flake است، می‌توانیم آن را روی یک ماشین دیگر از راه دور بسازیم و فعال کنیم؛ بدون اینکه دستی وارد آن سرور شویم. یک flake با یک ورودی برای هر ماشین («ناوگان») تعریف می‌کنیم و با یک دستور، پیکربندی ماشین web01 را روی میزبان راه دور مستقر می‌کنیم:

یک flake ناوگان و استقرار از راه دور با nixos-rebuild --target-host
یک flake که برای هر ماشین یک nixosConfiguration دارد، و استقرار از راه دور با nixos-rebuild switch --target-host. سیستم برای ماشین راه دور ساخته، به آن کپی و فعال می‌شود؛ همه از روی همین ماشین.

روی ماشین مقصد بررسی می‌کنیم: نسل فعال حالا web01 است، نام میزبان تغییر کرده و سرویس nginx فعال است و همان صفحه‌ای را که در پیکربندی توصیف کردیم سرو می‌کند:

بررسی روی ماشین مقصد؛ نسل web01، نام میزبان و nginx فعال
روی میزبان راه دور: نسل فعلی سیستم nixos-system-web01 است، /etc/hostname برابر web01، و nginx همان صفحه‌ی توصیف‌شده در flake را سرو می‌کند. استقرار کاملاً از راه دور و اعلانی انجام شد.

جمع‌بندی مجموعه

در این مجموعه‌ی شش‌بخشی مسیر کامل را طی کردیم: از مفاهیم Nix و /nix/store، زبان Nix و اولین derivation، flakes و محیط‌های بازتولیدپذیر، تا NixOS اعلانی، سرویس‌ها و secret‌ها، و در نهایت home-manager و استقرار از راه دور. نتیجه یک زیرساخت است که در آن همه‌چیز کد است: قابل‌بازبینی، بازتولیدپذیر و با یک دستور قابل‌بازگشت.

همه‌ی کدها و پیکربندی‌های این مجموعه روی GitHub در دسترس است: github.com/obsernetics/nixos-lab

بخش‌های این مجموعه

← بازگشت به وبلاگ