มาทดลอง Provision vm บน VM Ware Esxi ด้วย Ansible กัน🤓
สวัสดีครับเพื่อนๆ วันนี้ผมจะมาแนะนำการใช้ Ansible เบื้องต้น โดยจะเป็นการทดลองนี้จะเป็นการทดลองสร้าง VMs ผ่าน Ansible Playbooks บน VMWare ESXi ซึ่ง Architecture คร่าวๆ สำหรับการทดลองจะเป็นดังภาพด้านล่างครับ
โดยจะใช้ Notebook ลง VM ไว้ซักตัวแล้วข้างใน VM ก็ทำการ Install ตัว Ansible ไว้ภายในเปรียบเสมือน Ansible Machine นั้นเรียกต่อไปยัง VMware Servers เพื่อสั่งการคำสั่งต่างไปยัง Servers ครับ
ก่อนที่จะเริ่มทำ อยากให้เพื่อนๆเข้าใจเรื่อง tools ที่ใช้งานสำหรับการทดสอบใช้ Ansible Provision Visual Machine บน VMware ESXi
โดยเครื่องมือที่จะทำในการ ทดสอบครั้งนี้จะประกอบ หลักๆ 2 ส่วนก็คือ
- ANSIBLE
- VMWare ESXi
ซึ่งเครื่องมือแต่ละตัวเอาไว้ทำอะไรบ้าง ผมจะอธิบายอย่างคร่าวๆ ก็คือ
Ansible คือเครื่องมือชนิดนึงที่ใช้ทำ Automate โดยจะทำให้งาน IT เป็นเรื่องง่าย ไม่ว่าจะเป็นการทำ provisioning เครื่อง, configuration management, application deployment, intra-service orchestration, and many other IT needs.
ซึ่งในงานนี้เราจะทำการ จำของการ Provision เครื่องสำหรับการสร้าง VM โดยรันผ่านเครื่อง Automate Tools
โดยการทำงานของ Ansible จะประกอบด้วยไฟล์ที่สำคัญและเกี่ยวข้อง 2 ไฟล์คือ Inventory file และ playbooks
- Inventory file ทำหน้าที่เก็บรายชื่อของ server หรือ IP ของ Server ที่จะใช้สำหรับเป้าหมายการติดตั้ง โดย Default ถ้าไม่ได้มีการกำหนด สามารถสั่งโดยใช้ option -i ก็จะใช้ Inventory คือ /etc/ansible/hosts โดยเราสามารถที่จะทำการแก้ไขค่านี้ได้โดยแก้ไขไฟล์ /etc/ansible/ansible.cfg
- playbook.yml ไฟล์ เป็นไฟล์ที่ระบุว่า จะสั่งให้ Ansible ทำอะไรบ้างในแต่ละ playbooks การเขียนไฟล์จะใช้เป็น format ของ yaml format โดยสามารถเขียนได้ทั้งสองแบบ ไม่ว่าจะเป็นการเขียนแบบ Static หรือ Dynamic
โดยข้อมูลของ Ansible เพิ่มเติมสามารถหาอ่านได้ตาม link ข้างล่างนี้ครับ
และอีกส่วนหนึ่งก็คือ VMWare ESXi โดย VMWare ESXi เป็น Software ตัวหนึ่งที่ทำตัวเปรียบเสมือนระบบปฎิบัติการ ที่ทำหน้าที่รองการสร้าง VM เพื่อให้เครื่อง Servers ตัวหนึ่งนั้นสามารถ รองรับการสร้าง VM ได้หลาย VM บนเครื่อง โดยตัว VMware มีหน้าจอการจัดการ Resource ต่าง โดนสามารถทำทุกอย่างได้ผ่านหน้าจอ Web Console
โดยข้อมูลของ VMware ESXi สามารถหาอ่านเพิ่มเติมได้ตรง link นี้ครับ
โดยก่อนที่เราจะทำ Deploy VM นั้นเราจะต้องทำการเตรียม Template สำหรับ VM เพื่อเป็นต้นแบบสำหรับทำ VM
ซึ่งสามารถทำได้ผ่านหน้า UI ของ vSphere Client
ขั้นตอนการสร้าง Template ของ Virtual Machines
ตามขั้นตอนด้านบนเราก็จะได้ VM Template สำหรับการ Clone ไป VM เพื่อไป deploy บน VMWare ESXi
Ansible
Login to Linux machine
เข้าไปยัง Linux Machine ที่ลง Ansible ไว้ใช้รัน playbooks
Recheck Ansible service after run the playbooks ansible
Create playbooks สำหรับทำการเชื่อมต่อไปยัง VMWare ESXi เพื่อ deploy VM โดยผมทำการตั้งชื่อไฟล์ว่า deploy_CentOS_VM.yml
- name : ชื่อ VM สำหรับการ deploy VM
- Template : ชื่อ template ที่ใช้หลังจากทำการ create template มา
- Datastore : คือ disk ที่จะใช้เก็บข้อมูลของ VM นั้น
- Networks.IP : IP Address ของ VM หลังจาก deploy
โดยการเชื่อมต่อไปยัง VMWare ESXi จำเป็นต้องใช้ Username Password สำหรับ login สิทธิ์ของ user ที่ใช้ในการ Deploy VM from template นั้น ใช้สิทธิ์ ตามนี้ กรณีที่ไม่ใช่ admin
Administrator user with following privileges
👉 VirtualMachine.Provisioning.Clone on the virtual machine you are cloning
👉 VirtualMachine.Inventory.CreateFromExisting on the datacenter or virtual machine folder
👉 VirtualMachine.Config.AddNewDisk on the datacenter or virtual machine folder
👉 Resource.Assign virtual machine to resource pool on the destination host, cluster, or resource pool
👉 Datastore.AllocateSpace on the destination datastore or datastore folder
👉 Network.AssignNetwork on the network to which the virtual machine will be assigned
👉 VirtualMachine.Provisioning.Customize on the virtual machine or virtual machine folder if you are customizing the guest operating system
👉 VirtualMachine.Provisioning.ReadCustSpecs on the root vCenter Server if you are customizing the guest operating system
หลังจากที่ทำการจัดการเรื่องสิทธิ์ของ user แล้ว
เราก็จะทำการรัน playbooks สำหรับการสร้าง VM โดยจะเป็นการ Clone VM มาใหม่สำหรับ VM ตัวใหม่ที่เราจะสร้าง
คำสั่งที่ใช้ในการรัน playbooks
ansible-playbook -vvv deploy_CentOS_VM.yml
ผลลัพธ์ของการรัน ansible-playbooks
โดยถ้า Ansible ทำงานได้สำเร็จ state : Changed = True
โดยกลับไปเช็คที่ VMWare ESXi สำหรับผลลัพธ์ผ่าน Web Console VMWare ESXi
เท่านี้เราก็จะได้ VM ขึ้นมาใหม่โดยการสร้างผ่าน Ansible โดยสังเกตได้จากชื่อ VM บน Web Console ของ VMWare ESXi โดยชื่อนั้นจะตรงกับ config ของเราใน file Playbooks ของ Ansible
ซึ่งนี่ก็เป็นตัวอย่างนึงสำหรับการเขียน Playbooks ของ Ansible โดยเราสามารถนำไปประยุกต์ใช้โดยอาจจะใช้สร้าง VM หลายตัวโดยการ เขียน Playbooks หลายชุด หลาย VM ได้เป็นต้น
ก็จบไปแล้วนะครับสำหรับการทดลอง Provision VM บน VMWare Esxi ด้วย Ansible หวังว่าเพื่อนๆจะได้ประโยชน์จากบทความนี้กันนะครับ บทความต่อไปจะเป็นอะไร ฝากติดตามกันด้วยนะครับ อ้อ เพื่อนๆสามารถดู blog อื่นๆของพวกเราที่ link นี้เลยครับ 👉👉 https://medium.com/sirisoft