通过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