当前位置:虚拟化行业动态 → 正文

使用Perl SDK获取VMware虚拟化平台信息

责任编辑:editor006 作者:王伟 |来源:企业网D1Net  2016-10-14 16:34:41 本文摘自:it168网站

云计算做为当前IT技术的主流,已经深入各行各业。而虚拟化做为其基础,已经被做为部署企业公有云、私有云的基础架构,虚拟化技术已经普及到我们大多数的公司企业中。在此背景下,相应的也就需要我们更加智能,更加高效的维护其不同的虚拟化平台,例如VMware,PowerVM,OpenStack等主流虚拟化技术平台。

VMware做为当前主流虚拟化平台,具有市场占有率高,技术稳定,受众人群多等特点。在日常的VMware维护中,我们更多的是以手动通过vSphere Client 或者vSphere Web Client来维护企业vSphere环境,又或者是通过vSphere命令行接口(vCLI)来管理vSphere环境。假如当我们的环境中需要自动、定时、批量的获取vSphere平台的数据时,这种方式就有很多的不足。除此之外,我们还可以开发一套自己的VMware监控平台, VMware提供了SDKs供我们集成,对系统维护人员或者开发人员来说,使用vSphere SDK for perl对vCenter环境进行维护是个不错的选择。

本文以linux平台为例,主要将介绍VMware vSphere SDK for Perl的安装部署,开发集成等内容。

具体有以下几个方面:

1、集成环境准备

2、 VMware vSphere SDK for Perl 下载安装部署

3、 Perl 示例代码介绍

4、 总结

一.集成环境准备

1. 操作系统环境准备

首先需要一台linux开发环境,并且完成基础的系统配置。由于我们采用的Perl的SDK,当前测试环境还必须集成perl 开发环境,具体配置略。

2. VMware平台环境准备

确认企业内部当前vSphere环境正常运行,vCenter或者Esxi Host可以通过 https或者vSphere Client的方式正常访问并可操作,并且需要一个当前vCenter Server提供具有管理员权限的账号。

在开始使用vSphere SDK for Perl之前,需要确保开发环境与 vSphere 之间的连接正常工作。使用https://ip/mob测试登录连接。

二.VMware vSphere SDK for Perl 下载安装部署

首先下载 VMware-vSphere-Perl-SDK-6.0.0-2503617.x86_64.tar.gz安装包,官方下载地址:https://developercenter.vmware.com/web/sdk/60/vsphere-perl

1. VMware vSphere SDK for Perl的安装

安装依赖包: yum install openssl-devel libxml2-devel e2fsprogs-devel

安装SDK:

解压缩:tar –zxvf VMware-vSphere-CLI-6.0.0-2503617.x86_64.tar.gz

安装:/vmware-vsphere-cli-distrib/vmware-install.pl 根据安装提示默认选择即可。

2. VMware vSphere SDK for Perl的测试

测试连接,我们可以通过vSphere SDK for Perl Utility Applications Reference通过以下命令测试和vCenter环境的连接。

# cd /usr/lib/vmware-vcli/apps/general

# ./connect.pl --url https://ip:443/sdk/vimService --username vCenter_account --password password

参考guide:

http://pubs.vmware.com/vsphere-60/index.jsp#com.vmware.perlsdk.uaref.doc/perl-toolkit-right.html

3. VMware vSphere SDK for Perl的相关概念

在使用vSphere SDK for perl 开发之前,我们可以通过访问 Managed Object Browser (MOB) 来获取managed object及其属性值。

vSphere SDK for Perl 主要有以下一些概念: 管理对象,属性,方法,数据对象等。

使用Perl SDK获取VMware虚拟化平台信息

三.Perl 示例代码介绍

在vSphere SDK for Perl Script的开发过程中主要有以下几个步骤:

1. 加载vSphere SDK for Perl 的Modules

2. 建立和vCenter Server 的连接

3. 获取远程服务器端的管理对象,筛选对象属性信息并生成所需要的数据

4. 断开连接

具体可参考以下示例:

1. Perl 头文件及连接

代码清单1:加载vSphere SDK for Perl 相关模块

#!/usr/bin/perl -w

#########################################################################

# - Get VMware Infos

#########################################################################

#

use strict;

use warnings;

use FindBin;

use lib "$FindBin::Bin/../";

use VMware::VIRuntime;

use VMware::VILib;

use AppUtil::VMUtil;

代码清单2:连接,建立程序和vSphere 环境的连接

# define para.

my $vCIp="0.0.0.0";

my $vCenterURL='https://'.$vCIp.'/sdk';

my $vCuser="username";

my $vCpass="password";

# Util::connect Connection.

Util::connect($vCenterURL, $vCuser, $vCpass);

2. 获取当前VC所管理的DataCenter

代码清单3:通过Vim::find_entity_views方法,指定entity type的类型来获取当前VC下的DataCenter

my $data_center_views = Vim::find_entity_views(view_type=>'Datacenter'); foreach(@$data_center_views){

print $_->name." ";

}

3. 获取当前Datacenter下的Cluster

代码清单4:通过Vim::find_entity_views方法,指定entity type的类型并定义entity的范围来获取当前Datacenter下的cluster

my $cluster_views = Vim::find_entity_views(view_type => 'ComputeResource',begin_entity => $data_center);

foreach(@$cluster_views){

print $_->name." ";

}

4. 获取当前Cluster下的Host

代码清单5:通过Vim::find_entity_views方法,指定entity type的类型并定义entity的范围来获取cluster下的host

my $cluster_views = Vim::find_entity_views(view_type => 'ComputeResource',begin_entity => $data_center);

foreach (@$cluster_views){

my $clustername=$_->name;

if (!defined $clustername){

print "cluster is null!"." ";

}else{

my $host_view_list = $_->host;

foreach my $host (@$host_view_list){

my $host_value_name = $host->value;

my $hosts = Vim::get_view(mo_ref => $host);

my $_ = $hosts;

my $hostname=$_->name;

}

}

}

5. 获取指定主机下的VMs

代码清单6:通过Vim::get_view来获取VM的引用来获取主机下的VM,并指定VM这状态不能是“inaccessible”

my $vms_host = $_->vm;

my $vm_value_name = $vms->value;

my $vms_detail = Vim::get_view(mo_ref => $vms);

# Get VMs Status

My $vm_connection_state= vms_detail->summary->runtime->connectionState->val;

if ($vm_connection_state ne "inaccessible"){

my $vmname = $vms_detail->name;

print $vmname;

}

6. 退出

代码清单7: 退出程序和vSphere 环境的连接

# exit connection

Util::disconnect();

四.总结

本文仅仅是获取出vCenter 环境中最基本的name信息,除此之外还有其他更多的信息可以获取到,例如Datacenter,cluster,host,vm的拓扑结构,配置信息等,还可以获取Host、VM的CPU、MEM、Disk、Net等常规配置、监控信息及其动态的IO数据。可以根据我们的项目需求去灵活获取;也可以利用该方法对vCenter环境进行管理,例如VM的创建,管理,迁移,备份等。在此基础上我们可以对获取到数据进行进一步的处理,比如集成到其他系统中分析汇总等,满足其他的业务运营的需要等等;也可以开发我们自己的VMware环境的管理工具。

关键字:PerlVMware

本文摘自:it168网站

x 使用Perl SDK获取VMware虚拟化平台信息 扫一扫
分享本文到朋友圈
当前位置:虚拟化行业动态 → 正文

使用Perl SDK获取VMware虚拟化平台信息

责任编辑:editor006 作者:王伟 |来源:企业网D1Net  2016-10-14 16:34:41 本文摘自:it168网站

云计算做为当前IT技术的主流,已经深入各行各业。而虚拟化做为其基础,已经被做为部署企业公有云、私有云的基础架构,虚拟化技术已经普及到我们大多数的公司企业中。在此背景下,相应的也就需要我们更加智能,更加高效的维护其不同的虚拟化平台,例如VMware,PowerVM,OpenStack等主流虚拟化技术平台。

VMware做为当前主流虚拟化平台,具有市场占有率高,技术稳定,受众人群多等特点。在日常的VMware维护中,我们更多的是以手动通过vSphere Client 或者vSphere Web Client来维护企业vSphere环境,又或者是通过vSphere命令行接口(vCLI)来管理vSphere环境。假如当我们的环境中需要自动、定时、批量的获取vSphere平台的数据时,这种方式就有很多的不足。除此之外,我们还可以开发一套自己的VMware监控平台, VMware提供了SDKs供我们集成,对系统维护人员或者开发人员来说,使用vSphere SDK for perl对vCenter环境进行维护是个不错的选择。

本文以linux平台为例,主要将介绍VMware vSphere SDK for Perl的安装部署,开发集成等内容。

具体有以下几个方面:

1、集成环境准备

2、 VMware vSphere SDK for Perl 下载安装部署

3、 Perl 示例代码介绍

4、 总结

一.集成环境准备

1. 操作系统环境准备

首先需要一台linux开发环境,并且完成基础的系统配置。由于我们采用的Perl的SDK,当前测试环境还必须集成perl 开发环境,具体配置略。

2. VMware平台环境准备

确认企业内部当前vSphere环境正常运行,vCenter或者Esxi Host可以通过 https或者vSphere Client的方式正常访问并可操作,并且需要一个当前vCenter Server提供具有管理员权限的账号。

在开始使用vSphere SDK for Perl之前,需要确保开发环境与 vSphere 之间的连接正常工作。使用https://ip/mob测试登录连接。

二.VMware vSphere SDK for Perl 下载安装部署

首先下载 VMware-vSphere-Perl-SDK-6.0.0-2503617.x86_64.tar.gz安装包,官方下载地址:https://developercenter.vmware.com/web/sdk/60/vsphere-perl

1. VMware vSphere SDK for Perl的安装

安装依赖包: yum install openssl-devel libxml2-devel e2fsprogs-devel

安装SDK:

解压缩:tar –zxvf VMware-vSphere-CLI-6.0.0-2503617.x86_64.tar.gz

安装:/vmware-vsphere-cli-distrib/vmware-install.pl 根据安装提示默认选择即可。

2. VMware vSphere SDK for Perl的测试

测试连接,我们可以通过vSphere SDK for Perl Utility Applications Reference通过以下命令测试和vCenter环境的连接。

# cd /usr/lib/vmware-vcli/apps/general

# ./connect.pl --url https://ip:443/sdk/vimService --username vCenter_account --password password

参考guide:

http://pubs.vmware.com/vsphere-60/index.jsp#com.vmware.perlsdk.uaref.doc/perl-toolkit-right.html

3. VMware vSphere SDK for Perl的相关概念

在使用vSphere SDK for perl 开发之前,我们可以通过访问 Managed Object Browser (MOB) 来获取managed object及其属性值。

vSphere SDK for Perl 主要有以下一些概念: 管理对象,属性,方法,数据对象等。

使用Perl SDK获取VMware虚拟化平台信息

三.Perl 示例代码介绍

在vSphere SDK for Perl Script的开发过程中主要有以下几个步骤:

1. 加载vSphere SDK for Perl 的Modules

2. 建立和vCenter Server 的连接

3. 获取远程服务器端的管理对象,筛选对象属性信息并生成所需要的数据

4. 断开连接

具体可参考以下示例:

1. Perl 头文件及连接

代码清单1:加载vSphere SDK for Perl 相关模块

#!/usr/bin/perl -w

#########################################################################

# - Get VMware Infos

#########################################################################

#

use strict;

use warnings;

use FindBin;

use lib "$FindBin::Bin/../";

use VMware::VIRuntime;

use VMware::VILib;

use AppUtil::VMUtil;

代码清单2:连接,建立程序和vSphere 环境的连接

# define para.

my $vCIp="0.0.0.0";

my $vCenterURL='https://'.$vCIp.'/sdk';

my $vCuser="username";

my $vCpass="password";

# Util::connect Connection.

Util::connect($vCenterURL, $vCuser, $vCpass);

2. 获取当前VC所管理的DataCenter

代码清单3:通过Vim::find_entity_views方法,指定entity type的类型来获取当前VC下的DataCenter

my $data_center_views = Vim::find_entity_views(view_type=>'Datacenter'); foreach(@$data_center_views){

print $_->name." ";

}

3. 获取当前Datacenter下的Cluster

代码清单4:通过Vim::find_entity_views方法,指定entity type的类型并定义entity的范围来获取当前Datacenter下的cluster

my $cluster_views = Vim::find_entity_views(view_type => 'ComputeResource',begin_entity => $data_center);

foreach(@$cluster_views){

print $_->name." ";

}

4. 获取当前Cluster下的Host

代码清单5:通过Vim::find_entity_views方法,指定entity type的类型并定义entity的范围来获取cluster下的host

my $cluster_views = Vim::find_entity_views(view_type => 'ComputeResource',begin_entity => $data_center);

foreach (@$cluster_views){

my $clustername=$_->name;

if (!defined $clustername){

print "cluster is null!"." ";

}else{

my $host_view_list = $_->host;

foreach my $host (@$host_view_list){

my $host_value_name = $host->value;

my $hosts = Vim::get_view(mo_ref => $host);

my $_ = $hosts;

my $hostname=$_->name;

}

}

}

5. 获取指定主机下的VMs

代码清单6:通过Vim::get_view来获取VM的引用来获取主机下的VM,并指定VM这状态不能是“inaccessible”

my $vms_host = $_->vm;

my $vm_value_name = $vms->value;

my $vms_detail = Vim::get_view(mo_ref => $vms);

# Get VMs Status

My $vm_connection_state= vms_detail->summary->runtime->connectionState->val;

if ($vm_connection_state ne "inaccessible"){

my $vmname = $vms_detail->name;

print $vmname;

}

6. 退出

代码清单7: 退出程序和vSphere 环境的连接

# exit connection

Util::disconnect();

四.总结

本文仅仅是获取出vCenter 环境中最基本的name信息,除此之外还有其他更多的信息可以获取到,例如Datacenter,cluster,host,vm的拓扑结构,配置信息等,还可以获取Host、VM的CPU、MEM、Disk、Net等常规配置、监控信息及其动态的IO数据。可以根据我们的项目需求去灵活获取;也可以利用该方法对vCenter环境进行管理,例如VM的创建,管理,迁移,备份等。在此基础上我们可以对获取到数据进行进一步的处理,比如集成到其他系统中分析汇总等,满足其他的业务运营的需要等等;也可以开发我们自己的VMware环境的管理工具。

关键字:PerlVMware

本文摘自:it168网站

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^