Vargrant
Bài đăng này đã không được cập nhật trong 9 năm
Giới thiệu về Vagrant
Vagrant là một công cụ giúp chúng ta tạo ra các môi trường một cách dễ dàng bằng các cấu hình. Việc tạo ra các máy ảo, cài đặt web server thậm chí cấu hình mạng, chưa bao giờ trở nên dễ dàng như thế chỉ với một vài câu lệnh. Sau đó, chúng ta có thể chia sẻ các cấu hình này và bất kỳ ai cũng có thể có được một máy ảo y hệt như máy bạn đã cài đặt.
Cài đặt Vagrant
-
Bước 1: download Vagrant tại https://www.vagrantup.com/downloads.html. Tùy vào bạn đang chạy hệ điều hành nào mà chọn phiên bản phù hợp.
-
Bước 2: Sau khi download xong thì cài đặt nó. Chú ý là nó sẽ tự động cài VirtualBox luôn nếu máy mình chưa cài. Cần phải có Virtual Box nhé.
Tạo máy ảo dùng Vagrant
- Bước 1: Tạo một folder để chứa máy ảo cần tạo. Ví dụ: vagrantdemo
- Bước 2: Gõ lệnh
vagrant init hashicorp/precise32
. Lệnh vagrant init sẽ tạo ra một file Vagrantfile mà chúng ta sẽ dùng nó để cấu hình môi trường. Thông sốhashicorp/precise32
là tên máy ảo mà chúng ta sẽ tạo. Cụ thể, nó là Ubuntu 12.04 LTS 32-bit.
$ vagrant init hashicorp/precise32
- Bước 3: Gõ lệnh
vagrant up
. Lệnh này sẽ kiểm tra xem chúng ta đã có boxhashicorp/precise32
chưa, nếu chưa nó sẽ down từ vagrant cloud về. Sau đó, nó sẽ tạo máy ảo từ box đó. Box ở đây có thể hiểu như là một sandbox, tất cả máy ảo tạo ra đều sẽ lấy từ box này, điều này đảm bảo là chúng ta luôn có một‘read only’
image giống nhau cho tất cả các máy ảo.
$ vagrant up
- Bước 4: Login vào máy ảo bằng lệnh
vagrant ssh
$ vagrant ssh
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686)
* Documentation: https://help.ubuntu.com/
New release '14.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
Welcome to your Vagrant-built virtual machine.
Last login: Fri March 27 8:22:31 2015 from 192.168.1.81
Cài đặt Apache dùng Vagrant
Sau khi đã có thể login vào máy ảo rồi. Chúng ta có thể cài đặt Apache vào máy ảo này như bình thường. Tuy nhiên, cách đó không thú vị bằng cách chúng ta gõ lệnh trong file cấu hình, rồi để cho vagrant làm thay cho ta. Để cài đặt Apache dùng Vagrant, theo các bước sau:
- Bước 1: Tạo một file
boot.sh
như bên dưới. Lưu ý là lưu file boot.sh này ở cùng thư mục củaVagrantfile
nhé.
#!/usr/bin/env bash
apt-get update
apt-get install -y apache2
if ! [ -L /var/www ]; then
rm -rf /var/www
ln -fs /vagrant /var/www
fi
- Bước 2: Mở file Vagrantfile và chỉnh lại như sau
Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/precise32"
config.vm.provision :shell, path: "boot.sh"
end
- Bước 3: Gõ lệnh
vagrant up
, vagrant sẽ đọc file cấu hình này và cài apache cho chúng ta. Lưu ý là nếu máy ảo đang chạy rồi, thì chúng ta dùng lệnhvagrant reload –provision
nhé
$ vagrant up
hoặc
$ vagrant reload --provision
- Bước 4: Login vào máy ảo dùng SSH và kiểm tra xem Apache có hoạt động không bằng lệnh
wget
. Nếu ta thấy nội dung website hiển thị lên nghĩa là đã cài xong Apache.
$ vagrant ssh
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686)
* Documentation: https://help.ubuntu.com/
New release '14.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
Welcome to your Vagrant-built virtual machine.
Last login: Fri March 27 8:25:31 2015 from 192.168.1.81
vagrant@precise32:~$ wget -qO- 127.0.0.1
Shared folder
Có một điều khá thú vị là thư mục vagrantdemo lúc nãy chúng ta tạo ra nó sẽ được sync với thư mục trong máy ảo. Ví dụ nếu ta tạo ra 1 thư mục mới là test
, sau đó, login vào máy ảo dùng SSH, ta sẽ thấy thư mục đó trong máy ảo ở đường dẫn /vagrant/test
$ mkdir test
$ vagrant ssh
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686)
* Documentation: https://help.ubuntu.com/
New release '14.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
Welcome to your Vagrant-built virtual machine.
Last login: Fri March 27 8:27:31 2015 from 192.168.1.81
vagrant@precise32:~$ cd /vagrant
vagrant@precise32:/vagrant$ ll
total 7
drwxrwxrwx 1 vagrant vagrant 0 Dec 26 09:14 ./
drwxr-xr-x 23 root root 4096 Dec 26 08:44 ../
drwxrwxrwx 1 vagrant vagrant 0 Dec 26 09:14 test/
drwxrwxrwx 1 vagrant vagrant 0 Dec 26 08:43 .vagrant/
-rwxrwxrwx 1 vagrant vagrant 3071 Dec 26 08:36 Vagrantfile*
vagrant@precise32:/vagrant$
All rights reserved