การใช้งาน 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

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

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

files-1584633762675.png

ทั้งนี้ยังสามารถสร้างใน 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
May 30, 2020