Python管理vSphere - 基本使用
一、获取vsphere的连接对象
传入服务器IP地址、用户名、密码,使用SmartConnect方法连接,成功连接会返回一个与 vSphere 服务器建立的会话实例 si
from pyVim import connect
si = connect.SmartConnect(host='', port=443, user='', pwd='')
开发请参考官方文档,链接:https://developer.broadcom.com/xapis/vsphere-web-services-api/7.0/
二、查询vSphere 受管清单对象 - 数据中心(Datacenter)
数据中心Datacenter对象属性请对应vsphere版本并参考官方文档
示例代码如下:
from pyVim import connect
from pyVmomi import vim # noqa
si = connect.SmartConnect(host='', port=443, user='', pwd='')
def get_container_view(si, view_type, container_folder=None):
content = si.RetrieveContent()
if not container_folder:
container_folder = content.rootFolder
view_ref = content.viewManager.CreateContainerView(container=container_folder, type=view_type, recursive=True)
return view_ref
def list_datacenter():
datacenter_view = get_container_view(si, view_type=[vim.Datacenter])
for dc in datacenter_view.view:
# 当前dc即单个数据中心对象
# 可以根据自己需求获取属性
print(dc.name)
# _moId即单个数据中心对象的ID号
print(dc._moId if hasattr(dc, '_moId') else '') # noqa
三、查询vSphere 受管清单对象 - 集群(ClusterComputeResource)
集群对象属性请对应vsphere版本并参考官方文档
示例代码如下:
from pyVim import connect
from pyVmomi import vim # noqa
si = connect.SmartConnect(host='', port=443, user='', pwd='')
def get_container_view(si, view_type, container_folder=None):
content = si.RetrieveContent()
if not container_folder:
container_folder = content.rootFolder
view_ref = content.viewManager.CreateContainerView(container=container_folder, type=view_type, recursive=True)
return view_ref
def list_cluster():
cluster_view = get_container_view(si, view_type=[vim.ClusterComputeResource])
for cluster in cluster_view.view:
# 当前cluster即单个集群对象
# 可以根据自己需求获取属性
print(cluster.name)
# _moId即单个集群对象的ID号
print(cluster._moId if hasattr(cluster, '_moId') else '') # noqa
四、查询vSphere 受管清单对象 - 主机(HostSystem)
主机对象属性请对应vsphere版本并参考官网
示例代码如下:
from pyVim import connect
from pyVmomi import vim # noqa
si = connect.SmartConnect(host='', port=443, user='', pwd='')
def get_container_view(si, view_type, container_folder=None):
content = si.RetrieveContent()
if not container_folder:
container_folder = content.rootFolder
view_ref = content.viewManager.CreateContainerView(container=container_folder, type=view_type, recursive=True)
return view_ref
def list_host():
host_view = get_container_view(si, view_type=[vim.HostSystem])
for host in host_view.view:
# 当前host即单个主机对象
# 可以根据自己需求获取属性
print(host.name)
# _moId即单个主机对象的ID号
print(host._moId if hasattr(host, '_moId') else '') # noqa
五、查询vSphere 受管清单对象 - 虚拟机(VirtualMachine)
虚拟机对象属性请对应vsphere版本并参考官网
示例代码如下:
from pyVim import connect
from pyVmomi import vim # noqa
si = connect.SmartConnect(host='', port=443, user='', pwd='')
def get_container_view(si, view_type, container_folder=None):
content = si.RetrieveContent()
if not container_folder:
container_folder = content.rootFolder
view_ref = content.viewManager.CreateContainerView(container=container_folder, type=view_type, recursive=True)
return view_ref
def list_vms():
vm_view = get_container_view(si, view_type=[vim.VirtualMachine])
for vm in vm_view.view:
# 当前vm即单个虚拟机对象
# 可以根据自己需求获取属性
print(vm.name)
# _moId即单个虚拟机对象的ID号
print(vm._moId if hasattr(vm, '_moId') else '') # noqa