มาทดลอง Provision vm บน VM Ware Esxi ด้วย Ansible กัน🤓

T.Buapa
Sirisoft
Published in
4 min readNov 6, 2020

สวัสดีครับเพื่อนๆ วันนี้ผมจะมาแนะนำการใช้ 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 ส่วนก็คือ

  1. ANSIBLE
  2. 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

  1. Inventory file ทำหน้าที่เก็บรายชื่อของ server หรือ IP ของ Server ที่จะใช้สำหรับเป้าหมายการติดตั้ง โดย Default ถ้าไม่ได้มีการกำหนด สามารถสั่งโดยใช้ option -i ก็จะใช้ Inventory คือ /etc/ansible/hosts โดยเราสามารถที่จะทำการแก้ไขค่านี้ได้โดยแก้ไขไฟล์ /etc/ansible/ansible.cfg
  2. 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 : CentOS_Linux
VM template name : CentOS_Template
Select location for the template : Datacenter -> CentOS_Template folders
select the a compute resource
select storage to keep your template
Summary for VM Templates
Waiting VMware ESXi clone virtual machine
Status of task complete

ตามขั้นตอนด้านบนเราก็จะได้ 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

--

--

T.Buapa
Sirisoft

Software Engineer / Middleware / System Admin