Giới thiệu Vagrant

Giới thiệu

Chúng ta thường dùng những môi trường giả lập như Xampp, Wamp,… để phát triển một ứng dụng web trên môi trường window. Tuy nhiên, khi triển khai ứng dụng web lên server thực sự thì môi trường trên server (linux) lại khác biệt hoàn toàn so với môi trường giả lập mà chúng ta sử dụng. Vì thế sẽ có những lỗi phát sinh không mong muốn. Những lỗi này có thể mang để những đánh giá không đúng từ phía khách hàng về ứng dụng web của bạn.

Vagrant là gì?

Vagrant là một nền tảng giúp bạn dễ dàng tạo ra một môi trường phát triển ứng dụng hiện đại.

Với Vagrant bạn có thể cấu hình một máy ảo trong một vài bước đơn giản để làm một server linux(hay môi trường nào khác) trên máy tính của bạn.

Nó sẽ giúp ứng dụng của bạn tránh những lỗi không cần thiết khi deploy và dễ dàng hơn khi làm việc cùng với team.

Lợi ích của Vagrant

  1. Tạo môi trường phát triển ứng dụng web giống với môi trường deploy.

  2. Vagrant giúp bạn tạo ra môi trường làm việc cho team (Vagrantfile), do đó giúp bạn làm việc với team một cách dễ dàng và hiệu quả.

  3. Tiết kiệm thời gian cài đặt phần mềm, giảm thiểu các lỗi xảy ra ở một môi trường nhất định.

  4. Đồng bộ hóa với windown. Vagrant cho phép bạn đồng bộ hóa thư mục trên máy ảo linux và window, do đó giúp bạn dễ dàng chỉnh sửa code mà không cần phải lên máy ảo.

  5. Đa nền tảng, với hệ thống boxes đa dạng và phong phú, bạn dễ dàng thử với nhiều OS kháng nhau cũng như distribution khác nhau. Ngoài ra, với việc sử dụng các provision tool, bạn dễ dàng cài đặt phần mềm trên nhiều dòng OS khác nhau.

Cài đặt Vagrant

Để sử dụng được Vagrant bạn cần cài một trong các ứng dụng chạy máy ảo như Virtualbox, VMwave, AWS. Cá nhân tôi chọn Virtualbox vì nó là miễn phí và nhẹ hơn so với các mãy ảo khác để cài đặt nó bạn chỉ cần truy cập thông qua đường dẫn Virtualbox Downloads sau đó chọn phiên bản phù hợp với hệ điều hành của bạn.

Sau khi cài đặt xong máy ảo thì bạn cần download vagrant tại đây . Nên tải về phiên bản mới nhất vì nó có hỗ docker. Sau đó cài vào máy tính của bạn. Nếu mọi thứ diễn ra đều thành công thì bạn chỉ cần chạy lên bên dưới để xác nhận nó có cài đặt thành công hay không.

[code lang=text] vagrant –version

[/code]

Thì bạn nên thấy một kết quả tương tự như bên dưới:

[code lang=text] vagrant –version

Vagrant 1.9.3

[/code]

Chúc mừng bạn đã cài đặt thành công Vagrant công việc còn lại là chỉ việc dùng nó thôi.

Sử dung Vagrant

Giả sử bạn muốn tạo một máy ảo linux (ở đây tôi chọn ubuntu precise64). Bạn chỉ cần chạy những câu lệnh sau:

[code lang=text] vagrant init hashicorp/precise64

[/code]

Chỉ có thế thôi quá đơn giản phải không bạn

Phân tích

  • Câu lệnh vagrant init là để tạo ra file Vagrantfile.

  • hashicorp/precise64 là nó sẽ tải về cái box đó từ trang https://atlas.hashicorp.com, bạn có thể tham khảo trên trang đó nó có khá là nhiêu box cho bạn chọn

Kết quả: bạn sẽ thấy có một file Vagrantfile được tạo ra. Công việc còn lại bạn chỉ cần khởi động máy ảo thông qua lệnh bên dưới:

[code lang=text] vagrant up

[/code]

Bạn sẽ có hình tương tự như hình bên dưới

Sau khi khởi động xong máy ảo, bạn sẽ thấy bên Virtualbox sẽ có một máy ảo được tạo ra:

Như vậy là bạn đã có được một máy ảo linux. Quá nhanh và rất đơn giản phải không? (-_-)

Bây giờ bạn có thể dùng công cụ ssh để login vào máy ảo hoặc dùng câu lệnh:

[code lang=text] vagrant ssh

[/code]

Vagrantfile

Vagrantfile là file định nghĩa những gì cần thiết để khởi động máy ảo. Bạn có thể tùy chỉnh những thay đổi trong Vagrantfile để có được máy ảo như mong muốn.

Đây là cấu hình cơ bản nhất của Vagrantfile. Trong đó, bạn có thể thay đổi OS (linux, fedora, CentOS, window) nếu muốn chỉ cần thay đổi cấu hình tại config.vm.box_url.

Cấu hình network cho máy ảo:

#setting ipaddress for VM
config.vm.network :private_network, ip: "192.168.33.10"

#forward port
config.vm.network :forwarded_port, quest: 80, host: 8080

Với cấu hình này, bạn có thể truy cập trên browser từ máy PC tại: http://192.168.33.10:8080

Cấu hình đồng bộ thư mục giữa máy ảo và window:

#sync folder
config.vm.synced_folder "./app", "/var/www/html", type: "nfs"
config.vm.synced_folder "./log", "/var/log/apache2", type: "nfs"

Bạn có thể tiến hành đồng bộ nhiều thư mục giữa máy ảo và window.

config.vm.synced_folder "./app", "/var/www/html", type: "nfs" là đồng bộ ứng dụng trên window của bạn với máy ảo.

config.vm.synced_folder "./log", "/var/log/apache2", type: "nfs" là đồng bộ thư mục log của apache2 trên máy ảo với window, giúp bạn khỏi phải truy cập vào máy ảo mà vẫn có thể xem được log.

Cấu hình hostname và đăng ký hostname vào file host của window:

Ở trên có nghĩa là bạn tạo một hostname cho máy ảo là example.com và bạn đăng ký nó vào file host của window. Như vậy, bạn chỉ cần truy cập tại http://example.com trên browser của window.

Provisioner

Provisioners trong vagrant cho phép bạn tự động cài đặt ứng dụng và cấu hình ứng dụng trên máy ảo.

Bạn có thể chạy trực tiếp với các lệnh Bash script inline:

[code lang=text] config.vm.provision "shell", inline: <<-SCRIPT
#bash script
SCRIPT
[/code]

Hoặc bạn cũng có thể chạy thông qua chef_solo:

[code lang=text] config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = ["site-cookbooks"] chef.add_recipe "base"
end

[/code]

The Chef Solo provisioner allows you to provision the guest using Chef, specifically with Chef Solo.

Bạn có thể tham khảo thêm tại đây

Nếu như bạn gặp cái lỗi định mệnh này sau khi chạy vagrant:

[code lang=text] Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3`,dmode=777,fmode=777 var_www_saigonphp /var/www/saigonphp
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant`,dmode=777,fmode=777 var_www_saigonphp /var/www/saigonphp

The error output from the last command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device
[/code]

Thì bạn có thể fix nó như sau: một là bạn move toàn bộ code bạn vào thư mục html của apache hoặc nginx hai là bạn phải cài plugin này với lệnh sau:

[code lang=text] vagrant vbguest
vagrant plugin install vagrant-vbguest

[/code]

sau đó bạn chạy lệnh up và ssh lệnh như bên trên để kết nối máy ảo, sau khi login được máy ảo bạn chạy lệnh sau:

[code lang=text] sudo ln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions /usr/lib64/VBoxGuestAdditions
[/code]

Sau đó thoát ra và reload vagrant để hưởng thành quả, chú ý rằng có thể nhiều phiên bản VBoxGuestAdditions khác nhau

Kết luận

Sử dụng Vagrant giúp chúng ta tiết kiệm khá nhiều thời gian cho việc phát sinh lỗi không mong muốn trong quá trình deploy ứng dụng và làm việc team.

Hầu hết nếu bạn làm Freelancer thì làm team người ta sẽ cung cấp cho bạn một tập tin VagrantFile bạn chỉ việc chạy nó là có ngay môi trường phát triển ứng dụng Web.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *