绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
使用python管理vsphere平台之创建和克隆虚拟机
2019-09-11 16:09:00

使用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()

先定义一个搜索函数,可以根据名字搜索各种类型的资源,非常使用,里面的变量都是上面初始化后继承的。

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)

上面就是克隆的具体代码,从模板创建虚拟机的过程就是在克隆的基础上加上配置的修改,如何修改配置会在接下来更新,感谢观看。

分享好友

分享这个小栈给你的朋友们,一起进步吧。

唠唠云原生
创建时间:2020-05-11 11:26:03
云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生(CloudNative)是一个组合词,Cloud+Native。 Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 栈栈
    专家
戳我,来吐槽~