برنامه نویسی

چگونه از Vagrant و Virtual Box برای توسعه محلی استفاده کردم

Summarize this content to 400 words in Persian Lang
وقتی شروع به کاوش در توسعه زیرساخت های محلی با ابزارهایی مانند Vagrant و VirtualBox کردم، متوجه شدم که چقدر می توانند در ایجاد محیط های کنترل شده، آماده برای آزمایش و اتوماسیون، انعطاف پذیر و سریع باشند. در این مقاله، نحوه راه‌اندازی یک ماشین مجازی لینوکس (VM) را با استفاده از Vagrant و VirtualBox برای شبیه‌سازی استقرار سرور، ایجاد خطوط لوله اتوماسیون با Ansible، و آزمایش با پیکربندی‌های شبکه و تأمین به اشتراک می‌گذارم.

چرا ولگرد؟

Vagrant ایجاد و مدیریت محیط های توسعه مجازی را آسان می کند. با استفاده از آن، پیکربندی یک ماشین مجازی با چند خط کد امکان پذیر است که تکرار محیط و مدیریت پیکربندی را ساده می کند. در مورد من، Vagrant را برای ایجاد یک VM لینوکس انتخاب کردم، با هدف تکرار ساختار سروری که برای استقرار و تست اتوماسیون با Ansible استفاده می‌کنم. در زیر، مرحله به مرحله نصب و پیکربندی را شرح می دهم.

نصب Vagrant و VirtualBox

برای شروع، باید VirtualBox و Vagrant را نصب کنید. من نصب مستقیم را از وب سایت های رسمی انتخاب کردم، جایی که نسخه های به روز شده برای سیستم عامل های مختلف وجود دارد.

ولگرد

$ wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg –dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
$ echo “deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main” | sudo tee /etc/apt/sources.list.d/hashicorp.list
$ sudo apt update && sudo apt install vagrant

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پلاگین Vagrant-VirtualBox

$ vagrant plugin install vagrant-vbguest

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

VirtualBox

$ sudo apt update
$ curl https://www.virtualbox.org/download/oracle_vbox_2016.asc | gpg –dearmor > oracle_vbox_2016.gpg
$ curl https://www.virtualbox.org/download/oracle_vbox.asc | gpg –dearmor > oracle_vbox.gpg
$ sudo install -o root -g root -m 644 oracle_vbox_2016.gpg /etc/apt/trusted.gpg.d/
$ sudo install -o root -g root -m 644 oracle_vbox.gpg /etc/apt/trusted.gpg.d/
echo “deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib” | sudo tee /etc/apt/sources.list.d/virtualbox.list
$ sudo apt update
$ sudo apt install -y linux-headers-$(uname -r) dkms
$ sudo apt install virtualbox-7.0 -y

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیکربندی VM با Vagrant

برای پیکربندی VM خود از فایل استفاده کردم Vagrantfile، که حاوی دستورالعمل های تامین و پیکربندی ماشین مجازی است. این فایل نوع جعبه (تصویر سیستم عامل)، شبکه و اسکریپت تامین کننده را که محیط را در صورت نیاز پیکربندی می کند، تعریف می کند.

در اینجا Vagrantfile من استفاده کردم:

Vagrant.configure(“2”) do |config|
config.vm.hostname = “webserver”
config.vm.box = “ubuntu/jammy64”
config.vm.network “public_network”, ip: “192.168.3.80”, bridge: “wlp1s0”
config.vm.network “forwarded_port”, guest: 80, host: 8080

config.vm.provision “shell”, path: “provision.sh”

config.vbguest.auto_update = false
config.vbguest.installer_options = { allow_kernel_upgrade: true }
config.vm.synced_folder “.”, “/vagrant”, type: “rsync”, rsync__exclude: “.git/”
config.vm.boot_timeout = 5000
end

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیح Vagrantfile:

config.vm.hostname: نام میزبان VM را تعریف می کند که در این مورد آن را “وب سرور” نامیده ام.

config.vm.box: تصویر سیستم عامل را مشخص می کند. من از ubuntu/jammy64، نسخه ای از اوبونتو استفاده کردم.

config.vm.network: من یک شبکه عمومی با IP 192.168.3.80 و یک پورت تغییر مسیر برای دسترسی به وب سرور پیکربندی کردم.

config.vm.provision: تدارکات را از طریق یک اسکریپت پیکربندی می کند provision.sh، که در زیر توضیح می دهم.

config.vm.synced_folder: یک پوشه محلی را با VM برای تبادل آسان فایل همگام می کند.

یک VM تهیه کنیددر provision.sh من ماشین مجازی را برای اضافه کردن یک کلید SSH به فایل پیکربندی کردم authorized_keys. این امر دسترسی از راه دور و اتوماسیون وظایف را تسهیل می کند، که بعداً با Ansible برای شبیه سازی استقرارها و آزمایش ها انجام می دهم.

اینم محتویات فایل provision.sh:

#!/bin/bash
cat << EOT >> /etc/hosts
# Insere chave ssh na VM
EOT
cat << EOT >> /home/vagrant/.ssh/authorized_keys
ss-rsa example
EOT

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اجرای VM

برای آپلود VM کافیست دستور زیر را اجرا کنید:

$ vagrant up

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این فرمان را می خواند Vagrantfile، ماشین مجازی را راه اندازی می کند و تنظیمات و تامین را اعمال می کند. هنگامی که VM اجرا می شود، می توانم از آن برای آزمایش استقرار برنامه، دسترسی SSH، اسکریپت های اتوماسیون و سایر تنظیمات زیرساخت استفاده کنم.

این راه‌اندازی با Vagrant و VirtualBox به من این امکان را داد که یک محیط توسعه محلی عملی و آسان برای مدیریت ایجاد کنم. با آن، می‌توانم سناریوهای تولید را شبیه‌سازی کنم، اتوماسیون‌ها را با Ansible آزمایش کنم، و پیکربندی‌های جدید را بدون تأثیر بر محیط کار واقعی‌ام کشف کنم. این تجربه نه تنها گردش کار من را ساده کرد، بلکه به من این اطمینان را داد که تنظیمات را در محیط های واقعی به صورت ایمن و قابل پیش بینی تکرار کنم.

وقتی شروع به کاوش در توسعه زیرساخت های محلی با ابزارهایی مانند Vagrant و VirtualBox کردم، متوجه شدم که چقدر می توانند در ایجاد محیط های کنترل شده، آماده برای آزمایش و اتوماسیون، انعطاف پذیر و سریع باشند. در این مقاله، نحوه راه‌اندازی یک ماشین مجازی لینوکس (VM) را با استفاده از Vagrant و VirtualBox برای شبیه‌سازی استقرار سرور، ایجاد خطوط لوله اتوماسیون با Ansible، و آزمایش با پیکربندی‌های شبکه و تأمین به اشتراک می‌گذارم.

چرا ولگرد؟

Vagrant ایجاد و مدیریت محیط های توسعه مجازی را آسان می کند. با استفاده از آن، پیکربندی یک ماشین مجازی با چند خط کد امکان پذیر است که تکرار محیط و مدیریت پیکربندی را ساده می کند. در مورد من، Vagrant را برای ایجاد یک VM لینوکس انتخاب کردم، با هدف تکرار ساختار سروری که برای استقرار و تست اتوماسیون با Ansible استفاده می‌کنم. در زیر، مرحله به مرحله نصب و پیکربندی را شرح می دهم.

نصب Vagrant و VirtualBox

برای شروع، باید VirtualBox و Vagrant را نصب کنید. من نصب مستقیم را از وب سایت های رسمی انتخاب کردم، جایی که نسخه های به روز شده برای سیستم عامل های مختلف وجود دارد.

ولگرد

$ wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
$ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
$ sudo apt update && sudo apt install vagrant
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پلاگین Vagrant-VirtualBox

$ vagrant plugin install vagrant-vbguest
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

VirtualBox

$ sudo apt update
$ curl https://www.virtualbox.org/download/oracle_vbox_2016.asc | gpg --dearmor > oracle_vbox_2016.gpg
$ curl https://www.virtualbox.org/download/oracle_vbox.asc | gpg --dearmor > oracle_vbox.gpg
$ sudo install -o root -g root -m 644 oracle_vbox_2016.gpg /etc/apt/trusted.gpg.d/
$ sudo install -o root -g root -m 644 oracle_vbox.gpg /etc/apt/trusted.gpg.d/
echo "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
$ sudo apt update
$ sudo apt install -y linux-headers-$(uname -r) dkms
$ sudo apt install virtualbox-7.0 -y
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیکربندی VM با Vagrant

برای پیکربندی VM خود از فایل استفاده کردم Vagrantfile، که حاوی دستورالعمل های تامین و پیکربندی ماشین مجازی است. این فایل نوع جعبه (تصویر سیستم عامل)، شبکه و اسکریپت تامین کننده را که محیط را در صورت نیاز پیکربندی می کند، تعریف می کند.

در اینجا Vagrantfile من استفاده کردم:

Vagrant.configure("2") do |config|
  config.vm.hostname = "webserver"
  config.vm.box = "ubuntu/jammy64"
  config.vm.network "public_network", ip: "192.168.3.80", bridge: "wlp1s0"
  config.vm.network "forwarded_port", guest: 80, host: 8080

  config.vm.provision "shell", path: "provision.sh"

  config.vbguest.auto_update = false
  config.vbguest.installer_options = { allow_kernel_upgrade: true }
  config.vm.synced_folder ".", "/vagrant", type: "rsync", rsync__exclude: ".git/"
  config.vm.boot_timeout = 5000
end
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیح Vagrantfile:

  • config.vm.hostname: نام میزبان VM را تعریف می کند که در این مورد آن را “وب سرور” نامیده ام.
  • config.vm.box: تصویر سیستم عامل را مشخص می کند. من از ubuntu/jammy64، نسخه ای از اوبونتو استفاده کردم.
  • config.vm.network: من یک شبکه عمومی با IP 192.168.3.80 و یک پورت تغییر مسیر برای دسترسی به وب سرور پیکربندی کردم.
  • config.vm.provision: تدارکات را از طریق یک اسکریپت پیکربندی می کند provision.sh، که در زیر توضیح می دهم.
  • config.vm.synced_folder: یک پوشه محلی را با VM برای تبادل آسان فایل همگام می کند.

یک VM تهیه کنید
در provision.sh من ماشین مجازی را برای اضافه کردن یک کلید SSH به فایل پیکربندی کردم authorized_keys. این امر دسترسی از راه دور و اتوماسیون وظایف را تسهیل می کند، که بعداً با Ansible برای شبیه سازی استقرارها و آزمایش ها انجام می دهم.

اینم محتویات فایل provision.sh:

#!/bin/bash
cat << EOT >> /etc/hosts
# Insere chave ssh na VM
EOT
cat << EOT >> /home/vagrant/.ssh/authorized_keys
ss-rsa example
EOT
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اجرای VM

برای آپلود VM کافیست دستور زیر را اجرا کنید:

$ vagrant up
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این فرمان را می خواند Vagrantfile، ماشین مجازی را راه اندازی می کند و تنظیمات و تامین را اعمال می کند. هنگامی که VM اجرا می شود، می توانم از آن برای آزمایش استقرار برنامه، دسترسی SSH، اسکریپت های اتوماسیون و سایر تنظیمات زیرساخت استفاده کنم.

این راه‌اندازی با Vagrant و VirtualBox به من این امکان را داد که یک محیط توسعه محلی عملی و آسان برای مدیریت ایجاد کنم. با آن، می‌توانم سناریوهای تولید را شبیه‌سازی کنم، اتوماسیون‌ها را با Ansible آزمایش کنم، و پیکربندی‌های جدید را بدون تأثیر بر محیط کار واقعی‌ام کشف کنم. این تجربه نه تنها گردش کار من را ساده کرد، بلکه به من این اطمینان را داد که تنظیمات را در محیط های واقعی به صورت ایمن و قابل پیش بینی تکرار کنم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا