Sunday, 2 February 2020

Vagrant - vẫn là công cụ quản lý máy ảo tuyệt vời ở năm 2020

- What???
- Yeah!!!

Vagrant không phải mới, không phải lạ, ra đời cỡ 10 năm trước hay hơn.

Vagrant là gì


/ˈveɪɡr(ə)nt/ A person without a settled home or regular work who wanders from place to place and lives by begging.


Vagrant là công cụ để quản lý (tạo/bật/tắt) máy ảo, chạy ngon lành trên các hệ điều hành phổ biến.
Vagrant là công cụ không thể thiếu của developer thời trước khi có Docker.

Bạn có thể tạo một máy ảo nhanh nhất trong bao nhiêu phút?

- Tải file ISO , vd Ubuntu
- Cài Virtualbox, hay KVM hay VMWare
- Cài máy ảo, format ổ đĩa, next next next ..., tùy vào từng hệ điều hành sẽ phải thao tác khác nhau.

Hoặc đơn giản với vagrant:

- Cài KVM hay Virtualbox hay VMWare
- Chạy lệnh: vagrant init
- Sửa file Vagrantfile vừa được tạo, thay box "base" bằng box mong muốn, ví dụ  "generic/ubuntu1804" (tìm các "box" trên https://vagrantcloud.com/search)
- Chạy lệnh: vagrant up
- Vagrant sẽ tải "box" về máy trong lần đầu sử dụng box này (các lần sau vẫn dùng box generic/ubuntu1804 sẽ không cần tải lại ở các lần sau), sau đó máy sẽ bật lên trong vòng ~< 1 phút, không cần cài đặt
- SSH bằng lệnh: vagrant ssh

Các câu lệnh vagrant cần thiết


- Tạo file mẫu Vagrantfile: vagrant init
- Bật máy ảo: vagrant up
- SSH vào: vagrant ssh
- Hầu hết các box đều cho phép sudo với user mặc định vagrant, gõ sudo -sH để chuyển thành root
- Tắt máy ảo: vagrant halt
- Restart sau khi thay đổi Vagrantfile: vagrant reload.

Các ưu điểm của Vagrant:

- Chạy trên mọi hệ điều hành phổ biến, nghĩa là ngày xưa bạn dev trên Ubuntu mà giờ công ty cấp cho Macbook thì cũng không có gì thay đổi cả.
- Cấu hình đơn giản: chỉ cần sửa file Vagrantfile
- Nhiều box để lựa chọn, từ debian, ubuntu, centos cho đến cả openbsd
- Chạy máy ảo trong mạng LAN, có địa chỉ IP riêng, so với docker chỉ bind đến 1 port trên cùng địa chỉ máy. Ví dụ: khi config chỉ cho phép set IP mà không cho set port, chạy service qua Docker rồi export port 5353 không thể config được (giả sử port 53 đã bị dùng).
- Giải pháp khi một chương trình nào đó chỉ chạy trên Linux mà bạn lại chỉ được cấp Macbook


$ whatis vagrant
vagrant (1)          - Tool for building and distributing virtualized development environments.

Cài đặt vagrant 

Trên Ubuntu 1804:

 sudo apt-get update && sudo apt-get install -y vagrant

Vagrant viết bằng Ruby, bởi Hashicorp https://github.com/hashicorp/vagrant

$ dpkg -s vagrant
...
Version: 2.0.2+dfsg-2ubuntu8
Depends: bsdtar, curl, openssh-client, ruby, ruby-childprocess (>= 0.3.7), ruby-erubis (>= 2.7.0), ruby-i18n (>= 0.6.0), ruby-listen, ruby-log4r (>= 1.1.9), ruby-net-scp (>= 1.1.0), ruby-net-sftp, ruby-net-ssh (>= 1:2.6.6), ruby-rest-client

Ví dụ tạo một máy ảo Ubuntu 18.04:


$ mkdir u1804
$ cd u1804/
$ vagrant init
$ sed -i 's:base:generic/ubuntu1804:' Vagrantfile
$ vagrant up
$ vagrant status
Current machine states:

default                   running (libvirt)

The Libvirt domain is running. To stop this machine, you can run
`vagrant halt`. To destroy the machine, you can run `vagrant destroy`.

$ vagrant ssh -c 'lsb_release -d'
Description:    Debian GNU/Linux 10 (buster)
Connection to 192.168.121.114 closed.
$ vagrant halt
==> default: Halting domain...

Hết.

HVN at https://pymi.vn and https://familug.org

1 comment:

  1. Cấu hình phần cứng của máy ảo ở chỗ nào nhỉ?

    ReplyDelete