آموزش پاپت

آنچه در این صفحه می خوانید:

پاپت (Puppet) چیست؟

Puppet ابزاری برای مدیریت پیکربندی است که جهت استقرار، پیکربندی و مدیریت سرورها استفاده می شود. پاپت از یک معماری Master-Slave استفاده می کند که در آن Master و Slave از طریق یک کانال رمزگذاری شده ایمن با کمک SSL ارتباط برقرار می کنند.

Puppet یک ابزار مدیریت پیکربندی نرم افزار اوپن سورس است. این نرم افزار بر روی بسیاری از سیستم های شبیه به یونیکس و همچنین در ویندوز اجرا می شود و شامل زبان اعلامی خود برای توصیف پیکربندی سیستم است. این نسخه در سی پلاس پلاس، کلوژور (Clojure) و روبی نوشته شده  و همراه با نسخه نرم افزار رایگان آن منتشر شده است که تحت مجوز Apache 2.0 2.0 منتشر شده است. Puppet به گونه ای طراحی شده است که پیکربندی سیستم های شبیه یونیکس و ویندوز را بصورت اعلانی مدیریت کند. کاربر منابع سیستم و وضعیت آنها را با استفاده از زبان اعلانی Puppet یا Ruby DSL (یک زبان خاص دامنه) توصیف می کند. این اطلاعات در پرونده هایی با عنوان "Puppet manifests" ذخیره می شود. پاپت اطلاعات سیستم را از طریق ابزاری به نام Factor کشف می کند و مانیفست های پاپت را در یک فروشگاه مخصوص سیستم که شامل منابع است، جمع آوری می کند و در برابر سیستم های هدف مورد استفاده قرار می گیرد. اقدامات انجام شده توسط پاپت گزارش می شود.

پاپت از یک زبان اعلانی سفارشی برای توصیف پیکربندی سیستم تشکیل شده است، که می تواند به طور مستقیم بر روی سیستم اعمال شود، یا در یک فهرست وارد شود و از طریق الگوی کلاینت-سرور (با استفاده از REST API) در سیستم مورد نظر توزیع شود و و عامل برای ارائه منابع مشخص شده در مانیفست از ارائه دهندگان خاص سیستم استفاده می کند. لایه انتزاع منابع به مدیران امکان می دهد پیکربندی را به صورت سطح بالا مانند کاربران، سرویس ها و پکیج ها بدون نیاز به مشخص کردن دستورات خاص سیستم عامل (مانند rpm، yum، apt) توصیف کنند.

پاپت مدل محور است، برای استفاده از دانش برنامه نویسی محدود نیاز دارد. پاپت در دو نسخه ارائه می شود، پاپت Enterprise و پاپت اوپن سورس. علاوه بر ارائه قابلیت های پاپت منبع باز، پاپت Enterprise همچنین از ابزارهای GUI، خط فرمان و API برای مدیریت گره استفاده می کند.

ویژگی های پاپت (Puppet)

در زیر چند واقعیت در مورد پاپت وجود دارد:

  • پایه نصب بزرگ: پاپت توسط بیش از 30،000 شرکت در سراسر جهان از جمله گوگل، رد هت، زیمنس و غیره به همراه چندین دانشگاه مانند دانشکده حقوق استنفورد و هاروارد استفاده می شود. به طور متوسط ​​روزانه 22 سازمان جدید برای اولین بار از پاپت استفاده می کنند.
  • پایه توسعه بزرگ: پاپت به قدری مورد استفاده قرار می گیرد که افراد زیادی برای توسعه آن تلاش می کنند.
  • سابقه طولانی تجاری: پاپت از سال 2005 در استفاده تجاری بوده و به طور مداوم اصلاح و بهبود یافته است. در زیرساخت های بسیار بزرگ مستقر شده است (5،000 دستگاه) و دروس عملکرد و مقیاس پذیری که از این پروژه ها گرفته شده است، در پیشرفت پاپت نقش داشته است.
  • مستندات: پاپت دارای ویکی بزرگ است که توسط کاربران صدها صفحه اسناد و ارجاع جامع برای هر دو زبان و انواع منابع آن وجود دارد. علاوه بر این، در چندین لیست پستی به طور فعال مورد بحث قرار می گیرد و دارای یک کانال IRC بسیار محبوب است، بنابراین مشکل پاپت شما هرچه باشد، پیدا کردن جواب آسان است.
  • پشتیبانی بستر های نرم افزاری: سرور Puppet می تواند بر روی هر پلتفرمی که از ruby ​​برای سابق پشتیبانی می کند، اجرا شود: CentOS، ویندوز سرور، اوراکل و لینوکس و غیره. این نه تنها از سیستم عامل های جدید پشتیبانی می کند بلکه می تواند در سیستم های قدیمی نیز اجرا شود.

اکنون مشخص است که پاپت در سراسر جهان تقاضای زیادی دارد. اما، قبل از غوطه ور شدن در پاپت، ابتدا به این توضیح که مدیریت پیکربندی چیست و چرا اهمیت دارد توجه کنید.

مدیریت پیکربندی چیست؟

مدیریت پیکربندی فرایند نگهداری نرم افزارها و سیستم های رایانه ای (به عنوان مثال سرورها، ذخیره سازی، شبکه ها) در یک حالت شناخته شده، مورد نظر و سازگار است. همچنین این امکان را می دهد تا به هیستوری دقیق وضعیت سیستم برای مدیریت پروژه و اهداف حسابرسی دسترسی داشته باشید.

سرپرستان سیستم اکثراً کارهای تکراری مانند نصب سرورها، پیکربندی آن سرورها و غیره را انجام می دهند. این متخصصان می توانند با نوشتن اسکریپت، این کار را به صورت خودکار انجام دهند. با این حال، هنگامی که آنها روی یک زیرساخت عظیم کار می کنند کار دشواری است. ابزار مدیریت پیکربندی مانند پاپت برای حل چنین مواردی معرفی شد.

کاربرد پاپت (Puppet)

به عنوان مثال، شما دارای زیرساختی با حدود 100 سرور هستید. به عنوان مدیر سیستم، وظیفه شماست که اطمینان حاصل کنید که همه این سرورها همیشه به روز بوده و با عملکرد کامل کار می کنند. برای این کار می توانید از Puppet استفاده کنید که به شما امکان می دهد کدی ساده بنویسید که بطور خودکار در این سرورها مستقر شود. این تلاش انسان را کاهش می دهد و روند توسعه را سریع و مؤثر می کند.

پاپت توابع زیر را انجام می دهد:

  • پاپت اجازه می دهد تا تنظیمات متمایز را برای هر میزبان تعریف کنید.
  • این ابزار به شما امکان می دهد تا سرورها را به طور مداوم کنترل کنید تا تأیید کنید که پیکربندی مورد نیاز وجود دارد یا خیر و تغییر نکرده است. اگر پیکربندی تغییر یابد، ابزار Puppet به پیکربندی از پیش تعریف شده در هاست باز می گردد.
  • همچنین کنترل تمام سیستم پیکربندی شده را فراهم می کند، بنابراین یک تغییر متمرکز به طور خودکار انجام می شود.
  • همچنین از آن به عنوان یک ابزار استقرار استفاده می شود زیرا به طور خودکار نرم افزار را به سیستم مستقر می کند. این زیرساخت ها را به عنوان کد پیاده سازی می کند زیرا خط مشی ها و پیکربندی ها به صورت کد نوشته می شوند.

بگذارید کاربردهای پاپت را با استفاده از یک مطالعه موردی درک کنیم. اگر علاقه مندان به پوکر هستید و یا تاکنون بازی های آنلاین انجام داده اید، پس حتماً در مورد Zynga شنیده اید. این بزرگترین توسعه دهنده بازی های اجتماعی در جهان است. زیرساخت Zynga از ده ها هزار سرور در مراکز داده عمومی کلود و خصوصی استفاده می کند. در اوایل آنها از یک فرایند دستی، از جمله Kickstarter و نصب پس از آن استفاده می کردند تا صدها سرور را بصورت آنلاین بدست آورند.

اکنون خواهیم دید که آنها با این روند با چه مشکلی روبرو شده اند:

  • مقیاس پذیری و سازگاری - Zynga رشد پدیده ای را تجربه می کرد و زیرساخت های لازم برای همگام سازی با صنعت مورد نیاز است. راه حل ها و رویکردهای دستی برای نیازهای آنها کافی نبود.
  • زیرساخت های قابل حمل - Zynga به روشی برای استفاده از یک رویکرد مدیریت پیکربندی مداوم در هر دو زیرساخت ابری عمومی و مراکز داده خود نیاز داشت.
  • انعطاف پذیری - با توجه به تنوع ویژگی های مختلف بازی Zynga، این تیم برای این مهم بود که بتواند به سرعت مطابقت پیکربندی مناسب دستگاه مناسب را داشته باشد.
  • بینش زیرساختی - با بالغ شدن سازمان، داشتن یک روش خودکار برای تجسم خواص هر دستگاه مهمتر شد.

این شرکت به اندازه کافی هوشمند بود که حتی قبل از اینکه آنها به مقیاس سریع برسند، به سرعت نیاز به یک فرآیند خودکار را درک کنند، یعنی زمانی که پاپت وارد شد.

نظرتون درباره این نوشته چیه؟ عالیه بد نیست خوب نبود