使用虚拟基础结构的vlab通用逻辑

vlab-inf-common的Python项目详细描述


这个库集中了与虚拟基础设施提供者一起工作的逻辑。

vmware

基于vSphere的pyVmomiAPI绑定 创建更多human-friendly对象,如:

vCenter

之所以称为vCenter,是因为您将连接到host。这个对象 更关注与虚拟机的交互,而不是配置系统。

下面是使用vCenter对象的示例:

fromvlab_inf_common.vmwareimportvCenter,vimvc=vCenter(user='Alice',password='iLoveDogs',host='some-vcenter-server.corp')vc.networks{'front-end':'vim.Network:network-14'}# mapping of name -> objectvc.create_vm_folder(path='/some/new/path')# recursively creates the whole pathvms=vc.get_by_type(vim.VirtualMachine)vms(ManagedObject)['vim.VirtualMachine:vm-15']

Ova

此对象抽象了创建新虚拟机时对ova文件的使用。 它同时处理ova文件位置的本地路径和url。部署 ova是一个单一的方法调用(一旦您获得了规范和租约)。

下面是使用Ova对象的示例:

fromvlab_inf_common.vmwareimportOvaova=Ova('https://some-server/myMachine.ova')ova.networks['eth0']ova.vmdks['disk-1.vmdk','disk-2.vmdk']hasattr(ova,'ovf')# b/c the ovf XML is too long to put in an exampleTrue

下面是一个使用OvavCenter部署新虚拟机的示例 有点长,但Pyvmomi并不容易…

importtimefromvlab_inf_common.vmwareimportOva,vCenter,vimvc=vCenter(user='Alice',password='iLoveDogs',host='some-vsphere-server.corp')ova=Ova('/some/path/myMachine.ova')my_folder=vc.get_vm_folder('/users/alice')network_map=vim.OvfManager.NetworkMapping()network_map.name=ova.networks[0]network_map.network=vc.networks['front-end']# assuming you have a network named 'frond-end'resouce_pool=vc.resource_pool['users']# assuming your pool name is 'users'datastore=vc.datastores['general']# another assumption!host=list(vc.host_systems.values())[0]# if you don't care which host you upload tospec_params=vim.OvfManager.CreateImportSpecParams(entityName='myNewVM',networkMapping=[network_map])spec=vc.ovf_manager.CreateImportSpec(ovfDescriptor=ova.ovf,resourcePool=resouce_pool,datastore=datastore,cisp=spec_params)lease=resource_pool.ImportVApp(spec.importSpec,folder=my_folder,host=host)for_inrange(30):iflease.state!='ready':time.sleep(1)else:breakprint('starting deploy')ova.deploy(spec,lease,host.name)print('Upload complete')ova.close()

常见问题

如何处理vCenter中的自签名TLS证书?

将环境变量INF_VCENTER_VERIFY_CERT设置为任意值,然后 我们将使用python ssl库创建的默认上下文。默认情况下,我们将 忽略自签名证书。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在表被注释到配置之前获取表的元数据?   java滚动条不会出现在JList上   java JOGL监视器GPU内存   java为什么要使用RecyclerView onDraw延迟   java定制Oppo Reno 2 Z CPH1951(手机型号)的固件(闪存文件)   java自定义线程池执行器   java如何解决发布版本中重复的jar条目[com/安卓/volley/R.class]?   java如何使用Bukkit API触发事件?   java在blazemeter jmeter RTE插件中使用ctrl+w输入   C#/Visual Studio的java JDT等价物   java为什么当maxread值很大而收到的消息数量很小时,卡夫卡消费者会无限期消费?   java游戏2。x:包含模板列表的绑定模型   带压缩的java日志旋转   运行时。exec用java运行程序读取它正在做什么