SaltStack که معمولاً با نام Salt شناخته می شود، یک ابزار متن باز برای اتوماسیون زیرساخت و مدیریت پیکربندی است و به تیم ها کمک می کند سرورها و سیستم ها را به صورت متمرکز و خودکار مدیریت نمایند. ابزار SaltStack برای محیط های پویا و سریع که اجرای دستورات را به صورت بلادرنگ و ریموت (از راه دور) پشتیبانی می کنند، طراحی شده است. به کمک این قابلیت، مدیران سیستم می توانند یک دستور را همزمان روی تعداد زیادی سرور اجرا نموده و نتیجه را بلافاصله دریافت کنند.
Salt می تواند طیف گسترده ای از عملیاتهای IT را خودکارسازی کند. این عملیاتها شامل پیکربندی سرورها، مدیریت وضعیت سیستمها و هماهنگ سازی استقرار برنامههای پیچیده است. تمرکز ابزار SaltStack روی مقیاس پذیری، سرعت و انعطاف پذیری، باعث شده تا بسیاری از تیم های DevOps و مدیران سیستم از آن استفاده کنند.

تصویر(1)
ویژگی های کلیدی ابزار SaltStack
ابزار SaltStack با قابلیتهای قدرتمند در مدیریت و اتوماسیون زیرساخت، راهکاری سریع و مقیاسپذیر ارائه میدهد؛ در ادامه با مهمترین ویژگیهای کلیدی آن آشنا خواهید شد:
-
اجرای دستورات به صورت بلادرنگ و از راه دور: SaltStack از معماری رویدادمحور (event-driven) استفاده می کند. این معماری به مدیران سیستم اجازه می دهد یک دستور را همزمان روی هزاران ماشین اجرا نموده و نتیجه را فوراً دریافت کنند.
-
مدیریت پیکربندی (Configuration Management): ابزار SaltStack از مفهومی به نام State استفاده می کند تا وضعیت مطلوب زیرساخت را مشخص نماید. این روش تضمین میکند تا تنظیمات در تمام محیط ها یکسان و پایدار باقی بمانند.
-
مقیاس پذیری بالا: این ابزار برای مدیریت هزاران node (هر دستگاه متصل به شبکه) با تأخیر بسیار کم طراحی شده است. به همین دلیل، در زیرساخت های بزرگ عملکرد قابل اعتمادی دارد.
-
اتوماسیون رویدادمحور: سیستم Salt Reactor به رویدادها گوش می دهد و در پاسخ به آنها اقدامات خودکار را اجرا می کند. این قابلیت برای محیط هایی ایده آل است که باید تغییرات را به صورت پویا مدیریت کنند.
-
قابل توسعه و ماژولار: SaltStack از معماری مبتنی بر افزونه پشتیبانی می کند. این ساختار به کاربران اجازه می دهد قابلیت های ابزار را بر اساس نیازهای خاص خود گسترش دهند.
-
پشتیبانی از حالت Agent و Agentless: ابزار SaltStack انعطاف پذیری بالایی دارد و می تواند هم با استفاده از Agent ها کار کند و هم در حالت Agentless (بدون Agent) اجرا شود.
-
ارکستریشن (Orchestration) و زمان بندی: SaltStack قابلیت اجرای ارکستریشن (هماهنگ سازی چند فرایند خودکار) پیچیده را دارد و امکان هماهنگی چندین سیستم، محیط و سرویس ابری را فراهم می سازد.
آشنایی با معماری SaltStack

تصویر(2)
SaltStack بر اساس معماری Master–Minion کار می کند:
-
Salt Master به عنوان سرور مرکزی، مدیریت کل زیرساخت را بر عهده دارد. این سرور دستورات و تنظیمات را برای Minion ها می فرستد و نتایج اجرای آنها را جمع آوری می کند.
-
Salt Minions، عامل یا agent هایی روی سیستم های مدیریت شده هستند. آنها دستورات Master را اجرا کرده و State ها را اعمال می کنند. در نهایت، گزارش اجرای خود را به Master باز می گردانند.
مفاهیم اصلی در SaltStack
برای درک بهتر عملکرد و معماری SaltStack، آشنایی با مفاهیم پایه آن ضروری است؛ در ادامه مهمترین مفاهیم اصلی آن مورد بررسی قرار می گیرد.
1. State ها
State ها برای تعریف وضعیت مطلوب سیستم ها استفاده می شوند. این فایل ها به فرمت YAML نوشته شده و مشخص می کنند که سیستم باید در چه حالتی قرار گیرد که می تواند شامل نصب پکیج ها، اجرای سرویس ها و تنظیمات دیگر باشد.
نمونه فایل State مربوط به سرویس nginx:
nginx:
pkg.installed:
- name: nginx
service.running:
- name: nginx
- require:
- pkg: nginx
این فایل اطمینان حاصل می کند که NGINX روی سیستم نصب و سرویس آن در حال اجرا باشد.
2. Grains
Grain ها اطلاعات ثابت سیستم هستند که شامل نسخه سیستم عامل، آدرس IP و نرم افزارهای نصب شده است. ابزار SaltStack از Grains برای هدف قرار دادن دقیق Minion ها هنگام اجرای دستورات یا اعمال State بهره می برد.

تصویر(3)
3. Pillars
Pillar ها شبیه Grains هستند اما روی Master تعریف می شوند. این ساختار، اطلاعات حساس مانند رمز عبور یا کلیدها را به Minion ها منتقل می کند، بدون آنکه داده ها به صورت عمومی در دسترس باشند.
4. Modules
SaltStack شامل مجموعه ای از ماژول ها است. ماژول های اجرایی، دستورات سیستم را اجرا نموده و ماژول های State پیکربندی را اعمال می کنند. این ساختار امکان مدیریت دقیق اجزای زیرساخت را فراهم می سازد.
5. Reactor
سیستم Reactor امکان اتوماسیون رویدادمحور را فراهم می کند. برای مثال، اگر یک سرویس از کار بیفتد، Reactor می تواند این رویداد را تشخیص دهد و به صورت خودکار عملیات بازیابی را اجرا نماید.
6. Salt Mine
Salt Mine قابلیتی است که به Minion ها اجازه می دهد دادههای دلخواه خود را روی Master ذخیره کنند. Minion های دیگر نیز می توانند به این داده ها دسترسی داشته باشند. این قابلیت برای هماهنگی بین سیستم ها بسیار کاربردی است.
مزایای استفاده از ابزار SaltStack
ابزار SaltStack به تیمهای فناوری کمک میکند تا با استانداردسازی فرایندهای عملیاتی، خطاهای انسانی را کاهش دهند؛ در ادامه با مزایای کلیدی آن آشنا خواهید شد.

تصویر(4)
-
کارایی و سرعت بالا: SaltStack به دلیل معماری رویدادمحور و اجرای آنی دستورات، عملکرد بسیار سریعی دارد. این ویژگی امکان اجرای همزمان دستورات روی تعداد زیادی node را با کمترین تأخیر فراهم می کند.
-
انعطاف پذیری و قابلیت توسعه: SaltStack از ماژول های متنوعی پشتیبانی می کند و امکان توسعه با اسکریپت ها و ماژول های سفارشی را در اختیار کاربران قرار می دهد. این موضوع باعث می شود تا ابزار SaltStack با نیازهای خاص هر سازمان سازگار گردد.
-
مقیاس پذیری و پایداری: این ابزار می تواند هزاران Minion را بدون افت محسوس عملکرد مدیریت کند. به همین دلیل، برای سازمانهای بزرگ و زیرساختهای گسترده گزینه ای مناسب است.
-
اتوماسیون رویدادمحور: SaltStack می تواند به تغییرات و رویدادهای زیرساخت، واکنش خودکار نشان دهد. این قابلیت مدیریت محیط های پویا و در حال تغییر را ساده تر می کند.
محدودیت های SaltStack
با وجود قابلیتهای گسترده SaltStack، این ابزار نیز چالشها و محدودیتهایی دارد؛ در ادامه مهمترین محدودیتهای آن آمده است:
-
پیچیدگی برای کاربران تازه کار: یادگیری ابزار SaltStack برای افرادی که با معماری و مفاهیم آن آشنا نیستند می تواند زمان بر باشد و منحنی یادگیری نسبتاً تندی دارد.
-
دشواری در عیب یابی (Debugging): برخی مشکلات پیکربندی نیازمند درک عمیق از ساختار داخلی Salt هستند. بدون این دانش، یافتن و رفع خطا ممکن است دشوار شود.
-
پشتیبانی جامعه کاربری: با وجود فعال بودن جامعه کاربری، میزان منابع و نمونه های موجود، نسبت به ابزارهای محبوب تر مانند انسیبل محدودتر است.
چه زمانی باید از ابزار SaltStack استفاده کرد؟
ابزار SaltStack برای سازمان هایی مناسب است که به دنبال یک ابزار سریع، مقیاس پذیر و انعطاف پذیر جهت خودکارسازی هستند. ماهیت رویدادمحور Salt، آن را به گزینه ای ایده آل برای محیط های پویا تبدیل می کند؛ محیط هایی که به پایش لحظه ای و واکنش خودکار نیاز دارند.
جمع بندی
SaltStack در میان ابزارهای اتوماسیون، به دلیل سرعت بالا، مقیاس پذیری مناسب و قابلیت های رویدادمحور، جایگاه ویژه ای دارد. این ابزار کمک می کند یک دسته کوچک از سرورها یا زیرساختی بزرگ و چند ابری را به سادگی مدیریت و کنترل نمایید.