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.
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.
Bình luận
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.