اتوماتیک کردن مدیریت زیرساخت های IT با Puppet

امروزه با گسترش زیرساخت های فناوری اطلات بر روی پلتفروم های مختلف مثل Linux و Microsoft و همچنین وجود کلی نرم افزار و تنظیمات مرتبط با آنها،فرآیند نگهداری و پشتیبانی این زیرساخت ها توسط مدیران سیستم ها (System Administrators)بسیار وقتگیر و هزینه بر هست. نرم افزاری به نام Puppet مدتی هست که با هدف اتوماتیک کردن فرآیندهای نگهداری زیرساخت های IT  تولید شده است.

Puppet

Puppet در چه مواردی کاربرد دارد:

  • اگر تعداد زیادی سرور دارید که میخواهید همه آنها را  Config کنید و یا مثلا یک Application روی همه  آنها نصب کنید.
  • وقتی نیاز دارید تا زیر ساخت شما به صورت Dynamic تنظیم بشود.
  • قبل از اینکه تنظیمات به صورت دائمی در سرورهای شما اعمال شود، ابتدا آنها را شبیه سازی و تست کنید تا بتوانید تغییرات را در زیر ساخت خود مدیریت کنید(Change Management).
  • وقتی که نیاز دارید تا کلیه تنظیمات مربوط به زیرساخت شما در یک مکان مرکزی (Centralized) وجود داشته باشد.
  • و …

نکات جالب در مورد Puppet

  • Puppet به صورت دو نسخه OpenSource و Enterprise وجود دارد که نسخه Enterprise آن توسط PuppetLabs فروخته می شود که  البته تا ۱۰ عدد Node را میتوانید به صورت رایگان مدیریت کنید و در واقع شامل ۴۰ محصول OpenSource دیگر میشود که شامل پیشتیبانی شرکت PuppetLabs هم می باشد. در اینجا میتوانید مقایسه ای بین امکانات نسخه OpenSource و Enterprise این محصول داشته باشید.
  • Puppet همه چیز را به صورت Object میبیند، مثلا سرور شما یک Object هست که Value و Property دارد.
  • اسکریپت های Puppet به صورت Declarative هستند  و شبیه کدهایی هستند که با Ruby نوشته میشود.تنظیمات Puppet را Manifest می گویند.
  • شما میتوانید این کد ها را با مدیران سیستم دیگر هم به اشتراک بگذارید و یا از کدهای آماده دیگران استفاده کنید. در حال حاضر حدود ۲۰۰۰ تنظیم قابل دانلود از مسیر Puppet Forge قابل دریافت است.
  • مدل کارکرد Puppet معمولا به صورت Client/Server است. Client به صورت دوره ای با استفاده از Puppet Agent که بر روی Client نصب شده است به Server که  Pupper Master Server نامیده میشود درخواست یا Fact میفرستد که در واقع آخرین وضعیت خودش است، سپس Pupper Master Server یک Catalog را تولید میکند و آن را به Puppet Agent میفرستد که به Client میگوید به چه صورتی باید تنظیم شود. در نهایت Client یک Report تولید میکند که مشخص میکند که تنظیمات با موفقیت اعمال شده است.  عکس زیر مراحل کاری Puppet را نشان می دهد.
  • puppet-dataflow

چند وقت پیش خبری منتشر شد مبنی بر اینکه Puppet و Microsoft با هم همکاری بیشتری دارند و محصولات این دو شرکت یکپارچه تر شدند. در حال حاضر بیشتر تمرکز بر روی Windows Azure هست و همینطور Plugin برای Visualstudio نوشته شده که امکان ایجاد ماژول های Puppet رو با استفاده از این IDE قدرتمند برای شما فراهم میکند.

ضبط مکالمات در Asterisk و تنظیم صدای طرفین

Asterisk یک بسته نرم افزاری OpenSource است که شما میتونید با کمترین هزینه یک IPPBX راه اندازی کنید.

asterisk

یکی از امکانات این نرم افزار ذخیره مکالمات تماس است. برای این منظور در Dialplan در Context که تماس تماس های ورودی و یا خروجی به آن وارد می شود میتوانیم از MixMonitor استفاده کنیم. این Application صدای تماس گیرنده (Calling Party) و پاسخ دهنده(Called Party) را باهم Mix میکند و در قالب یک فایل ذخیره میکند.

نمونه:

[Voice-Menu]

exten => 7000,1,Answer

exten => 7000,n,MixMonitor(/var/spool/asterisk/monitor/Call-${UNIQUEID}.wav,v(2)V(4))

exten =>7000,n,Playback(welcome)

exten => 7000,n,WaitExten(20)

exten => 7000,n,StopMixMonitor()

exten => 7000,n,Hangup

در Dialplan نوشته شده در بالا ابتدا یک تماس پاسخ داده می شود و سپس شروع به ضبط مکالمات میکنیم. همانطور که مشاهده می کنید ما هر فایل مکالمه باید در یک مسیر مشخص و با یک اسم یکتا ذخیره شود. برای این منظور ما از Channel Variable  به نام UNIQUEID در Asterisk استفاده کرده ایم. مسیر پیش فرض ضبط مکالمات در استریسک /var/spool/asterisk/monitor است و اگر نیازی به تغییر این مسیر نداریم میتوانیم آن را تعریف نکنیم.

سپس یک پیغام برای تماس گیرنده پخش می شود و ۲۰ ثانیه منتظر ورودی از کاربر می ماند و سپس ضبط مکالمات پایان می یابد و تماس قطع می شود

گاهی ممکن است نیاز باشد تا صدای یکی از طرفین بلند تر ضبط شود.به منظور تنظیم صدای هر کدام از طرفین میتوان از Option های MixMonitor استفاده کرد و به دلخواه آن را کم یا زیاد کرد.

v(<x>) – از -۴ تا ۴ قابل تنظیم است و صدای شنیده شده را تنظیم میکند.

V(<x>) – از -۴ تا ۴ قابل تنظیم است و صدای صحبت شده را تنظیم می کند.

W(<x>) – از -۴ تا ۴ قابل تنظیم است و صدای هر دو طرف را تنظیم میکند.