มาสร้าง Development Environment ด้วย #VagrantBox กันเถอะ

Krucamper
E-Commerce Solution
2 min readSep 28, 2016

ก่อนจะเริ่มต้นกัน ผมมีคำถามหนึ่งข้อ ให้ตอบในใจก่อนว่า คุณเคยมีปัญหากับสิ่งเหล่านี้กันหรือเปล่าครับ ?

  • ไม่สามารถพัฒนาระบบที่มีความต่างกันของ OS พร้อมกันได้
  • ไม่สามารถพัฒนาระบบที่มีความต่างกันของ Web Server พร้อมๆ กันได้
  • ไม่สามารถอัพเดทเวอร์ชั่นของภาษาที่ใช้พัฒนาระบบได้ เพราะไม่แน่ใจว่าข้อมูลเก่าจะเสียหายหรือเปล่า ?
  • ไม่สามารถพัฒนาระบบที่ต้องการใช้งาน extension หรือ service ที่ต่างกันได้
  • มีปัญหาในการทดสอบระบบ ในขั้นตอนการพัฒนาสามารถทำงานได้ปกติ แต่กับ Production ที่ใช้งานจริง ผลลัพธ์ดันออกมาไม่เหมือนกันซะงั้น

ถ้าไม่มีปัญหา กดปิดบทความนี้ แยกย้ายกันแล้วเอาเวลาไปทำอย่างอื่นดีกว่าครับ !! แต่ถ้าใช่ เหมือนจะมีปัญหาอยู่บ้าง ไม่มากก็น้อย เราจะมาแก้ปัญหาเหล่านั้นกันครับ

Part เตรียมความพร้อม

  • vagrant พระเอกของเราถ้าไม่ตัวนี้เนี่ย ฟาว์ล เลยครับ
  • virtualbox โปรแกรมสำหรับเอาไว้ run virtual machine

Part เอาล่ะนะ

  1. เริ่มจากการสร้าง folder สำหรับใช้งาน Vagrant Box ขึ้นมา
Mac:~ Anonymous$ mkdir ubuntu-php7

แนะนำว่าชื่อของ folder ควรจะสื่อความหมายถึง Environment ที่เรากำลังจะสร้างขึ้นมานะครับ

ตามด้วยคำสั่งที่เข้าไปใช้งาน folder ที่ได้สร้างเอาไว้เมื่อกี้

Mac:~ Anonymous$ cd ubuntu-php7

2. สร้าง Vagrant Box กัน ด้วยคำสั่ง

Mac:ubuntu-php7 Anonymous$ vagrant init

ถ้านึกหน้าตาไม่ออก ผมมีตัวช่วย

Mac:ubuntu-php7 Anonymous$ vagrant init
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
Mac:ubuntu-php7 Anonymous$ ls
Vagrantfile

หลังจากนั้นเราจะได้ Vagrantfile สำหรับเอาไว้ config Vagrant Box

3. config Vagrant Box เพื่อใช้งาน

Mac:ubuntu-php7 Anonymous$ sudo nano Vagrantfile

ค่าแรกที่เราจะ config กันก็คือ ค่าสำหรับบอกว่า Vagrant Box นี้เราจะใช้ Environment ไหน หรือ OS อะไร Architecture อะไรแบบไหน ในการทำงาน

//ตัวอย่างนี้ผมเลือกใช้ vagrant box ubuntu16.04 
config.vm.box = “geerlingguy/ubuntu1604”

เราสามารถเลือก Environment ได้ตามต้องการ จาก HashiCorp’s Atlas box โดย เลือก Provider เป็น virtualbox ก่อนนะครับ

ต่อมาก็ config ip สำหรับเข้าใช้งาน Vagrant Box

config.vm.network “private_network”, ip: “10.0.0.10”

สุดท้ายก็ config folder สำหรับเก็บข้อมูล

config.vm.synced_folder "/users/path/folder(1)", "/var/www/html (2)", owner: "www-data", group: "www-data"(1) path ของข้อมูลที่ต้องการ sync มาที่ vagrant เข้าไปที่ folder ที่ต้องการ sync ใช้คำสั่ง pwd หลังจากนั้น copy มาวางไว้ได้เลยครับ(2) path ตอนเข้าใช้งานที่ vagrant

การที่ config ค่า folder แบบนี้ ก็เพื่อตอบโจทย์

  • พวกที่ชอบเล่นอะไรแผลงๆ จน box พังบ้างล่ะ
  • อยากลบ box ทิ้ง เพราะเปลืองพื้นที่บ้างล่ะ
  • ชอบอัพเดท box ใหม่ๆ แต่ก็กลัวข้อมูลเก่ามีปัญหา
  • ไม่อยาก clone ข้อมูลทุกครั้งเมื่อมีการสร้าง box ใหม่

เพราะว่า ถึง box เราจะพัง เราจะลบ box ทิ้งไป หรือจะทำอะไรก็แล้วแต่ ข้อมูลงานของเราจะไม่โดนผลกระทบเลย เพราะข้อมูลของเราอยู่ที่ path ที่เราได้ config และ Sync ไว้นั้นเอง

4. ปลุก Vagrant Box ที่เรา config ไว้ให้พร้อมใช้งาน

Mac:ubuntu-php7 Anonymous$ vagrant up

ในขั้นตอนนี้ จะใช้เวลานนานหรือไม่ ก็อยู่ที่ความไว Internet ของแต่ล่ะคนนะครับ

5. สุดท้ายพิมพ์คำสั่งเพื่อ เข้าใช้งาน Vagrant Box

Mac:ubuntu-php7 Anonymous$ vagrant ssh

กรณีเข้าจาก directory อื่นๆ สามารถเข้าใช้งาน private ip ที่เรา config ไว้

Mac:~ Anonymous$ ssh vagrant@10.0.0.10

จบแล้วครับ การสร้าง Development Environment สั้นๆ ง่ายๆ เสียเวลาน้อยกว่าเดินไปชงมาม่ามากินซะอีก

--

--