使用VMware vRealize Orchestrator编写工作流脚本指南

日期: 2016-01-27 作者:Stuart Burns翻译:王学强 来源:TechTarget中国 英文

理解vRealize Orchestrator工作流中的重要元素仅仅是实现功能性、简易性和分类处理的第一步。 在这篇关于VMware vRealize Orchestrator系列文章的第一部分,我们介绍了vRealize Orchestrator 工作流当中的所有组件。其中的拖放界面是一种前端图形化设计工具,在底层使用JavaScript调用VMware vRealize Orchestrator提供的API(应用程序编程接口)。 如果查看“design”页面当中一些更为复杂的工作流,你会发现由于上一个工作流所带来的输入有所差异,导致当前工作流可能执行不同的动作和决定。

这些工作流在底层都是通……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

理解vRealize Orchestrator工作流中的重要元素仅仅是实现功能性、简易性和分类处理的第一步。

在这篇关于VMware vRealize Orchestrator系列文章的第一部分,我们介绍了vRealize Orchestrator 工作流当中的所有组件。其中的拖放界面是一种前端图形化设计工具,在底层使用JavaScript调用VMware vRealize Orchestrator提供的API(应用程序编程接口)。

如果查看“design”页面当中一些更为复杂的工作流,你会发现由于上一个工作流所带来的输入有所差异,导致当前工作流可能执行不同的动作和决定。这些工作流在底层都是通过JavaScript代码实现的。对于多数Orchestrator平台来说,我们都可以使用不同的方式来创建相同的优选输出。如果需要的话,开发人员可以在单个脚本元素当中添加多种功能,而不是使用多个工作流;使用这种方式能够提升简易性并且实现分类处理。相反地,应该避免大面积的冗余代码,因此需要客户决定哪种方式最为合适以及应该什么时候使用。

为了查看VirtualCenter (VC)当中的所有机器,需要创建一个新的工作流以及文件夹(如果之前没有创建过)。将一个“scriptable task”元素放到start和finish标签之间。之后点击scripting窗口,将下面的代码直接粘结到窗口当中:

var vCenterServers = VcPlugin.allSdkConnections;

var poweredOnVMs = new Array();

var count;

var allVMs = vCenterServers[0].getAllVirtualMachines(null, null);

System.log("Num VMs = " + allVMs.length);

for (count = 0; count < allVMs.length; count++) {

   if (allVMs[count].runtime.powerState.value === "poweredOn") {

       System.log(allVMs[count].name + "t" + allVMs[count].runtime.powerState.value + "t" + (allVMs[count].summary.storage.committed/1024/1024/1024).toFixed(2) + " GB");

   }

}

上面的代码可以帮助我们找到哪些虚拟机的电源是开启的,并且以GB为单位显示每台虚拟机所占用的存储空间。尽管通过拖放操作使用多个工作流的做法更为常见,但是直接执行代码能够简化操作过程,在拖放操作过程当中不再需要对输入和输出进行排序。

当你输入上面的代码之后,通过点击窗口底部的close键来完成操作。在点击“Save”之后将会在屏幕的下方出现绿色的“Saved Successfully”提示。这些代码需要连接到VC,因此需要在输入的时候选择合适的vCenter。

选择“Run”或者点击屏幕上方的“Play”按钮开始执行代码,之后在“logs”标签当中就能够看到所有开启电源的虚拟机以及所占用的存储空间。如图A所示,这里显示了能够连接到的所有虚拟机细节。

图A:日志标签

如图所示,使用基本的JavaScript来遍历所有的虚拟机,如果虚拟机的电源已经开启,那么继续显示虚拟机data store的使用情况。

之后,下面的代码将结果数据输出到日志系统当中:

System.log("Num VMs = " + allVMs.length)

保存工作流,然后运行。

这个代码段自身完成的作用是在不同脚本元素之间传递数据。为了使用这项功能,你必须首先定义变量,但是这个过程并不像看起来那样明确。

为了完全了解VMware vRealize Orchestrator的工作原理,你必须理解工作流参数,输入和输出是完全不同的概念。本质上,工作流参数就是适用于整个工作流的可用变量,用于在工作流元素之间转移数据,可以将它看做全局变量。

输入可能来自于用户、外部服务或者其他工作流对象。比如,你可以使用PowerShell脚本向工作流传递数据。这种特性简化多个数据源的处理流程。顾名思义,outputs就是用来将数据转移到其他工作流当中的。使用outputs,你可以传递任何系统支持的变量类型或者数组。

另外一种我们还没有讨论的vRO特性是变更控制。当你熟悉如何创建更加高级的工作流之后,能够再次恢复到之前版本是十分重要的。如果真的需要重新检查或者恢复某个工作流,那么在general页面点击“Show Version History”超链接就可以实现。如果需要的话,还能够查看当前版本和之前版本之间的差异。

VMware vRealize Orchestrator还可以完成许多其他任务,但是首先推荐你学习JavaScript,因为vRO当中的所有功能都需要使用JavaScript。想要成功开发有用的工作流需要经历一段时间,但是一旦你掌握了如何创建工作流和编写脚本,那么就可以通过简单的点击和运行来代替很多手动操作。

翻译

王学强
王学强

TechTarget特邀编辑,毕业于计算机专业,现任职于外企IT分析师,负责网络、防火墙和服务器等系统运维工作,对虚拟化、网络安全和渗透测试拥有浓厚兴趣,工作外热爱旅行、汽车和健身。

相关推荐