新到一个公司,需要做一个系统来管理现有的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()
点击(此处)折叠或打开
- def get_obj(vimtype, name):
- obj = None
- container = self.content.viewManager.CreateContainerView(
- content.rootFolder, vimtype, True)
- for c in container.view:
- if c.name == name:
- obj = c
- break
- return obj
开始从模板部署虚拟机
点击(此处)折叠或打开
- def clone_vm(*args,**kwargs):
- #获取模板的对象,使用了上面的搜索函数
- template =self.get_obj([vim.VirtualMachine],kwargs.get("template"))
- #定义虚拟机需要安装的节点主机位置,资源池没有定义每个主机默认为一个资源池,名字可以自行修改
- resource_pool = self.get_obj([vim.ResourcePool], kwargs.get("resource_pool"))
- #定义需要安装的存储名字
- if kwargs.get('datastore_name',None):
- datastore = self.get_obj([vim.Datastore], kwargs.get('datastore_name'))
- else:
- datastore = self.get_obj([vim.Datastore], kwargs.get("template").datastore[0].info.name)
- relospec = vim.vm.RelocateSpec()
- relospec.datastore = datastore
- relospec.pool = resource_pool
- clonespec = vim.vm.CloneSpec()
- clonespec.location = relospec
- #定义克隆完成后是否需要开机
- clonespec.powerOn = kwargs.get("PowerOn")
- print("cloning VM...")
- #开始克隆,vm_name是新主机名字
- task = template.Clone(folder=self._get_folder(self.content), name=kwargs.get("vm_name"), spec=clonespec)
- #使克隆任务从异步变成同步,后面会把代码列出
- return self.wait_for_task(task)
参考文档 https://github.com/vmware/pyvmomi-community-samples 里面有很多栗子。