博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【DevOps】做个愉快的DevOps之XenServer自动化管理(1)
阅读量:5117 次
发布时间:2019-06-13

本文共 2215 字,大约阅读时间需要 7 分钟。

这里主要是用python来做为开发工具,当然,如果你喜欢,go、java、C都可以。语言只是一种工具,不必纠结那种,用得顺手,方便,而且适合团队作战的最好。

我选python,主要是python是高级语言,拥有大量的开源模板库,初期学习成本低,适合在团队内迅速推广。简单的说就是不用我一个人去搞,我闪了后,别人也能轻松接手维护。

XenServer的开放接口工具叫Xapi,网站是   :  http://xapi-project.github.io/xen-api/   。当然,使用Xapi前,我们首先要理解下Xenserver的结构,借用下官网的一张图:

关于这图里面各个组件的说明,我就不说了,如果要进行Xapi开发,我假设已经拥有对Xenserver一定的基础认识,下面就开始着手进行第一步


 

首选,搭建一个基本环境,我用的是7.2的版本,下载页面为: https://www.citrix.com/downloads/xenserver/product-software/xenserver-72-standard-edition.html  ,选择“Development Components”-“SDK (Software Development Kit) 7.2.0”,下载后解压,会看到

 

说明Xenserver支持的几种语言包括python,.net,java,powershell,我们进入XenServerPython,选择这里看到的XenApi.py就是我们的需要唯一一个引用,对,搞了这么多,其实就只需要这个文件,我借助这个,我们首选来写个HelloWorld

#!coding=utf-8 import tracebackimport XenAPI#如果是集群,必须是集群的master的iphost='192.168.1.120'username = 'root'password = 'password'xen_url = "http://"+hostdef login():    url = xen_url    session = XenAPI.Session( url )    session.login_with_password( username, password, '1.2', 'xen-api-scripts-xenapi.py' )    return sessiondef loginout(session):    if session is not None :        session.xenapi.session.logout()if __name__ == "__main__":    session = None    try:        session = login()        print(session.xenapi.host.get_all())    except Exception as ex :        print(traceback.format_exc())    finally:        loginout(session)

 

 输出类似下面,我的测试集群有三台宿主机:

['OpaqueRef:ee00cb86-944e-86a0-2f9d-3d7031f3d800', 'OpaqueRef:da401fdc-6943-4372-fb30-5be73d21af87', 'OpaqueRef:b63c443c-6e73-fcb6-4966-b35f1ba9b647']

 

这里分为三个部分,第一部分是登录,通过创建一个XenAPI.Session对象,再通过账号密码登录,如果登录成功,该session保留登录信息,返回出去。第二部分是session.xenapi.host.get_all(),利用session获取当前资源池的host列表,并打印出来。第三部分当然是安全退出。

代码简单,没阅读难度,这里主要要注意的session。Xapi在服务器端会启动一个web服务,暴露出80端口,客户端通过url调用来对Xenserver进行自动化管理,通过连接Xapi,我们获取一个session对象,利用这个session对象调用其它对象查询时,通常是这样的格式:

session.xenapi.host.[支持的方法]
session.xenapi.SR.[支持的方法]
session.xenapi.PIF.[支持的方法]
session.xenapi.VBD.[支持的方法]
...... *更多具体的支持接口以及方法,可以查看  http://xapi-project.github.io/xen-api/

所以这里调用的get_all()是host对象里面的一个方法,用于显示所有的宿主机对象。上面的返回不是你能理解的主机信息,你可以把主机的所有元信息显示出来,可以试试session.xenapi.host.get_record(host),这里的host就是上面的返回列表中的对象。

 

好吧,如果到这里,都能理解,那ok,Xapi的操作已经毕业了,就是这么简单,下一个继续说怎么创建一个虚拟机。

 

转载于:https://www.cnblogs.com/easton-wang/p/7560553.html

你可能感兴趣的文章
大三上学期软件工程作业之点餐系统(网页版)的一些心得
查看>>
Java语言概述
查看>>
关于BOM知识的整理
查看>>
使用word发布博客
查看>>
微服务之初了解(一)
查看>>
GDOI DAY1游记
查看>>
MyBaits动态sql语句
查看>>
HDU4405(期望DP)
查看>>
拉格朗日乘子法 那些年学过的高数
查看>>
vs code 的便捷使用
查看>>
Spring MVC @ResponseBody返回中文字符串乱码问题
查看>>
用户空间与内核空间,进程上下文与中断上下文[总结]
查看>>
JS 中的跨域请求
查看>>
JAVA开发环境搭建
查看>>
mysql基础语句
查看>>
Oracle中的rownum不能使用大于>的问题
查看>>
cassandra vs mongo (1)存储引擎
查看>>
Visual Studio基于CMake配置opencv1.0.0、opencv2.2
查看>>
遍历Map对象
查看>>
MySQL索引背后的数据结构及算法原理
查看>>