Pass平台如何用Vsphere管理虚拟机-2

Pass平台如何用Vsphere管理虚拟机-2

接上篇 Pass平台如何用Vsphere管理虚拟机-1
本篇描述如何利用Vsphere API接口去实现基于Vspher的云主机管理功能。

API接口描述:

Python SDK for the VMware vSphere API that allows you to manage ESX, ESXi, and vCenter.

使用分两步:

  • pip install --upgrade pyvmomi
  • git clone https://github.com/vmware/pyvmomi-community-samples.git

安装依赖,和拉下来samples的代码,samples的代码简单说下:

  • 虚拟机管理(clone、create、delete、stop、start)
  • 磁盘 (add、 delete)
  • 网络 (创建标准交换机、分布式交换机)
  • 脚本执行(这个最有用)

突然发现,写到这里,好像都已经交代完了。


下边描述下,灵雀云平台的关于Vmware的对接吧,顺便说下用到的一些API。
Pass平台如何用Vsphere管理虚拟机-2_第1张图片

  1. 权限验证
    在上一篇中你设置过的用户名和密码用上了,但是是否启用TLS安全认证,取决于你是否做了这个准备,没有的话pyvmomi提供了

    service_instance = connect.SmartConnectNoSSL(host=args.host,
                       user=args.user,
                       pwd=args.password,
                       port=int(args.port))
    
  2. clone 虚拟机
    这里,需要事先准备好一个模板,这个模板就是未来你集群节点的模子,如果你需要做docker 的运行主机的话,记得给Centos 做direct-lvm,clone操作会原封不动的给你拷贝过去,非常值得信赖,这一点对比Openstack的话,是个很方便的地方。Openstack,虚拟机创建和磁盘创建分离的,即便一起创建,还是没有初始化、挂载的。对应的参考是:

    clone_vm.py
    

    这里还有2个很小的语法错误,你运行的时候需要改一改。这个地方是你准备node节点用到的。可以纯自动化运行。但是这个创建过程非常久,可能要分钟级的,如果你要显示IP等信息的化,可能要等很久了(如果你的集群内有改网段的DHCP服务器的话),这里要异步去处理,你要有个cron-job轮训是不是已经给你分配IP了。

  3. 远程执行脚本
    参照:

    execute_program_in_vm.py
    

    这里主要是执行脚本的一个实例,因为如果你要装docker需要告诉它执行的命令,这个是能够部署Paas平台的关键啊,不支持就没法玩了。

  4. 异步处理
    你可能需要给cronjob 添加一些任务,如果你发现你的cronjob超长了,试试我前一篇博客的方法 Crontab Job 命令过长的处理 遇不到那更好。
    假如你的脚本需要执行很长时间,那么还是要异步检测。

  5. 你需要注意什么

    • 虚拟机的删除,分两步,stop和destroy。当你需要干掉云主机时,你要先关机,问题是关机也要25秒,前端可能会超时,所以还要异步处理。关机成功再删除。
    • 看好你vsphere服务器,别让人误删了,搭建要2个多小时。
    • 如果你想clone 出来一个和模板不是同一个vlan的虚拟机,(可能)要在每个物理主机上创建一个同VLAN的标准交换机出来。然后在这个vlan里,放一个dhcp。我在vsphere client 上验证是这样的,但是因为目前需求不包含,所以功能没有开发,尚未验证这部分API。

总体而言,这块API使用,概念很多,很杂,需要阅读大量Vsphere接口文档,这两篇算是简单回顾了下对接vmware的历程吧。

你可能感兴趣的:(云计算)