vRA使用PowerShell脚本干些大事

一、前言

昨天已和大家分享关于vRO和Powershell的一些事,今天继续这个话题,vRA如何调用PowerShell脚本干些大事。本次环境使用Powershell来完成DNS记录的添加和删除,即通过蓝图发布虚拟机后,自动Windows的DNS服务器创建虚拟机的DNS记录(正向和反向记录),当虚拟机被删除后,又自动的删除DNS记录。

这个功能是不是企业私有云的必备功能啊?那我们就开始看看vRA如何利用PowerShell干大事的。

二、vRO添加基于DNS服务器的PowerShell

三、PowerShell脚本内容

Adddns脚本内容,添加DNS记录,该脚本带有3个参数

Removedns脚本内容,删除DNS记录,该脚本带有3个参数

四、vRO的Workflow

创建2个workflow,DNS Add用于添加DNS记录,调用adddns.ps1脚本

该workflow有如下属性值,PowershellHost为刚添加的DNS的PowerShell主机,DomainName为添加DNS记录的区域名,PowerShellName为要执行的powershell脚本绝对路径(DNS虚拟机的目录,见上一节),以上三个属性的值为预设值,各位根据实现需要更改相应的值

该workflow实际是调用vRO自带已有的workflow

被调用的workfolw名为”Invoke an external script”,为vRO自带workflow,不需要各位创建

Invoke an external script需要3个传入值,分别为host、arguments和externalscript,host为powershell主机,argments为传递给powershell脚本的参数,externalscript为需要在powershell主机执行的powershell脚本的路径值(绝对路径,包括脚本名字)。该三个传入参数分别对应PowershellHost、PowerShellName和PowershellTag,PowershellTag为workflow前面过程生成的值

vRO自带的脚本Invoke an external script手工运行的效果如下,Host值设定powershell主机

Name即为需要运行的powershell脚本,Arguments为需要向powershell脚本传递的参数

五、vRA事件订阅设置

在vRA新建订阅

事件主题为“计算机置备”

设置订阅的条件,即在蓝图运行到哪个阶段下,会运行该订阅里设置的vRO的Workflow,为三个条件,“生命周期状态名称”“等于”“VMPSMasterWorkflow32.BuildingMachine”,“状态阶段”“等于”“PRE”,“计算机类型”“等于”“Virtual Machine”,即表示能过蓝图申请虚拟机,准备置备该虚拟机时,触发该订阅

该订阅需要执行的vRO的workflow为DNS Add,即通过powershell脚本添加DNS记录

勾选“阻止”,表示该订阅对应的workflow执行失败时,蓝图申请也失败

完成订阅的创建,然后发布,即该订阅生效了,只要申请蓝图满足刚才所设定的3个条件,则执行vRO里的dns add的workflow

重复上面步骤新建DNS Delete订阅,即销毁虚拟机,删除DNS记录

DNS Delete订阅的条件如下

对应的vRO的workflow为DNS Delete

完成了vRa的订阅后,如何把蓝图里的相关属性信息传递给vRO呢?

这个就需要vRA设定属性定义,我们在业务组里设置属性定义,只要该业务组所对应的蓝图都继承该属性定义

设定如下二个属性定义,值分别为*,表示在申请蓝图的时候,构建虚拟机的时候和销毁虚拟机的时候,都会把蓝图相关的所有属性值传递给vRO。你会发现在设置订阅的时候,设定三个条件,其中一个条件的名字是否和这个值类似?

六、测试验证

完成了以后的所有设定后,我们测试一下效果,请求一个虚拟机蓝图

设置相关值

后台开始置备虚拟机

等待几分钟后,请求完成

发布出来的虚拟机名字为vCloud-VM-23

登录到DNS服务器,出现vCloud-VM-23的记录

且反向解析里也有对应的记录

然后登录到vRO客户端,发现DNS Add这个workflow成功执行了

然后销毁虚拟机

正在销毁虚拟机

vCenter删除虚拟机

成功销毁虚拟机

DNS记录被自动删除

包括反向记录也被删除了

7、总结

是不是很神奇?即然vRA可以通过PowerShell添加DNS记录,那是不是只要PowerShell能做的事,vRA都可以做?答案是肯定的。根据个人多年部署和使用vRealize多年的经验,vRA仅仅只是个框架,里面的内容需要我们来填充,即客户需要什么样的功能,就填充什么样功能。具体如何填充,就看各位对PowerShell脚本及各种其它产品掌握程度来决定,同时还需要一定的脚本编写能力。如果以上能力都能满足,我相信数据中心里的各种自动化功能没有vRealize Automation私有云平台搞不定的事!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180101G0P0MW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券