公司要自己开发私有云管理平台,我这边负责vmware部分的后台接口编写。
创新互联建站主打移动网站、网站建设、做网站、网站改版、网络推广、网站维护、域名注册、等互联网信息服务,为各行业提供服务。在技术实力的保障下,我们为客户承诺稳定,放心的服务,根据网站的内容与功能再决定采用什么样的设计。最后,要实现符合网站需求的内容、功能与设计,我们还会规划稳定安全的技术方案做保障。主要基于vmware官方的 python 接口 pyvmomi进行二次封装,
主要实现有虚拟机开关机注销;
虚拟机增删磁盘;
虚拟机快照增删还原;
虚拟机 html5的console界面
虚拟机网络管理
zabbix 监控 esxi的磁盘使用率
zabbix 接受转发esxi的报警信息
我把 克隆虚拟机,虚拟机 html5的console界面,虚拟机快照管理 这几个代码的放出,水平有限,大神勿喷,并且有部分涉及隐私的地方做了处理,供大家参考下,贴出的只是第一版,没有错误捕捉
需要环境:vcenter 5.1-6.0, python3.5 ,django 1.8 ,redis,mysql,celery(python 异步后台任务)等
第二个介绍展示html5的虚拟机console
只适用于vc ,5.x 不适用于6.x,6.x改了登陆验证方式 暂时还没搞定
过程,收到前端请求的,找到对应虚拟机,生成sessionTicket和 thumbprint,
拼接对应的网址,当作一个 HttpResponseRedirect 返回前端
先上下效果
输入 http://10.20.11.4:8001/viewconsole.py?IP=10.20.13.158
代码如下
import atexit
import ssl
import sys
import time
import OpenSSL
import os
from pyVim.connect import SmartConnect, Disconnect
from pyVmomi import vim
from django.http import HttpResponse
from django.http import HttpResponseRedirect
def viewconsole(request):
vmip = request.GET.get('IP')
respone=main(vmip)
return HttpResponseRedirect(a)
return HttpResponse(a)
def get_vm(content, name): 实例化虚拟机
vm = None
container = content.viewManager.CreateContainerView(
content.rootFolder, [vim.VirtualMachine], True)
for c in container.view:
if c.name == name:
vm = c
break
return vm
def main(vmip):
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
context.verify_mode = ssl.CERT_NONE
si = SmartConnect(host="######",
user="############",
pwd="############",
port=443,sslContext=context)
atexit.register(Disconnect, si)
content = si.RetrieveContent()
vm = get_vm(content, "{0}".format(vmip))
vm_moid = vm._moId
vcenter_data = content.setting
vcenter_settings = vcenter_data.setting
console_port = '7331'
for item in vcenter_settings:
key = getattr(item, 'key')
if key == 'VirtualCenter.FQDN':
vcenter_fqdn = getattr(item, 'value')
session_manager = content.sessionManager
session = session_manager.AcquireCloneTicket()
vc_cert = ssl.get_server_certificate(("vc的ip",443))
vc_pem = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM,
vc_cert)
vc_fingerprint = vc_pem.digest('sha1')
url="http://vc的ip:7331/console/?vmId={2}&vmName={3}&host={4}&sessionTicket={5}&thumbprint={6}".format("",console_port,vm_moid,vmip,vcenter_fqdn,session,vc_fingerprint.decode())
return url
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。