新到一个公司,需要做一个系统来管理现有的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 里面有很多栗子。