การใช้งาน Vagrant


vagrant คืออะไร ? และวิธีการใช้อย่างง่าย

เปรียบเทียบกับ docker

  • Docker Docker จะทำการสร้าง Environment เพื่อ run application นั้นๆ ซึ่งเรียกว่า Container เป็นการทำงานลักษณะแบบ Virtual Environment (VE) คือ ไม่สามารถติดตั้ง OS แยกกันได้ อาศัย ทรัพย์กรจากเครื่องที่ตั้ง Envoriment ที่มี

  • Vagrant เป็นการเขียน script เพื่อ สร้าง การทำงานในลักษณะ Virtual Machine (VM)

  • การทำงานในลักษณะ Virtual Environment (VE) แตกต่างกับ Virtual Machine (VM) ตรงที่จะไม่มีการจอง CPU, Memory, Disk ดังภาพ

1*PmDFGgS__7juycGwH1rdxA.png

เตรียมความพร้อมก่อนเริ่มใช้งาน

  • Virtualbox #Vagrant 6.0

Download_Old_Builds_6_0 – Oracle VM VirtualBox

  • Vagrant #Vagrant 2.2.6

Download - Vagrant by HashiCorp

Install Vagrant

  • MacOS
$ brew cask install vagrant

*** ในตอนนี้ vagrant 2.2.6 รองรับ virtualbox ไม่เกิน version 6.0


How to start

  • Step 1
$ mkdir vagrant-example && cd vagrant-example
  • Step 2
# เป็นการ initail เพื่อให้ได้ vagrantfile 
$ vagrant init 
# or
$ vagrant init centos-7 
# เพื่อเป็นการ init ตัว os ที่เราต้องการจะสร้าง

ภายใน VagrantFile

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
end
  • Step 3 จำลอง ด้วยการ install Nginx ภายใน
Vagrant.configure("2") do |config|
  config.vm.box = "centos-7"
  config.vm.network "forwarded_port", guest: 80, host: 8080, id: "nginx" # เป็นการ forward port ภายในออกนอก 
  config.vm.provision "shell", inline: <<-SHELL
    sudo yum install epel-release -y
    sudo yum update -y
    sudo yum install nginx -y
    sudo systemctl start nginx
  SHELL
end
  • step 4
$ vagrant up

ทั้งนี้ยังสามารถสร้างใน provider เช่น DigitalOcean , Aws , ….

  • List Command
$ vagrant box # manages boxes: installation, removal, etc.
$ vagrant destroy # stops and deletes all traces of the vagrant machine
$ vagrant global-status # outputs status Vagrant environments for this user
$ vagrant halt # stops the vagrant machine or Shutdown
$ vagrant help # shows the help for a subcommand
$ vagrant init # initializes a new Vagrant environment by creating a Vagrantfile
$ vagrant login #log in to HashiCorp’s Atlas
$ vagrant package #packages a running vagrant environment into a box
$ vagrant plugin # manages plugins: install, uninstall, update, etc.
$ vagrant port # displays information about guest port mappings
$ vagrant powershell # connects to machine via powershell remoting
$ vagrant provision # provisions the vagrant machine
$ vagrant push #deploys code in this environment to a configured destination
$ vagrant rdp # connects to machine via RDP
$ vagrant reload # restarts vagrant machine, loads new Vagrantfile configuration
$ vagrant resume # resume a suspended vagrant machine
$ vagrant snapshot # manages snapshots: saving, restoring, etc.
$ vagrant ssh # connects to machine via SSH
$ vagrant ssh-config # outputs OpenSSH valid configuration to connect to the machine
$ vagrant status # outputs status of the vagrant machine
$ vagrant suspend # suspends the machine
$ vagrant up # starts and provisions the vagrant environment
$ vagrant version # prints current and latest Vagrant version