=========================
Setup HOST Infrastructure
=========================
HOST Machine
============
Nested KVM
----------
เมื่อมีการใช้งาน kvm เราสามารถตั้งค่าเพื่อให้สามารถใช้งาน kvm ซ้อน kvmได้ จะทำให้ instance ที่สร้าง
มีประสิทธิภาพการใชงานเร็วกว่าการทำงานบน QEMU emulation โดย Linux kernel จะยังไม่เปิดใช้ความ
สามารถนี้โดย default ต้องมีการตั้งค่า::
su -
rmmod kvm-intel
echo 'options kvm-intel nested=y' >> /etc/modprobe.d/dist.conf"
modprobe kvm-intel
ตรวจสอบ kernel parameter::
cat /sys/module/kvm_intel/parameters/nested
Y
Vagrant
=======
การใช้งาน vagrant เพื่อสร้าง development environment
.. image:: _images/vagrant001.png
.. seealso::
* `vagrant by hasicorp `_;
* `vagrant libvirt เพื่อดู config `_;
Install vagrant from dnf
------------------------
::
sudo dnf install vagrant vagrant-libvirt
repository
----------
vagrant ได้เตรียม image ไว้มากมายเพื่อให้เราสามารถใช้งาน ได้ โดยสามารถค้นหาและdownload image
เพื่อเตรียมทดสอบ https://atlas.hashicorp.com/boxes/search
.. image:: _images/vagrant002.png
อีกที่หนึ่ง http://www.vagrantbox.es/
.. image:: _images/vagrant003.png
Download box
------------
.. note::
การสั่งคำสั่ง vagrant cli สามารถใช้งาน ใน user ปรกติไม่จำเป็น root โดย vagrant จะสร้าง directory
ให้ที่ $HOME/.vagrant.d/
::
$ vagrant box add centos/7
==> box: Loading metadata for box 'centos/7'
box: URL: https://atlas.hashicorp.com/centos/7
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.
1) libvirt
2) virtualbox
Enter your choice:
add box อื่น ยกตัวอย่างเช่น::
vagrant box add fedora/24-cloud-base
vagrant box add ubuntu/trusty64
vagrant box add debian/jessie64
สร้าง project directory เพื่อการทดสอบ ชื่อ ``project01`` และ download vagrant box
::
$ mkdir project01
$ cd project01
$ vagrant init centos/7
$ cat Vagrantfile
(result เมื่อลบ comment ออก)
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
end
$ vagrant up --provider libvirt
คำสั่ง vagrant init จะสร้าง Vagrantfile ต้นแบบ เนื้อหาใน file ส่วนมากเป็นตัวอย่าง config การ
ใช้งาน บน virtualbox แต่ในการทดสอบนี้จะทำการสร้าง VM บน KVM hypervisor โดยตรง ที่ผ่านมาจึง
ต้องทำการติดตั้ง plugin ชื่อ ``vagrant-libvirt``
เพิ่มเติม vagrantfile ด้านล่าง
.. literalinclude:: _source/Vagrantfile1
.. image:: _images/vagrant004.png
กดเลือก double click lab1_server1 (lab1 ชื่อ project directory และ server1 เป็น ชื่อ VM)
.. image:: _images/vagrant005.png
กดเลือก รูปหลอดไฟเพื่อดูรายละเดียด
.. image:: _images/vagrant006.png
Connect to VM
-------------
สามารถเชื่อมผ่าน vagrant ssh [ชื่อ server] โดยที่ชื่อ ของ Server จะเป็นค่าที่กำหนดแก่ ``define``
::
vagrant ssh server1
vagrant ssh server2
File System Synce
-----------------
vagrant ได้ทำการ sync file system ให้ระหว่าง host และ vm ผ่านทาง ``/home/vagrant/sync``
ทำให้ vm สามารถใช้งาน file จากภายนอกได้โดยตรง แต่ถ้าหากมีการเปลี่ยนแปลง file ใน host จะ
ต้องสั่ง ``vagrant reload`` ก่อนการใช้งาน vm