python管理vsphere之查询集群,物理主机,管理虚拟主机常用操作-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 1637491
  • 博文数量: 63
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 646
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-26 18:02
个人简介

祸兮福之所倚,福兮祸之所伏

文章分类

全部博文(63)

文章存档

2020年(11)

2019年(10)

2017年(10)

2016年(25)

2015年(7)

我的朋友
相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: python/ruby

2019-05-20 16:29:49

使用python管理vsphere平台


新到一个公司,需要做一个系统来管理现有的vsphere平台,以此实现对虚拟机的自动化管理。


vsphere平台是vmware公司推出的虚拟化云管理平台(vmware主要靠这类产品赚钱),可以动态增加主机节点,主机上运行esxi专属系统,
所有的主机节点由vcenter管理,本人用的这段时间内基本没因为vmware的原因出现过问题,是中小企业作为底层架构的必备之选。


简单介绍下各组件  
    exsi: 物理主机节点,虚拟机就是在这上面运行的。
    vcenter: 管理所有节点,管理中心。           
vmotion:存储设备,成为云平台的就看有没有他了(贵)
datacenter: 数据中心,根据自己情况自定义,就是一群节点的分组
datastore:存储,每个节点的硬盘
network: 自定义跟物理网络对接

主要从创建,克隆,查询,修改配置,监控几个方面简单的介绍。


本篇主要介绍创建和克隆,之所以一起介绍,主要是因为这边创建的方式是从模板创建,实则跟克隆有异曲同工之处。


环境    centos7,python3.5,pyvmomi==6.7.1.2018.12


获取连接对象,初始化


import atexit
from pyvmomi import vim, vmodl
from pyvim.connect import smartconnectnossl, disconnect
si = smartconnectnossl(host=host, user=user, pwd=pwd, port=port)   #默认使用无证书方式登录
atexit.register(disconnect, si)
content = si.retrievecontent()
vchtime = si.currenttime()  




获取集群对象信息
dc=content.rootfolder.childentity
返回集群对象列表,每个对象都可以查询集群信息




获取连接的物理主机信息,获取所有物理主机使用遍历操作
esxi_host=dc[0].hostfolder.childentity[0].host


列出所有物理主机的信息
esxi.config 


列出所有硬件
esxi.hardware


列出cpu信息
esxi.hardware.cpuinfo


列出内存信息(单位kb)
esxi.hardware.memorysize


列出当前状态
连接状态,电源状态
esxi.runtime


内存cpu使用情况
esxi.summary.quickstats


存储使用情况,返回存储列表
ds=esxi.datastore


具体存储使用情况
ds[0].summary




虚拟机管理


所有虚拟机对象列表
content.viewmanager.createcontainerview(content.rootfolder,[vim.virtualmachine],true).view




查看虚拟机详细信息(vm为虚拟机实例对象)
summary = vm.summary
stats = summary.quickstats
config = summary.config
{
'name': vm.name,
'numcpu': config.numcpu,
'memory': '%.2f g' % (float(config.memorysizemb) / 1024),
'os': config.guestfullname,
'uuid': config.instanceuuid,
'memoryusage': '{:.2%}'.format(float(stats.guestmemoryusage) / float(config.memorysizemb)),
'cpuusage': 0 if stats.overallcpuusage == 0 else '{:.2%}'.format(float(stats.overallcpuusage) / float(summary.runtime.maxcpuusage)),
'power': 1 if vm.runtime.powerstate == 'poweredon' else 0,
'uptime': "%.2f days" % (stats.uptimeseconds / 60 / 60 / 24),
'disk': self._get_vm_disk(vm),
'ip': vm.guest.ipaddress if vm.guest.ipaddress else ''
}


查看虚拟机硬件资源(网络适配器和硬盘等)
vm_obj.config.hardware.device




虚拟机常用操作


开机
vm_obj.poweronvm_task()


关机
vm_obj.poweroffvm_task()


重置
vm_obj.resetvm_task()


修改内存cpu配置(必须在关机状态下才可以修改,否则报错)
spec = vim.vm.configspec()
spec.numcpus = kwargs.get("numcpu", none)
spec.memorymb = kwargs.get("memory", none)
if vm.runtime.powerstate == "poweredon":
vm.poweroffvm_task()
sleep(0.5)
vm.reconfigvm_task(spec=spec)
vm.poweronvm_task()




修改主机名
vm_obj.rename_task(new_name)










阅读(3031) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图