در قسمت اول یه سری کارای ابتدایی از وایگرانت رو پوشش دادیدم.
در این قسمت اما یک مقدار فراتر میریم و کار های بانمک جالب میکنیم. نقشه از این قراره که روی یه دونه اوبونتو ۱۶ یک آپاچی سرور نصب کنیم و یک فایل html که از قبل تهیه کردیم رو به روت دایرکتوری آپاچی اضافه کنیم و متعاقبا پورت ۸۰ ماشین میهمان به پورت ۸۰۸۰ ماشین میزبان مپ کنیم و در نهایت آپاچی سرور رو ری استارت کنیم و ببینیم که آیا پراویژنینگمون نتیجه داده یا نه، خوب.
ولی قبلش مایلم که روش استفاده وایگرانت در کنا کیویام/کمو (Qemu/KVM) هم بگیم. کیویام/کمو یک ابزار بسیار قدرتمند که توسط ردهت پشتیبانی و توسعه شده تخیلی پروژه های بزرگ با کمک این ابزار میسر شد. فرق بسیار بسیار اساسی با ویرچوالباکس این هست که میتونه درون خودش یک ماشین مجازی دیگه برامون تدارک ببینم. جالبه نه یاد فیلم اینسپشن میوفتم.
برای نصب خود کیویام/کمو کار سختی نداریم. باید پکیجهای لازم را نصب کنیم و از همه مهمتر یوزر مونرو به گروه مدیران کیویام/کمو اضافه کنیم. خیلی از پروژه ها از کتابخانههای استفاده می کنند که اسم های عجیبی دارند به خاطر همین ممکنه برای ما هم پیچیده و سخت به نظر برسند. ولی کور خوندن ما خیییلی بهتر است اون چیزی هستیم که اونا فکر میکنن. پس میریم که انجامش بدیم.
$ sudo apt-get update -y $ sudo apt-get install libvirt-bin libvirt-dev qemu-utils qemu $ sudo /etc/init.d/libvirt-bin restart
این کل کاری بود که برای نصب کیویام/کمو باید انجام میدادیم. برای اینکه تست کنیم که آیا نصب درست انجام شده معمولاً از سوئیچ version– استفاده می کنند:
$ libvirtd --version libvirtd (libvirt) 4.9.0
ولی برای استفاده از کارمون تمام نشده. باید یک گروه ایجاد کنیم و یوزرمون رو به این گروه اضافه کنیم. در این صورت این امکان میسر میشه که بدون دسترسی روت از کیویام/کمو استفاده کنیم:
$ sudo addgroup libvirtd $ sudo usermod -a -G libvirtd $USER
در بعضی از توزیع ها میبایست به صورت دستی فایلهای کانفیگ کیویام/کمو را عوض کنیم تا این امر میسر شود.
آدرس فایل کانفیگ لیبویرت در اکثر توزیعهای استاندارد در در مسیر زیر است:
$ sudo vi /etc/libvirt/libvirtd.conf
برای اینکه تست کنیم آیا همه این مراحل را درست پشت سر گذاشته ایم دستور زیر را اجرا میکنیم.
$ kvm-ok INFO: /dev/kvm exists KVM acceleration can be used
خوب این از این. حالا وایگرانت در قسمت اول توضیح دادیم برای نصب وایگرانت چه مراحلی باید انجام دهیم. منتهی این هنوز برای استفاده کیویام/کمو به عنوان پروایدر کافی نیست. برای این وایگرانت یک پلاگین منیجر دارد که توسط آن باید بخواهیم که از لیب ویرت استفاده کنیم:
$ vagrant plugin install vagrant-libvirt # که اجازه بدهد از آن استفاده کنیم Installing the 'vagrant-libvirt' plugin. This can take a few minutes... Installed the plugin 'vagrant-libvirt (0.0.43)'! $ vagrant plugin install vagrant-mutate Installing the 'vagrant-mutate' plugin. This can take a few minutes... Installed the plugin 'vagrant-mutate (1.2.0)'!
اکنون زمان بهره برداری است. از قسمت قبل چند دستور دیگه بود که هنوز با هم دیگه بررسی نکردیم. برای شروع از یک باکس تهیه شده مخصوص libvirt استفاده میکنیم تا هم تست کنیم که آیا مراحل نصب و تنظیم مودم درست انجام شده و هم یه سری کارای دیگه انجام میدم.
$ vagrant box add https://download.fedoraproject.org/pub/alt/atomic/stable/Fedora-29-updates-20181210.0/AtomicHost/x86_64/images/Fedora-AtomicHost-Vagrant-29-20181210.0.x86_64.vagrant-libvirt.box
ده بالا زیر دستور باکس و بعدش زیر دستور اد استفاده کردیم. همزمان یک کاره جالب دیگه هم کردیم و اونم این بود که از ریپازیتوری اصلی وایگرانت استفاده نکردیم و به جاش مستقیم از سایت فدورا آخرین نسخه از باکس اتمیک رو برای libvirt دانلود کردیم. با این کار این باکس توی کش ما که قبلاً گفتیم آدرسش دقیقا کجاست ذخیره شد. این جا لازم بگم که اتمیک یک توزیع مینیمایز شده است از توزیع محبوب فدورا برای کارهای خفن کلود. مثلا اگر بخواهید به عنوان هاست کوبرنیتز و یا داکر و یا هر چیز اینجوریه دیگری.
اما زیر دستور باکس کارهای دیگه ای هم میتونه بکنه مثلا اینکه به ما بگه چه باکسهای توی کش ذخیره شدند. طبیعتا امکان پاک کردن هم وجود دارد پس الان یه بار با کسی رو که اضاه کردیم لیست می کنیم بعدشم پاکش می کنی. چرا ؟ چون که میتونیم. به جاش یه مثال کاربردی تر با اوبونتو میزنیم.
$ vagrant box list Atomic (libvirt, 26760)
$ vagrant box rm Atomic
یادتونه که قبلاً گفتیم که برای پیدا کردن کارهایی که با هم زیر دستور میتونیم بکنیم رو میشه با اجرا کردن اش بدون هیچ چیزی بفهمیم. به همین سادگی
$ vagrant box $ vagrant box list $ vagrant box add $ vagrant box rm
حالا که قسمت اَد هم توضیح دادیم میریم که سناریو رو بررسی کنیم.
[youtube https://www.youtube.com/watch?v=FaJW3-qpItU&w=560&h=315]
همانطوری که دیدیم به کمک قابلیت Provisioning در وایگرانت کلی کار باحال انجام بدیم. خارجی ها به این کار میگن پروتوتایپ در واقع ما یه نمونه اولیه درست کردیم که میتونه تایید کنه چه قابلیت هایی با استفاده از وایبر وایگرانت. قبلا هم در قسمت اول اشاره کردم که این امکان هم وجود دارد که از ابزارهایی مثل انسیبل، پاپت یا چف استفاده بکنیم و حتی محیط های پروداکشن تهیه کنیم. ولی با توجه به اینکه برای این منظور محصولات خیلی خیلی بهتره قبلاً تولید شدند و به صورت متن باز و حتی غیر متن باز منتشر شدن خیلی منطقی و حرفه ای نیست که از این ابزار استفاده کنیم. به عنوان مثال میتونید به اپن استک سری بزنید. درخصوص اپن استک مفصل در سامیتی که شرکت کردم وهکتون نوشتم، فرصت داشتید مطالعه کنید و کامنت بزارید و بین دوستانتان به اشتراک بگذارید.
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "generic/ubuntu1604" config.vm.network "forwarded_port", guest: 80, host: 8080 config.vm.synced_folder "./data", "/vagrant" config.vm.provision :shell, path: "bootstrap.sh" end
#!/usr/bin/env bash # update & install apt-get update apt-get install -y apache2 # point /var/www at /vagrant mount if [ -f /var/www/html/index.html ]; then rm -rf /var/www/html/index.html ln -s /vagrant/index.html /var/www/html/ fi # firewall psudo ufw allow 80 # restart apache systemctl restart apache2
در انتهی وایگرانت فایل رو باهاتون به اشتراک میگذارم و همچنین اسکریپت که اگه تمایش داشتید استفاده کنید. بجز این تمام منابعی که برای این پست استفاده کردم در اختیارتون هست.
راهنمای نصب Qemu/Kvm در ابونتو
راهنمای سایت وایگرانت از داکر و وایگرانت
پاپت و وایگرانت