This page describes how to install and configure the backend VCL management node components including the required Perl modules, VCL daemon (vcld), and Windows utility dependencies.
The following instructions assume the VCL database has been installed and configured and that the managment node information has been added to the database as described on the web code installation page. This also assumes that the perl-DBD-MySQL-3.x and the mysql client (mysql-5.x) packages are installed, for database communications.
Install the Subversion client if it is not already installed:
yum install subversion -y
Download the management node code using the Subversion export command to /usr/local/vcl:
svn export http://svn.apache.org/repos/asf/incubator/vcl/trunk/managementnode/ /usr/local/vcl
The following packages to be installed on the OS before installing the required Perl modules. These packages must be installed if they were not installed as part of your base Linux install. It is easiest to use the package management utility for your OS --- yum, rpm, or other.
To install these packages using yum:
yum install expat expat-devel gcc krb5-libs krb5-devel libxml2 libxml2-devel openssl openssl-devel perl-DBD-MySQL xmlsec1-openssl -y
The VCL Perl code running on the management node requires additional Perl modules in order to run. These Perl modules are available from CPAN - The Comprehensive Perl Archive Network. A search engine for CPAN modules is available at search.cpan.org.
Note: Licensing information for each required Perl module is included below. The content of the "License:" lines was copied from the CPAN page for each module. The content of the other line was copied from the copyright section in the module's source code or from the module's readme file.
The following Perl modules are only required if VCL is configured to send instant messages via Jabber. Jabber support can be enabled or disabled by configuring the "jabber=" line in the vcld.conf file. The following modules do not need to be installed if Jabber support is disabled.
A script is provided in the managementnode/bin directory called install_perl_libs.pl which will attempt to download and install the required perl libraries. Run the script:
perl /usr/local/vcl/bin/install_perl_libs.pl
A large amount of output will be displayed on the console the first time the script is run. It will pause if any of the module installations ask for configuration information. Accept all of the defaults by pressing enter when this happens.
Run the script a 2nd time to check if all of the modules the script is configured to install were successfully installed. Output similar to the following should be displayed for each module:
============================================================================== URL: http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.609.tar.gz Module filename: DBI-1.609.tar.gz Module name: DBI-1.609 Module package: DBI Checking if DBI is installed Module is already installed: DBI ==============================================================================
Additional output will be displayed if a module has not been successfully installed. You will need to troubleshoot if any modules were not installed successfully.
Run the following command to execute the utils.pm file:
perl /usr/local/vcl/lib/VCL/utils.pm
Executing utils.pm does not actually do anything but this will tell you if VCL will be able to run. If any Perl modules are missing you will see "Can't locate" lines:
Can't locate HTTP/Headers.pm in @INC (@INC contains:...)
Once all of the required modules are installed, you should see output similar to the following:
BIN PATH: /usr/local/vcl/lib/VCL pre-execution: config file being used: /etc/vcl/vcld.conf Uncaught exception from user code: VCLD : /etc/vcl/vcld.conf does not exist, exiting -- No such file or directory BEGIN failed--compilation aborted at /usr/local/vcl/lib/VCL/utils.pm line 616. at /usr/local/vcl/lib/VCL/utils.pm line 616
/usr/bin/make install -- OK
Module Compress::Zlib (P/PM/PMQS/IO-Compress-2.020.tar.gz)
/usr/bin/make install -- OK
The Windows XP and Server 2003 Deployment Tools are available for free from Microsoft and are required in order for the capture of Windows XP and Server 2003 VCL images to work. The Sysprep utility is included in the Deployment Tools. You do not need to download Sysprep for Windows Vista or Server 2008 because it is included in the operating system.
Links to the downloads are below. You should be able to use the XP SP2 or SP3 version assuming the image you are capturing contains Windows XP Service Pack 3. We have seen problems with drivers not being installed correctly using the SP3 version of the deployment tools so the SP2 version is recommended.
Download: Windows XP Service Pack 2 Deployment Tools
Download: Windows XP Service Pack 3 Deployment Tools
Download: System Preparation tool for Windows Server 2003 Service Pack 2 Deployment
The Sysprep files need to be extracted from the file you download which is in Microsoft's .cab format. It is easiest to extract the files on a Windows computer. Windows Explorer is able to open the .cab file and then the files contained within can be copied elsewhere. There are also some Linux utilities which claim to be able to extract .cab files.
Copy the extracted Windows XP Sysprep files to the following directory on the management node after they have been extracted:
/usr/local/vcl/tools/Windows_XP/Utilities/Sysprep
/usr/local/vcl/tools/Windows_Server_2003/Utilities/Sysprep
The Sysprep directories should contain the following files at a minimum:
-rw-rw-r-- 1 root root 25600 Aug 18 17:32 setupcl.exe
-rw-rw-r-- 1 root root 88576 Aug 18 17:32 sysprep.exe
-rw-rw-r-- 1 root root 2574 Aug 18 17:32 sysprep.inf
Your organizations's Windows XP product key needs to be entered into the Windows XP sysprep.inf file. Find the ProductKey line and replace WIN_XP_PRO_KEY with your organization's Windows XP product key in the following file:
/usr/local/vcl/tools/Windows_XP/Utilities/Sysprep/sysprep.inf
/usr/local/vcl/tools/Windows_Server_2003/Utilities/Sysprep/sysprep.inf
Drivers which aren't included with Windows must be downloaded and saved to the management node. The drivers required will vary greatly depending on the hardware. The only way to know what additional drivers you need is to install Windows on a computer and check for missing drivers.
The drivers must be copied to the appropriate directory on the management node. The VCL image capture process copies the driver directories to the computer before an image is captured. Drivers from multiple directories will be copied based on the version of Windows being captured. There are driver directories under tools for each version of Windows (Windows XP, Windows Vista) and for each version group of Windows (version 5, 6). This allows drivers which are common to multiple versions of Windows to be shared in the management node tools directory structure.
For example, if a chipset driver works for all versions of Windows, it can be saved in:
tools/Windows/Drivers/Chipset
If Windows XP and Windows Server 2003 both use the same network driver, it can be saved in:
tools/Windows_Version_5/Drivers/Network
If a storage driver only works for Windows XP, it should be saved in:
tools/Windows_XP/Drivers/Storage
During the image capture process, each Windows version directory is copied to the computer under C:\Cygwin\home\root\VCL. The order in which the Windows version directories are copied goes from most general to most specific. In the example above, the order would be:
The resulting directory structure on the Windows computer will be:
The following list shows which driver files should be saved in the driver directories:
The directory structure under each Drivers directory does not matter. It is helpful to organize each directory by driver class, and each directory should be organized using the same theme. For example:
This step is complicated. 3rd party mass storage hardware IDs and driver .inf file paths must be added to the SysprepMassStorage section in sysprep.inf for Windows XP and Windows Server 2003 in order for the saved image to boot properly on different hardware.
Example: LSI SAS drivers commonly need to be downloaded and the hardware IDs need to be added to the sysprep.inf files in order for computers with LSI SAS controllers to boot.
[LSI]
%DevDesc2% = SYMMPI_Inst, PCI\VEN_1000&DEV_0622
%DevDesc3% = SYMMPI_Inst, PCI\VEN_1000&DEV_0624
%DevDesc4% = SYMMPI_Inst, PCI\VEN_1000&DEV_0626
%DevDesc5% = SYMMPI_Inst, PCI\VEN_1000&DEV_0628
%DevDesc6% = SYMMPI_Inst, PCI\VEN_1000&DEV_0030
%DevDesc7% = SYMMPI_Inst, PCI\VEN_1000&DEV_0032
%DevDesc8% = SYMMPI_Inst, PCI\VEN_1000&DEV_0050
%DevDesc9% = SYMMPI_Inst, PCI\VEN_1000&DEV_0054
%DevDesc10% = SYMMPI_Inst, PCI\VEN_1000&DEV_0058
%DevDesc11% = SYMMPI_Inst, PCI\VEN_1000&DEV_0056
%DevDesc12% = SYMMPI_Inst, PCI\VEN_1000&DEV_0640
%DevDesc13% = SYMMPI_Inst, PCI\VEN_1000&DEV_0646
%DevDesc14% = SYMMPI_Inst, PCI\VEN_1000&DEV_0062
[DELL]
%DevDescD1% = SYMMPI_Inst, PCI\VEN_1000&DEV_0054&SUBSYS_1F041028
%DevDescD2% = SYMMPI_Inst, PCI\VEN_1000&DEV_0054&SUBSYS_1F051028
%DevDescD3% = SYMMPI_Inst, PCI\VEN_1000&DEV_0054&SUBSYS_1F061028
%DevDescD4% = SYMMPI_Inst, PCI\VEN_1000&DEV_0054&SUBSYS_1F071028
%DevDescD5% = SYMMPI_Inst, PCI\VEN_1000&DEV_0054&SUBSYS_1F081028
%DevDescD6% = SYMMPI_Inst, PCI\VEN_1000&DEV_0054&SUBSYS_1F091028
%DevDescD7% = SYMMPI_Inst, PCI\VEN_1000&DEV_0058&SUBSYS_1F0E1028
%DevDescD8% = SYMMPI_Inst, PCI\VEN_1000&DEV_0058&SUBSYS_1F0F1028
%DevDescD9% = SYMMPI_Inst, PCI\VEN_1000&DEV_0058&SUBSYS_1F101028
PCI\VEN_1000&DEV_0622 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0624 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0626 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0628 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0030 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0032 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0050 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0054 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0058 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0056 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0640 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0646 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0062 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0054&SUBSYS_1F041028 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0054&SUBSYS_1F051028 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0054&SUBSYS_1F061028 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0054&SUBSYS_1F071028 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0054&SUBSYS_1F081028 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0054&SUBSYS_1F091028 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0058&SUBSYS_1F0E1028 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0058&SUBSYS_1F0F1028 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
PCI\VEN_1000&DEV_0058&SUBSYS_1F101028 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
/usr/local/vcl/tools/Windows_XP/Utilities/Sysprep/sysprep.inf
/usr/local/vcl/tools/Windows_Server_2003/Utilities/Sysprep/sysprep.inf
NOTICE: The WSName.exe utility is no longer available. The set_computer_name.vbs script which calls WSName.exe will be rewritten for the 2.2 release of VCL. In the meantime, this script is being left intact in case you have a previously released version of WSName.exe or are able to obtain it from another source.
The wsname.exe utility is used by VCL to name Windows computers. It does a reverse DNS lookup so that the computer name is set to the name registered for its public IP address. The utility is called by set_computer_name.vbs when a Windows image is loaded. The utility is not vital for the load process to work. However, the computer will receive a random name if the script is missing or fails to run.
If you do have a previously released version of WSName.exe or are able to locate it from another souce, save WSName.exe in the following location on the management node:
/usr/local/vcl/tools/Windows/Utilities/WSName/wsname.exe
NewSID.exe is used to change the SID of a Windows computer if Sysprep is not used. Download the NewSID.exe utility:
Download: NewSID.exe
Save the NewSID.exe utility in the following location on the management node:
/usr/local/vcl/tools/Windows/Utilities/NewSID/newsid.exe
SPDrvScn.exe is used before an image is captured to enter the paths of drivers to the Windows registry so that they are loaded when Sysprep attempts to install devices. Download the SPDrvScn.exe utility:
Download: SPDrvScn.exe
Save the SPDrvScn.exe utility in the following location on the management node:
/usr/local/vcl/tools/Windows/Utilities/SPDrvScn/spdrvscn.exe
To insure that the management node can SSH into your virtual machines without problems, you will need to edit the SSH client config for the root user:
vi /root/.ssh/config
Add the following lines to the top of the configuration file.
Host <vmhost> <vmhost ip> UserKnownHostsFile /dev/null StrictHostKeyChecking no
Where:
This will insure that new VM hosts will not hang on the known hosts prompts when the management node attempts to connect to them for the first time.
Starting vcld daemon: BIN PATH: /usr/local/vcl/bin pre-execution: config file being used: /etc/vcl/vcld.conf FQDN is not listed pre-execution: process name is set to: vcld pre-execution: verbose mode is set to: 1 pre-execution: testing mode is set to: 0 pre-execution: log file being used: /var/log/vcld.log pre-execution: PID file being used: /var/run/vcld.pid Created process 23696 renamed to vcld ... [ OK ]
2009-06-16 16:57:15|15792|vcld:main(165)|lastcheckin time updated for management node 18: 2009-06-16 16:57:15