PowerCLI คือชุดเครื่องมือภาษาการโปรแกรมในการจัดการอัตโนมัติ (Automation) ที่พัฒนาโดย VMware สำหรับการบริหารจัดการ VMware vSphere และผลิตภัณฑ์อื่น ๆ ของ VMware โดย PowerCLI เป็นส่วนขยายของ PowerShell ซึ่งเป็นภาษา scripting ของ Microsoft PowerCLI ประกอบด้วย cmdlets มากมายที่ช่วยให้ผู้ดูแลระบบสามารถจัดการและกำหนดค่าโครงสร้างพื้นฐานของ VMware ได้อย่างง่ายดาย โดยปัจจุบันนั้น Powershell ของ Microsoft นั้นไม่เพียงแต่ทำงานได้บนระบบปฏิบัติการ Windows เท่านั้น แต่ยังทำงานได้บน Linux และ MacOS อีกด้วย
คุณสมบัติและการใช้งาน PowerCLI
การบริหารจัดการ vSphere: ช่วยให้สามารถจัดการและปรับแต่ง ESXi hosts, virtual machines (VMs), datastores, networks, และองค์ประกอบอื่น ๆ ของ vSphere ได้
การจัดการอัตโนมัติ: ช่วยให้ผู้ดูแลระบบสามารถสร้างสคริปต์เพื่อทำงานซ้ำๆ หรือทำงานที่ซับซ้อนได้โดยอัตโนมัติ
การติดตั้งและการกำหนดค่า: สามารถใช้ในการติดตั้งและกำหนดค่า VM ใหม่ๆ หรือโฮสต์ใหม่ ๆ ได้ง่าย ๆ (provision)
การทำรายงาน: ช่วยให้สามารถสร้างรายงานเกี่ยวกับสภาวะของโครงสร้างพื้นฐาน VMware ได้ เช่น รายงานเกี่ยวกับการใช้งานทรัพยากร, รายงานสถานะของ VM ฯลฯ
สำหรับชุดคำสั่งในการจัดการ products ของ VMware ผ่าน Powershell ทั้งหมดนั้นท่านสามารถอ่านเพิ่มเติมและดูคำสั่งได้ที่ https://developer.broadcom.com/powercli/latest/products/vmwarevsphereandvsan/commands-index
วันนี้เราจะพาไปดูวิธีการติดตั้ง Powershell บน Linux เพื่อที่จะทำการใช้งาน Powershell ในการเชื่อมต่อไปยัง VMware ESXi และทำการ shutdown esxi ตามเวลาที่กำหนด
Linux ที่เราจะติดตั้ง Powershell พร้อมกับ PowerCLI module นี้จะเป็น Ubuntu 22.04 (Jammy) แต่ใน version อื่นๆ เช่น 20.04, 24.04 ก็ใช้คำสั่งไม่ได้ต่างกัน
ทำการพิมพ์คำสั่ง
sudo apt-get update
เพื่อทำการอัพเดท list ของ package ในระบบ
ทำการติดตั้ง package เพิ่มเติมดังนี้
sudo apt-get install -y wget apt-transport-https software-properties-common
ทำการดึงค่าตัวแปรด้วยคำสั่ง
source /etc/os-release
หลังจากนั้น ทำการดาวน์โหลด repo ของ Microsoft
wget -q https://packages.microsoft.com/config/ubuntu/$VERSION_ID/packages-microsoft-prod.deb
หลังจากนั้นทำการติดตั้ง repo key
sudo dpkg -i packages-microsoft-prod.deb
ทำการลบไฟล์ package repo ที่ดาวน์โหลดมา
rm packages-microsoft-prod.deb
ทำการปรับปรุง list ของ package อีกครั้ง
sudo apt-get update
ทำการติดตั้ง Powershell
sudo apt-get install -y powershell
เมื่อติดตั้งแล้ว ก็ทำการรัน Powershell ด้วยคำสั่ง
pwsh
ท่านก็จะได้ระบบ prompt ของ powershell ตามภาพ
ทำการติดตั้ง PowerCLI ด้วยคำสั่ง
Install-Module -Name VMware.PowerCLI
ดังรูป
ระบบจะบอกกับท่านว่า module PowerCLI นั้นจะถูกติดตั้งจาก PSGallery ซึ่งท่านจะต้องกด Y เพื่อยืนยัน และกด Enter
หลังจากนั้นให้ท่านทำการพิมพ์ คำสั่งเพื่อเป็นการ import module PowerCLI
import-module VMware.PowerCLI
ระบบจะบอกกับท่านว่า ให้ท่านเลือกที่จะ join program Customer Improvement โดยท่านจะต้องพิมพ์คำสั่ง
Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $true
หรือหากท่านไม่ต้องการ join ก็เปลี่ยนตัวแปรเป็น false ตามตัวอย่างจะเป็นการเข้าร่วมโปรแกรม
คำสั่งอีกคำสั่งหนึ่งที่ท่านจะต้องใช้คือ
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false
ซึ่งเป็นการบอกระบบว่า ขณะที่ท่าน เชื่อมต่อไปยัง ESXi Host นั้น ท่านจะใช้ self-signed Certificate
ตัวอย่างต่อไปนี้ คือการใช้ Powershell Script ในการสั่ง shutdown ESXi Host ทุกวันเวลา 18:00 โดยให้ท่านสร้างไฟล์ที่มีชื่อว่า
shutdown-my-esxi.ps1 ซึ่งท่านอาจจะสร้างด้วย text editor อะไรก็ได้ ที่ท่านต้องการ เช่นเราเก็บไฟล์ไว้ใน /root/shutdown-my-esxi.ps1
Import-Module VMware.PowerCLI $esxiHost = "IP ของ ESXI" $esxiUser = "username ของ esxi" $esxiPassword = "password ของ esxi" # เชื่อมต่อไปยัง host $credential = New-Object System.Management.Automation.PSCredential($esxiUser, (ConvertTo-SecureString $esxiPassword -AsPlainText -Force)) Connect-VIServer -Server $esxiHost -Credential $credential # สั่งให้ทำการ shutdown Stop-VMHost -VMHost $esxiHost -Confirm:$false -Force # ตัดการเชื่อมต่อจาก esxi Disconnect-VIServer -Server $esxiHost -Confirm:$false
หลังจากนั้น ให้ท่านใช้ crontab ในการตั้งเวลา เช่น
crontab -e
และเพิ่มบรรทัดที่เรียก powershell ขึ้นมาทำงาน ดังรูป
ก็เรียกว่าเป็นตัวอย่างง่ายๆ สำหรับการ shutdown ESXi เพื่อช่วยประหยัดพลังงาน