آنچه در این صفحه می خوانید:
Ansible چیست؟
Ansible یک منبع نرم افزار اوپن سورس برای مدیریت پیکربندی و ابزار استقرار برنامه است. این سیستم بر روی بسیاری از سیستم های مانند یونیکس اجرا می شود و می تواند هم سیستم های یونیکس مانند و هم مایکروسافت ویندوز را پیکربندی کند. این شامل زبان اعلامی خود برای توصیف پیکربندی سیستم است.
Ansible توسط مایکل DeHaan نوشته شده و توسط Red Hat در سال 2015 به دست آمده است. Ansible بدون عامل است، به طور موقت از راه دور از طریق SSH یا PowerShell از راه دور برای انجام وظایف خود متصل می شود. Ansible یک موتور IT ساده است که استقرار نرم افزار، intra service orchestration، cloud provisioning و سایر ابزارهای IT خودکار می سازد. استقرار Ansible آسان است زیرا از هیچ عامل یا زیرساخت امنیتی سفارشی استفاده نمی کند.
Ansible از playbook استفاده می کند تا مشاغل خودکارسازی را توصیف کند و playbook از زبان بسیار ساده ای استفاده می کند. YAML (زبان سریال سازی داده است و معمولا برای فایل های پیکربندی مورد استفاده قرار می گیرد، اما می تواند در بسیاری از اپلیکیشن ها که داده ها در آنها ذخیره می شود بکار رود) برای فهمیدن، خواندن و نوشتن بسیار ساده و آسان می باشد. از این رو، مزیت این امر این است که حتی زیرساخت های فناوری اطلاعات از افرادی که می توانند playbook را بخوانند و درک کنند و در صورت لزوم اشکال زدایی کنند پشتیبانی می کند.
Ansible برای استقرار multi-tier طراحی شده است. Ansible یک سیستم را در یک زمان مدیریت نمی کند، زیرساخت فناوری اطلاعات را با توصیف تمام سیستم های مرتبط مدل سازی می کند. Ansible با اتصال به گره ها از طریق ssh (به طور پیش فرض) کار می کند. اما اگر می خواهید از متد دیگری برای اتصال مانند Kerberos، Anabled استفاده کنید این گزینه را برای شما فراهم می کند. پس از اتصال به گره ها، Ansible برنامه های کوچکی را به نام Ansible Modules اعمال می کند. Ansible آن ماژول ها را در گره ها اجرا می کند و و بعد از اتمام آنها را حذف می کند. Ansible موجودی شما را در فایل های متنی ساده مدیریت می کند (hosts file). همچنین Ansible از فایل هاست ها استفاده می کند که در آن می توان هاست ها را گروه بندی کرد و می تواند اقدامات مربوط به یک گروه خاص را در Playbooks کنترل کرد.
تاریخچه Ansible
اصطلاح "Ansible" توسط Ursula K. Le Guin در رمان خود در سال 1966 با نام Rocannon's World ابداع شده است و به سیستم های ارتباطی فوری داستانی اشاره دارد. ابزار Ansible توسط مایکلDeHaan، نویسنده برنامه ارائه دهنده سرور Cobbler و همکار نویسنده فریمورک کنترل شبکه یکپارچه (Func) برای مدیریت از راه دور تهیه شده است.
رد هت در اکتبر 2015 Ansible را بدست آورد. Ansible بعنوان بخشی از توزیع فدورا لینوکس، متعلق به رد هت گنجانده شده است، همچنین برای Red Hat Enterprise Linux، CentOS، Debian، Scientific Linux، Oracle Linux از طریق بسته های اضافی برایEnterprise Linux و اوبونتو و همچنین برای سیستم عامل های دیگر در دسترس است.
معماری Ansible
Ansible برخلاف اکثر نرم افزارهای مدیریت پیکربندی، از آنجا که ارکستراسیون شروع می شود، نیاز به یک دستگاه کنترل واحد ندارد. Ansible در برابر سیستم های مختلف در زیرساخت شما با انتخاب بخش هایی از موجودی Ansible که به عنوان فایل های متنی ASCII با قابلیت ویرایش و ذخیره سازی ذخیره می شوند، کار می کند. این موجودی نه تنها قابل تنظیم است، بلکه می توانید همزمان از چندین فایل موجودی نیز استفاده کنید و موجودی را از منابع پویا یا ابر یا قالب های مختلف (YAML، INI و غیره) بیرون بکشید. هر دستگاهی با برنامه های کاربردی Ansible نصب شده می تواند مجموعه ای از پرونده ها و فهرست ها را به ارکستر گره های دیگر اهرم کند، فقدان یک نیاز به سرور مرکزی، برنامه ریزی برای بازیابی فاجعه را بسیار ساده می کند. گره ها توسط این دستگاه کنترل کننده - معمولاً بیش از SSH کنترل می شوند. دستگاه کنترل کننده مکان گره ها را از طریق موجودی خود توصیف می کند. داده های حساس را می توان در فایل های رمزگذاری شده با استفاده از Ansible Vault از سال 2014 ذخیره کرد.
برخلاف سایر نرم افزارهای مدیریت پیکربندی محبوب مانند Chef، Puppet و CFEngine - Ansible از معماری بدون عامل استفاده می کند، با یک نرم افزار قابل اعتماد به طور معمول اجرا نشده و یا حتی روی آن نصب نشده است. گره کنترل شده در عوض، Ansible با نصب و راه اندازی ماژول ها بر روی گره به طور موقت از طریق SSH گره را ترسیم می کند. برای مدت زمان اجرای یک ارکستراسیون، فرایندی که ماژول را اجرا می کند از طریق ورودی و خروجی استاندارد آن با دستگاه کنترل کننده با یک پروتکل مبتنی بر JSON ارتباط برقرار می کند. وقتی Ansible در حال مدیریت گره نیست، منابع را بر روی گره مصرف نمی کند زیرا هیچ اجرای نرم افزار مخرب نصب نشده است.
اهداف طراحی
اهداف طراحی Ansible شامل موارد زیر است:
- حداقل از نظر طبیعت. سیستم های مدیریتی نباید وابستگی های اضافی به محیط زیست تحمیل کنند.
- استوار. با Ansible می توان محیط های سازگار ایجاد کرد.
- Ansible امن است. عوامل را به گره ها مستقر نمی کند. فقط OpenSSH و Python در گره های مدیریت شده مورد نیاز هستند. بسیار قابل اعتماد هنگامی که با دقت نوشته شود، یک playbook می تواند برای جلوگیری از عوارض جانبی غیر منتظره بر روی سیستم های مدیریت شده، هوشیار باشد. این امکان وجود دارد که یک کتابنامه نویسی ضعیف بنویسید که خاموش نباشد.
- حداقل یادگیری لازم است. کتاب های Playbook بر اساس الگوهای YAML و Jinja از زبانی آسان و توصیفی استفاده می کنند.
ویژگی های Ansible
- تنظیم و استفاده از آن بسیار ساده است. برای استفاده از Playbook Ansible مهارت رمزگذاری خاصی لازم نیست.
- قدرتمند است.Ansible به شما امکان می دهد تا گردش کار حتی بسیار پیچیده IT را الگوبرداری کنید.
- قابل انعطاف است. شما می توانید کل محیط برنامه را بدون توجه به اینکه در آن مستقر باشد، ارکستر کنید. همچنین می توانید بر اساس نیاز خود آن را شخصی سازی کنید.
- نیازی به نصب هیچ نرم افزار یا پورت فایروال دیگری روی سیستم های مشتری مورد نظر برای اتوماسیون ندارید. همچنین لازم نیست که یک ساختار مدیریتی جداگانه ایجاد کنید.
- کارآمد است. از آنجا که نیازی به نصب هیچ نرم افزاری اضافی ندارید، فضای بیشتری برای منابع برنامه در سرور شما وجود دارد.
کاربرد Ansible
تأمین
برنامه های شما باید در جایی زندگی کنند. اگر سرورهای PixE یا VM را شروع به راه اندازی و شروع به کار کرده اید، یا نمونه های مجازی یا ابری را از قالب ها ایجاد می کنید، Red Hat® Ansible® Tower به ساده سازی روند کمک می کنند.
مدیریت پیکربندی
متمرکز کردن مدیریت و پیاده سازی پرونده پیکربندی یک مورد متداول برای Ansible است و این تعداد کاربرانی است که برای اولین بار به پلتفرم اتوماسیون Ansible معرفی می شوند.
استقرار برنامه
هنگامی که برنامه خود را با Ansible تعریف می کنید و استقرار را با برج Ansible مدیریت می کنید، تیم ها می توانند به طور موثری کل چرخه چرخه کاربرد را از توسعه تا تولید مدیریت کنند.
تحویل مداوم
ایجاد خط لوله CI / CD نیاز به خرید تعداد زیادی از تیم ها دارد. شما نمی توانید این کار را بدون یک سکوی اتوماسیون ساده انجام دهید که همه افراد در سازمان شما می توانند از آن استفاده کنند. Playbooks مطمئنی برنامه های شما را به درستی مستقر (و مدیریت شده) در کل چرخه زندگی خود نگه می دارد.
اتوماسیون امنیتی
هنگامی که خط مشی امنیتی خود را در Ansible تعریف می کنید، می توانید اسکن و اصلاح سیاست های امنیتی سایت در سایر فرآیندهای خودکار یکپارچه شوید و به جای آنکه بعداً یک نتیجه باشد، در هر آنچه مستقر است، یکپارچه است.
تنظیم و ارکستراسیون
تنظیمات به تنهایی محیط شما را مشخص نمی کنند. شما باید تعریف کنید که چگونه پیکربندی های مختلف تعامل دارند و اطمینان می دهند که قطعات مختلف به عنوان یک کل قابل مدیریت هستند. از پیچیدگی و هرج و مرج، Ansible نظم می آورد.
Ansible برای دستگاه های شبکه
از زمان انتشار Ansible 2.1 پشتیبانی شبکه کاملا گسترده ای به عنوان بخشی از محصول وجود دارد. بنابراین اکنون هیچ مشکلی برای مدیریت دستگاه های شبکه با Ansible نیست. ماژول های شبکه سازی اصلی Ansible، به پلتفرم های خاص متصل می شوند. مثلا یک ماژول ios_config برای پیکربندی دستگاه های Cisco IOS، برای Juniper ماژول junos_config و غیره است. شما همچنین می توانید با استفاده از کتابخانه Napalm از Ansible شبکه خود را خودکارسازی کنید.