"服务模板"在微软私有云体系中可以说是一个非常重要的环节。要知道在单独的Hyper-V主机运维中,是不可能接触到服务模板的。只有接触到System Center 2012 R2,你才会发现它所带来的好处。

在上一章节中,我们介绍了在服务模板中所部属的虚拟机中运行一些自定义脚本。今天的内容是接着昨天的话题:脚本中的变量。

============我是分隔线============

还是以昨天的一个需求为例:

作为最终用户A,希望部署虚拟机的时候将某些特定员工加入到"本地管理员组"中,作为管理员的我接到了这个需求,那么通过在服务模板中定义自定义脚本,完成了他的需求。

但是用户A觉得这种方法还不是很灵活,他希望自己定义哪些人可以被加到本地管理员中。同样,管理员不希望自己被这种小事所折磨,所以这种事情要A自己干,但是A还不能得到域管理员的密码。

============实现=========================

有了目标,就开始实施,在服务模板中,可以使用一个有趣的符号作为变量,在管理员定***务模板时,可以让用户自行输入一些指定的参数,这些参数可以作为部署的一个参考。同时这些参数也可以作为变量传递给自定义脚本。

首先在"库"窗格打开模板→服务模板,创建一个服务模板,或者直接导入一个服务模板,比如"Windows Server 2012 R2 HA GATEWAY-2NIC"。

微软私有云分享(R2)2-服务模板的变量_ Windows Server 2012

右键点击,选择打开设计器,或者在顶部点击选择打开设计器。

微软私有云分享(R2)2-服务模板的变量_ Windows Server 2012_02

我们看一下这里

微软私有云分享(R2)2-服务模板的变量_ System Center 2012 _03

还有这里

微软私有云分享(R2)2-服务模板的变量_ 服务模板_04

以及这里,发现了么,通过使用@变量名@  ,我们可以定义一些最终可以由用户手动输入的信息,而这些信息可以自定义。这一点对于租户和解放管理员非常拥有。

像账户密码、密钥、特定的运行参数,可以在除了"硬件配置"选项卡下的大多数界面使用变量。

类似在运行脚本中使用变量,只需要把命令参数变为@username@即可。@@之间的变量名不做任何限制,只要保证唯一即可。

再次提醒,该功能只能在服务模板中实现,普通的VM模板是无法使用的。

微软私有云分享(R2)2-服务模板的变量_Hyper-v_05


不过这些变量让用户输入,但是用户不知道变量怎么填写怎么办?

回到服务模板下,双击已创建的服务模板,查看服务模板的属性,点击"服务设置",可以看到所有已经配置的参数。

微软私有云分享(R2)2-服务模板的变量_ System Center 2012 _06

双击任意一条参数,在"描述"里输入你希望用户看到的描述文字即可。

微软私有云分享(R2)2-服务模板的变量_Hyper-v_07


最终用户的体验是什么样子的呢?

用户选择部署服务,会要求用户输入变量的一些值,点击不同的值,在下方就可以看到"描述",填写起来自然毫无问题。

通过服务模板的变量,我们轻松搞定了任何小事都要联系管理员的用户A。

微软私有云分享(R2)2-服务模板的变量_Hyper-v_08