使用Active Directory标识和跟踪虚拟机(下)

日期: 2009-04-02 作者:Chris Wolf翻译:王越 来源:TechTarget中国 英文

在这一系列的最后一篇文章中,TechTarget中国的特约虚拟化专家Chris Wolf将介绍如何添加自定义Active Directory计算对象属性以定位虚拟机。   在本系列文章的的前两篇中,我描述了一种通过计算机对象Active Directory中Description属性来标识一个工作环境是物理环境还是虚拟环境的方法。在本文中,我将对Active Directory Integrity做进一步介绍,探讨自定义Active Directory模式,用来支持新的虚拟化属性。   在本文中,我给出了创建两个自定义Active Directory属性(isVirtual属性和vmType属……

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

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

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

在这一系列的最后一篇文章中,TechTarget中国的特约虚拟化专家Chris Wolf将介绍如何添加自定义Active Directory计算对象属性以定位虚拟机。

  在本系列文章的的前两篇中,我描述了一种通过计算机对象Active Directory中Description属性来标识一个工作环境是物理环境还是虚拟环境的方法。在本文中,我将对Active Directory Integrity做进一步介绍,探讨自定义Active Directory模式,用来支持新的虚拟化属性。

  在本文中,我给出了创建两个自定义Active Directory属性(isVirtual属性和vmType属性)的基本步骤。isVirtual属性是一个布尔变量,用来标识一台计算机是物理计算机还是虚拟计算机。如果isVirtual设置为“True”,就说明该计算机对象是虚拟机。如果用户希望以更细的粒度标识虚拟机,就需要增加vmType属性。vmType是一个字符串变量,可以用来标识一台虚拟机的虚拟平台,在此需要使用第一篇文章中所描述的命名规范。

  需要注意的是本文所述的过程要求Active Directory模式修改,修改后是不可撤消的。如果存在问题,那么你需要评估本系列前两篇文章中所描述的解决方案。对于扩展Active Directory模式的技术背景,用户需要看是TechNet的一篇文章《Extending the schema》,在这篇文章中,有几个微软文档的链接。微软的这几篇文档解释模式修改的程序及其微小差异。一定要记住本文列出的几个步骤在应用到产品领域之前,一定要先在某个测试环境中进行评估。

  在开始之前,如果还没有对象标识符((OID:Object Identifier))的话,需要为企业申请一个。如果企业没有OID,就需要在MSDN的Active Directory Naming Registration网站申请一个。另外,在这篇之外也不失一般性,最好的方案是在通用名字和LDAP显示名字中使用企业指定的模式前缀。例如,我的模式前缀是cwolf。因此不是使用通用名字“isVirtual”,最好的方法是使用“cwolf-isVirtual”,关于模式命名更多的信息,参看Microsoft Windows Server 2003应用程序规范。请注意,如果读者希望在一个实验室环境中测试这些流程,可以使用我在本文中给出的OID变量。

  为了创建新isVirtual属性和vmType属性,需要注册Active Directory模式MMC嵌入式管理单元。为了注册这个管理单元,需要登录域控制器,运行命令regsvr32 schmmgmt.dll。注意:只有用户是模式管理组成员才可以能够对Active Directory模式做出改动。
接下来就需要运行mmc目录打开一个空MMC shell,在shell上新增Active Directory模式管理单元。如果创建一个自定义的虚拟机属性,以下几个步骤是很有必要的:

  1. 在“Active Directory Schema MMC”中,右键点击“Attributes Container”,选择“Create Attribute”

  2. 查看“Schema Object Creation warning”对话框;点击“Continue”,一定要注意属性增加将会导致Active Directory模式的永久性改变

  3. 在如图1所示的对话框中,输入如下变量:

Common Name: isVirtual
LDAP Display Name: isVirtual
Unique X500 Object ID: Prefix value associated with organization's OID, followed by a unique attribute identifier. For example, 1.2.840.113556.1.8000.2522.2.1.
Description: Identifies a computer as virtual
Syntax: Boolean

  4. 在“Create New Attribute”对话框中输入要求的变量之后,点击“OK”就可以创建Description属性

  5. 接下来,需要创建vmType属性;右键点击“Attributes Container”,选择“Create Attribute”

  6. 查看“Schema Object Creation warning”对话框;点击“Continue”

  7. 在“Create New Attribute”对话框中(如图2),输入如下变量:

Common Name: vmType
LDAP Display Name: vmType
Unique X500 Object ID: Prefix value associated with organization's OID, followed by a unique attribute identifier. For example, 1.2.840.113556.1.8000.2522.2.2.
Description: Identifies the VM's virtualization platform
Syntax: Case-insensitive string

  8. 刷新模式之后就可以看见新增的属性;右键点击“Active Directory Schema object”,选择“Reload the Schema”

  9. 接下来,点击“Attributes Container”,定位isVirtual属性;看到isVirtual属性之后,右键点击选择“Properties”

  10. 在“isVirtual Properties”对话框中,检查“Index this Attribute in the Active Directory”复选框,点击“OK”;注意,在此也需要选上 Attribute is Active框。

  11. 如果新增“vmType Attribute”重复第9步和第10步

  12. 需要注意的是所创建的属性必须和计算机类相关联;所以需要扩展类容器并且定位“Computer”类;右键点击“Computer”,选择“Properties”

  13. 在“Computer Properties”对话框中,选择“Attributes”属性页,点击“Add”按钮

  14. 在“Select Schema Object”对话框中,向下拉选择“isVirtual attribute”,然后选择“OK”

  15. 在“Computer Properties”对话框的“Attributes”复选框内,再次点击“Add”按钮

  16. 现在可以选择“vmType Attributes”,点击“OK”

  17. 在在“Computer Properties”对话框的可选属性中就可以看到isVirtual和vmType;点击“OK”保存更改

Active Directory
 
图1:创建isVirtual属性

虚拟机
 
图2:创建vmType属性

  注意这些步骤将会改变模式,对Active Directory模式的任何改变将会影响到整个集群,所以需要确保在尝试该流程之前,对于这些变化有适当的符号结束指令。

  在属性增加到模式之后,就需要配置属性,使用setvirtual.vbs vbscript脚本程序设置计算机isVirtual属性:
strComputerDN = "CN=reyes,CN=Computers,DC=virtual,DC=net"
Set objComputer = GetObject("LDAP://" & strComputerDN)
objComputer.Put "isVirtual" , true
objComputer.SetInfo

  另外还需要编辑strComputerDN变量的名字确保和要编辑的计算机的不同名字保持一致,可以使用如下queryvirtual.vbs 脚本查询一台计算机的isVirtual属性:

strComputerDN = "CN=reyes,CN=Computers,DC=virtual,DC=net"
Set objComputer = GetObject("LDAP://" & strComputerDN)
isVirtual = objComputer.get("isVirtual")
wscript.echo(strComputerDN & " isVirtual = " & isVirtual)
如果需要为很多计算机设置isVirtual和vmType属性,我的个人主页上的setvirtualattributes.vbs 脚本程序可以完成这项工作。

  但是需要修改脚本程序中的以下几个变量:

  • blnIsVirtual
  • strVMtype
  • strDomainTarget
  • strSourceFile

  在使用脚本标识计算机对象为虚拟机的情况下,blnIsVirtual需要被设置为“True”。

  strVMtype标识虚拟机类型代码,用来自定义每台计算的vmType属性。例如,设置ESX虚拟机的strVMtype为“Vesx”。

  strDomainTarget必须用来给容器设置不同的名字,在这些容器中包含有目标计算机。例如,如果计算机对象在TechTarget.com域的Computers容器中,这个strDomainTarget变量就应该设置为“cn=computers,dc=techtarget,dc=com”;如果计算机对象在TechTarget.com域的Development OU中,这个strDomainTarget变量的值就应该设置为“ou=development,dc=techtarget,dc=com”。需要注意的是脚本一次只能在一个Active Directory容器中运行,因此,如果需要修改多个容器中计算机对象的话,用户就需要在每一个Active Directory目标容器中运行一次脚本程序。

  strSourceFile用来标识文本文件,在这些文本文件中是一个需要修改的计算机名列表。文件中的每一行都需要列出一个计算机主机名字。如下的链接中是一个样例:computers.txt。

  最后,为了定位一个特定域内的所有虚拟机,需要运行QueryVirtualAttributes.vbs脚本,该脚本程序可以在我的个人主页上下载到文本格式。为了在读者的工作环境中运行该脚本,需要修改三个变量:

  • strVMtype
  • strDomainTarget
  • strLogFile

  strVMtype标识用户可能查询的虚拟机平台类型。例如,设置strVMtype为“Vxen”将会输出一个所有基于Xen的虚拟机列表;使用“V”作为vmType变量将会输出isVirtual属性都是“True”的计算机列表,同时还有vmType属性的值。

  strDomainTarget用来标明用户希望查询域的不同名字,这个变量的设置需要和用户的域名相匹配。因此如果用户管理的是searchservervirtualization.com域的话,strDomainTarget就需要设置为“dc=searchservervirtualization, dc=com”。需要注意的是用户也可以通过新增一个不同的名字限制一个OU的连接范围,例如,为了连接TechTarget.net域中的“Web”OU,strDomainTarget就应该设置为“ou=web,dc=techtarget, dc=net”。

  最后一个可能需要修改的变量是strLogFile。strLogFile标识脚本程序输出的日志文件所存储的位置。默认保存到C盘根目录下,下面是一个日志文件的样例:

The following computers have the Vesx vmType attribute
Name VM Type
==== =======
Reyes Vesx
Maine Vesx
Wagner Vesx
WS86 Vesx

  从本系列文章的第一部分第二部分中提到的技术可以看到,每次一台新计算机对象创建时,为isVirtual和vmType自定义AD属性值是非常重要的。

  整合虚拟化管理和Active Directory可以给用户对于审计和管理整个企业内部所有虚拟机更大控制权。令人振奋的消息是,本系列文章中提到的一个解决方案可以提供AD整合和管理,这或许正是各位读者正在寻找的。如果不是的话,请告知我还需要那些技术来简化虚拟化工作环境的管理工作。

翻译

王越
王越

相关推荐