Vagrant - Không ngại tương tác máy ảo

06 tháng 10, 2024 - 915 lượt xem

Với những giải pháp, công cụ mới cần cài đặt và trải nghiệm thử, cứ bê lên cloud, tạo máy ảo, phút mốt là xong. Đó là việc dễ làm. Nhưng bài viết này sẽ không hướng dẫn bạn tạo sử dụng cloud. Thay vào đó, chúng ta sẽ cùng nhau tiếp cận cách tạo môi trường máy ảo cho việc tiến hành các cuộc thử nghiệm trên môi trường on-premises hoặc sử dụng những phần tài nguyên dư dả của máy tính cá nhân. Đồng thời, giải pháp Vagrant đề cập trong bài viết sẽ đảm bảo tính chất dễ sử dụng, tự động hóa, nhất quán tương tự như trên Cloud. Bài viết sẽ hướng dẫn bạn cài đặt và sử dụng Vagrant trên cả 3 hệ điều hành: Linux, Windows và MacOS (arm, amd).

Sơ lược về Vagrant

Vagrant là một công cụ miễn phí và mã nguồn mở để xây dựng và quản lý môi trường máy ảo, có thể chạy trên môi trường Linux, Windows và MacOS.

Vagrant giúp bạn đơn giản hoá việc triển khai một hay hàng loạt máy ảo trên các ứng dụng ảo hoá VirtualBox, VMWare, Hyper-V,… Tương tự như nguyên lý của Infrastructure as Code, dựa trên việc định nghĩa các thông số, cấu hình cho máy ảo trong tệp tin Vagrantfile, công cụ Vagrant sẽ tự động cài đặt máy ảo và các phần mềm trong đó.

Cần lưu ý rằng, Vagrant không phải là công cụ ảo hoá như VirtualBox, VMWare, Hyper-V,… Vagrant là công cụ dòng lệnh, cho phép bạn tương tác với đa dạng ứng dụng ảo hoá. Vagrant thay thế các thao tác thủ công của bạn trong việc tạo một máy ảo:

  • Tải về tệp tin iso cài đặt của hệ điều hành
  • Thiết lập các thông số tài nguyên cpu, ram, network cho máy ảo(cpu, ram, network, storage) cho máy ảo
  • Cài đặt hệ điều hành
  • Thiết lập kết nối SSH
  • Cài đặt các ứng dụng trên máy ảo

Vagrant thực sự là một công cụ hữu ích khi tự động hoá cài đặt các máy ảo, có khả năng đồng loạt tạo ra các máy ảo với các yêu cầu phức tạp, đồng thời duy trì sự nhất quán khi cần chia sẻ hoặc lặp lại việc cài đặt máy ảo.

Cài đặt Vagrant

Trong bài viết này, chúng ta sẽ đề cập tới cài đặt và sử dụng Vagrant cho 3 dòng hệ điều hành phổ biến:

  • Windows
  • MacOS chip Intel và chip Apple Silicon
  • Linux, đại diện bởi Ubuntu

Để thực sự có thể sử dụng Vagrant, trước khi cài đặt Vagrant, chúng ta cũng sẽ thực hiện cài đặt ứng dụng ảo hoá phổ biến VirtualBox. Tuy nhiên, với máy MacOS dòng chip Apple Silicon, các phiên bản VirtualBox ở thời điểm bài viết chưa được Vagrant hỗ trợ. Bởi vậy, ứng dụng QEMU sẽ là lựa chọn thay thế cho VirtualBox trên các dòng máy này.

Chúng ta cũng cần lưu ý về phiên bản của VirtualBox phù hợp theo thông tin từ chính nhà sản xuất công cụ Vagrant: VirtualBox Provider

Ubuntu

Hãy bắt đầu trước với hệ điều hành Ubuntu, chúng ta sẽ cài đặt công cụ ảo hóa VirtualBox từ Oracle’s Repositories. Mở terminal và thực hiện các câu lệnh sau:

# Cài đặt thành phần hỗ trợ
sudo apt install software-properties-common -y 

# Cài đặt GPG key
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -

# Thêm VirtualBox Repository vào Ubuntu
echo "deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list

# Cập nhật Repository trên Ubuntu
sudo apt update

# Cài đặt VirtualBox version 7.0.x
sudo apt install virtualbox-7.0 -y 

# Kiểm tra VBoxManage cli
VBoxManage --version

CLI VBoxManage là cần thiết để Vagrant có thể điều khiển VirtualBox tự động tạo ra các máy ảo.

Bước tiếp theo chúng ta cài đặt Vagrant thông qua các câu lệnh đến từ tài liệu của HashiCorp:

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 -y
vagrant --version

Như vậy, bạn đã cài đặt thành công Vagrant và VirtualBox trên Ubuntu.

Windows

Nếu bạn sử dụng Windows, và ưa thích sử dụng lệnh thay vì thao tác tay, phần dưới đây là dành cho bạn. Mở Powershell với quyền Administrator và nhập vào lệnh cài đặt VirtualBox:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

Kết quả nhận được tương tự hình dưới đây là chúng ta đã cài đặt thành công VirtualBox trên Windows.

install_virtual_box
install_virtual_box

Tiếp tục với Vagrant, theo hướng dẫn từ tài liệu chính hãng của HashiCorp, bạn sẽ tải về tệp tin cài đặt tại https://releases.hashicorp.com/vagrant. Tìm kiếm phiên bản mong muốn và dành cho hệ điều hành Windows, ví dụ “vagrant_2.4.1_windows_amd64.msi”.

Mở tệp tin vừa tải về và hoàn thành các bước cài đặt Vagrant bằng giao diện.

Sau đó, bạn sẽ được yêu cầu restart máy tính để có thể sử dụng Vagrant. Khi restart máy xong, mở Command Line hoặc PowerShell và kiểm tra câu lệnh Vagrant:

vagrant --version

Như vậy, bạn đã hoàn thành cài đặt Vagrant cùng với công cụ ảo hóa VirtualBox trên Windows.

MacOS

Hiện nay rất nhiều máy tính Mac có sử dụng chip Apple Silicon, nên trong phần này, chúng ta sẽ tìm hiểu cách cài đặt các công cụ trên cả 2 dòng chip Intel và Apple Silicon. VirtualBox đã có sẵn các phiên bản hoạt động ổn định trên dòng Mac chip Intel. Đối với dòng chip Apple Silicon, VirtualBox có những phiên bản thử nghiệm beta, nhưng Vagrant lại không hỗ trợ tương thích có các phiên bản này. Do đó, trên dòng chip Apple Silicon, chúng ta có giải pháp ảo hóa thay thế cho VirtualBox là QEMU. Tuy nhiên cách sử dụng Vagrant cũng sẽ có khác biệt giữa các provider ảo hóa khác nhau.

Cài đặt VirtualBox trên Mac chip Intel

Với dòng Mac sử dụng chip Intel, mở terminal và thực hiện cài đặt VirtualBox thông qua các lệnh sau:

#  Cài đặt homebrew, bỏ qua nếu máy của bạn đã có trình cài đặt homebrew
 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Cài đặt VirtualBox version 6
brew install --cask virtualbox@6

# Xác nhận cài đặt
virtualbox --help

Cài đặt QEMU trên Mac chip Apple Silicon

#  Cài đặt homebrew, bỏ qua nếu máy của bạn đã có trình cài đặt homebrew
 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Cài đặt công cụ ảo hóa QEMU
brew install qemu

Cài đặt Vagrant

Các câu lệnh sau có thể cài đặt Vagrant trên máy Mac mà không phân biệt dòng chip:

brew tap hashicorp/tap

brew install hashicorp/tap/hashicorp-vagrant

vagrant --version

Để sử dụng Vagrant với QEMU, chúng ta cần cài đặt thêm plugin vagrant-qemu:

vagrant plugin install vagrant-qemu

Sử dụng Vagrant với VirtualBox Provider

Trong phần này, chúng ta sẽ chứng minh hoạt động của Vagrant thông qua demo đơn giản.

Bạn có một vài cách để có thể yêu cầu Vagrant tự động hóa việc tạo máy ảo. Tuy nhiên chúng ta sẽ tiếp cận với cách thức phổ biến nhất đó là tạo Vagrantfile. Tệp tin này sẽ lưu các cấu hình của máy ảo giúp chúng ta dễ dàng tái sử dụng và kiểm tra.

Tạo máy ảo thông qua Vagrantfile

Hãy bắt đầu bằng việc tạo riêng một thư mục cho demo với tên getting-started . Trong thư mục, chúng ta tạo tệp tin có tên Vagrantfile chứa nội dung dưới đây:

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/bionic64"

  config.vm.network "private_network", ip: "192.168.56.10"
  
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "1024"
    vb.name = "vm-00"
  end
end

Bạn sẽ cần terminal hoặc command line đứng tại thư mục getting-started và thực hiện câu lệnh yêu cầu Vagrant tạo và khởi động máy ảo theo những gì mà chúng ta đã định nghĩa trong tệp tin Vagrantfile:

vagrant up

Kết thúc câu lệnh, chúng ta sẽ nhận được báo cáo kết quả tạo máy ảo thành công.

    vm-00: virtual machine match the version of VirtualBox you have installed on
    vm-00: your host and reload your VM.
    vm-00:
    vm-00: Guest Additions Version: 6.0.10
    vm-00: VirtualBox Version: 7.0
==> vm-00: Configuring and enabling network interfaces...
==> vm-00: Mounting shared folders...
    vm-00: /vagrant => D:/vagrant/getting-started

Máy ảo đã được tạo và khởi động, Vagrant cũng cung cấp luôn cho chúng ta cách để truy cập SSH vào máy ảo:

vagrant ssh 

Xuất hiện đoạn text tương tự dưới đây, tức là bạn đã thành công ssh vào máy ảo được tạo bởi Vagrant:

Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-58-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Wed Sep 11 18:09:42 UTC 2024

  System load:  0.09              Processes:           92
  Usage of /:   2.5% of 61.80GB   Users logged in:     0
  Memory usage: 11%               IP address for eth0: 10.0.2.15
  Swap usage:   0%                IP address for eth1: 192.168.56.10


0 packages can be updated.
0 updates are security updates.


vagrant@vagrant:~$

Nếu tò mò, bạn có thể mở ứng dụng VirtualBox trên giao diện và xem máy ảo của bạn đã được tạo và cấu hình như thế nào:

Một số thao tác quản lý

Liệt kê danh sách máy ảo và trạng thái của chúng:

vagrant global-status 

Tắt nguồn(shutdown) máy ảo được vagrant quản lý, vagrant sẽ dựa vào trường thông tin id hoặc name để xác định máy ảo:

vagrant halt vm-00

Nếu muốn xóa máy ảo, chạy lệnh sau:

vagrant destroy vm-00

Sử dụng Vagrant với QEMU Provider

Tạo thư mục getting-started, tạo tệp tin có tên Vagrantfile với nội dung sau:

Vagrant.configure("2") do |config|
  config.vm.box = "generic/ubuntu2204"
  config.vm.provider "qemu" do |qe|
    qe.arch = "x86_64"
    qe.machine = "q35"
    qe.cpu = "qemu64"
    qe.net_device = "virtio-net-pci"
    qe.ssh_port = "10022"
  end
end

Có một điểm đặc biệt trong tệp tin Vagrantfile, chúng ta đã sử dụng tham số arch với giá trị x86_64 để tạo máy ảo với kiến trúc tương tự như chip Intel trên Mac.

Tạo máy ảo theo cấu hình Vagrantfile:

vagrant up

Dưới đây là đoạn text sau khi tạo máy ảo thành công:

Bringing machine 'default' up with 'qemu' provider...
==> default: Checking if box 'generic/ubuntu2204' version '4.3.2' is up to date...
==> default: Importing a QEMU instance
    default: Creating and registering the VM...
    default: Successfully imported VM
==> default: Warning! The QEMU provider doesn't support any of the Vagrant
==> default: high-level network configurations (`config.vm.network`). They
==> default: will be silently ignored.
==> default: Starting the instance...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:10022
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection reset. Retrying...
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default: 
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!

Truy cập máy ảo thông qua câu lệnh ssh của vagrant:

vagrant ssh

Tổng kết

Vagrant là một công cụ hữu hiệu trong việc tạo lập môi trường thử nghiệm. Bạn có thể dễ dàng tạo, hủy và tái tạo máy ảo thông qua việc lưu trữ cấu hình của chúng trong tệp tin Vagrantfile. Vagrant còn mạnh mẽ hơn thế, cho phép bạn tạo hàng loạt máy ảo với những cấu hình phức tạp, hãy khám phá đầy đủ các tính năng và tình huống sử dụng của Vagrant trong tài liệu hãng.

Tham khảo

Bình luận

avatar
Trịnh Minh Cường 2024-10-09 04:01:15.713476 +0000 UTC

Tôi đang dùng Vagrant + VMWare Fusion để dựng môi trường thử nghiệm hệ thống cluster gồm nhiều máy chủ + Docker Swarm.

Thấy cũng ổn.

 

Avatar
* Vui lòng trước khi bình luận.
Ảnh đại diện
  0 Thích
0