通過python管理vcenter中的虛擬機
因業務需要,需在夜間關閉虛擬機,隨通過計劃任務遠程管理開機、關機虛擬機
一、通過docker配置python3.9環境
Dockerfile
FROM python:3.9
RUN pip3 install pyvmomi==7.0.0
創建自定義鏡像
docker build -t pyvmomi7:v1 .
二、創建管理腳本
1、VM開機腳本
from pyVim import connect
from pyVmomi import vim
from pyVim.task import WaitForTask
import ssl
import certifi
import sysvmlist=["vm01","vm02","vm03"]
#vmlist=["ning-hb1","ning-hb2"]si = connect.SmartConnectNoSSL(host='192.168.1.10',user='administrator@vsphere.local',pwd='XXXXXXXX',port=443
)content = si.content
container = content.viewManager.CreateContainerView(content.rootFolder, [vim.VirtualMachine], True)
for vm in container.view:if vm.name in vmlist and vm.runtime.powerState != 'poweredOn':task = vm.PowerOnVM_Task()WaitForTask(task)
2、VM關機腳本
from pyVim import connect
from pyVmomi import vim
from pyVim.task import WaitForTask
import ssl
import certifi
import sysvmlist=["vm01","vm02","vm03"]
#vmlist=["ning-hb1","ning-hb2"]si = connect.SmartConnectNoSSL(host='192.168.1.10',user='administrator@vsphere.local',pwd='XXXXXXXX',port=443
)
content = si.content
container = content.viewManager.CreateContainerView(content.rootFolder, [vim.VirtualMachine], True)
for vm in container.view:if vm.name in vmlist and vm.runtime.powerState != 'poweredOff':task = vm.PowerOffVM_Task()WaitForTask(task)
三、創建定時任務
#開機
30 8 * * * /usr/bin/docker run --rm -v /data/script:/opt/ pyvmomi7:v1 python /opt/vm_PowerOn.py
#關機
0 18 * * * /usr/bin/docker run --rm -v /data/script:/opt/ pyvmomi7:v1 python /opt/vm_PowerOff.py