Please note that this version of ImageInvoker has now been superceeded. Please take a
look at version 1.0 to download the latest version |
Do you want to see an end to imaging computers by mistake on ad-hoc PC rebuilds? Or Maybe you'd like to give your IT staff the power to deploy computers, but are fearful of the potential consequences that come with granting them console access? Perhaps even you've just bought Deployment Solution, but budget cuts mean you can't train all the DS Administrators you need to implement your day-to-day imaging tasks?
If you're thinking 'Yes' to any of the above, then ImageInvoker can help. It allows you to image both new and existing computers without ever having to touch the Deployment Console.
ImageInvoker introduces a client menu system into Linux automation which,
- Removes the need to stage computers for initial deployment
- Allows computers to be imaged with either their existing or a new name
- Allows either single jobs or entire folders of jobs to be instantly scheduled
This tool extends Deployment Server's imaging capability, allowing you to tag day-to-day tasks so that they are presented in a simple menu for easy access. As such you'll be able to initiate desk-side tasks such as Windows scripted installs, Hardware Independent Imaging deployments, and even a DoD Disk wipes without requiring any intervention from a DS Administrator. This significantly speeds up ad-hoc rebuilds and lowers the TCO of owning Altiris Deployment Server.
Those intending to upgrade ImageInvoker, please read the super-short upgrade notes towards the end of this article before running the MSI.
Sections in this document are,
If you are interested in my motivations in creating this add-on, take a look at the client side imaging section of the original ImageInvoker download.
Kind Regards,
Ian./
Installing and Configuring ImageInvoker
The MSI for ImageInvoker has been created in WISE Package Studio. ImageInvoker is my first project (and only!) in WISE and I have tried to get it to do as much as is sensible automatically. Many thanks go Darren Collins at Oxford University and members of the Connect whose articles and advice have helped enormously.
Installing ImageInvoker
Let's get down now to the business of installing ImageInvoker. This can be achieved with the following few steps,
- Download the ImageInvoker_v0.2.0.0.msi -the Microsoft Installer file attached to this article
- Execute the MSI on your Altiris Deployment Server. It may take about 10 seconds for the following screen to appear because of some custom actions and prerequisites which fire off in the background. Be patient.
As with the previous version, I do advise (as with all installs and upgrades on your servers) to do a full backup of your current setup before commencing. If you are using VMWare, now would be a prudent time to take that snapshot!
And note I am classifying this software as BETA. I use it my environments, and its even been used to large-scale deployments so I think its fairly safe to make public. Its still possible though that your environment is doing something i haven't catered for, hence the BETA tagging remains. This software will also self-expire on the 6th of June 2010. This is to ensure that I don't end up spending valuable time supporting multiple versions. On the positive side, this expiry pushes me to get the next version out... ;-)
Click Next to proceed
- On the next screen you should be presented with the destination folder as being the eXpress share. Click 'Next' to proceed. (If the custom actions have got this all wrong let me know but for now you can click 'Browse' to select the correct location)
Click Next to proceed.
- This is the point where we need the credentials for the ImageInvoker service. These need to be the same as those used for the Deployment Server Services, so the account name is auto-populated for you. Just enter the password you use for the Altiris Services and click Next.
If you implement DS Console security, the service account you use for Deployment Server must be entered in as an account in the console with administrator rights. If you do not, the service won't have the necessary rights within the console to execute tasks selected from the menu.
- Now, to the point of no return. If you're happy -click Next to proceed
- And that should be it -ImageInvoker is now installed. Click Finish to exit.
- Now open up you services control panel to confirm the service is installed and up and running,
Now lets move on to configuring Linux Automation to use the client menu wizard.
Configuring Linux Automation
Now that the ImageInvoker service is up and running on the server, lets make sure your Linux Automation environment is configured to load it. This is achieved by regenerating your Linux PXE image,
- Open the PXE Configuration Utility
- In the Boot Menu tab, locate the Regenerate Boot Images frame. Check the Linux box and click Regenerate
- Once the regeneration is complete, click Save to push the refreshed Linux image(s) to your PXE Server(s).
Further Info: Regenerating your images performs a complete image rebuild which combines the most current automation files with your customisations. In our case, the ImageInvoker installation has laid down a new shellscript in the linux folder hierarchy under Bootwiz. Therefore the Linux image regeneration process simply updates the Linux root file system with the file/folders I've added into the Bootwiz folder structure.
Setting Up Menu Items
Rather than use a separate utility to configure the client menu, ImageInvoker uses a method which is largely transparent to the Deployment Console. This is so that anyone modifying jobs in the console is instantly aware of any which might be public facing through the menu system. This is done by tagging any jobs (or job folders) destined for the client menu with the string (MI), MI standing for Menu Item.
The figure below shows an example of a job hierachy before and after this menu item tagging process.
Here I have, for illustration, targeted three objects for the Image Menu,
- The job DoD Disk Wipe
- The folder Deploy Public Access Computer
- The folder Deploy Staff Computer
To commit these jobs to the menu do the following,
- In the Deployment Console, from the menu-bar select Tools -> Altiris Tools
- Select "ImageInvoker: Create Automation Client Menu" from the tools list
- For now, just to get the menu up and running click "Re-generate Client Menu"
- A popup box should then appear detailing all the changes which are about to be saved to the menu,
Here we can see our three menu items (corresponding to the job hierachy example above). Two of the menu items are in fact folders of jobs, whilst the Wipe Disk item is a single job. Click 'Yes' to commit the menu.
When you tag folders as menu items, not only all jobs within the folder are processed, but the subfolders are processed too. This means you don't need to change the way you organise your jobs in order to use the menu. Also, the tag (MI) can be anywhere in the folder or job name.
As the Menu Creator tool writes a refreshed menu file for your clients, remember to run this each time you want your job and folder name changes with the (MI) tag to sync down to your clients. Menu Creator also accepts the silent switch (/S) which means that you could even schedule a daily task to automatically re-write the menu for the current job hierarchy if you wished.
ImageInvoker and PXE Booting
Whilst ImageInvoker works best when Linux is your dominant automation environment, it can also work well for you even if you never use Linux for imaging. In PXE boot environments, Deployment Server will automatically select the PXE boot option depending on the job currently scheduled. So, you can PXE Boot into Linux and just use it as a menu system. Once you've scheduled the job, your computer will automatically reboot, and download the correct automation envionment (i.e. DOS/WinPE) for the jobs being deployed.
In such environments its worth renaming the 'Linux (Managed)' option to 'ImageInvoker' to reflect this automation environment is purely used to schedule the appropriate imaging jobs.
So, as you can see ImageInvoker is the PXE booting environment is very powerful combination.
Using the ImageInvoker's Client Imaging Wizard
Whilst I initially wanted to drive the imaging menu from something slick on the lines of vesamenu.32 and PXELINUX, I soon realised this would come with a great many complications. In order to keep this project part-time, it was best to work within Deployment Server's own Linux automation environment. The Client Imaging Wizard is therefore a Linux menu system driven by a GNU program called Whiptail. For those more familiar with Linux it's very similar to the dialog program. Let's now take a look at how the Wizard is accessed and used within Deployment Server's Linux automation environment.
Imaging Existing Computers with ImageInvoker
Let's first look at the scenario of imaging existing computers with ImageInvoker. PXE boot a machine into Linux Automation, and see what happens.
- Five Second Countdown
As you can see from the screen grab below, we have two changes to the normal boot sequence. First, we receive some friendly text letting us know that the Express share has been mapped. This is really to comfort the Helpdesk staff who'd like to see something human readable at this point rather than looking for "Child Returned 0" messages which indicate a successful mapping. The next change is a 5 second countdown. If we press 'i' within these 5 seconds, we will interrupt the normal automation loading sequence and load up the imaging menu.
Press 'i' before the countdown has finished to invoke the ImageInvoker's Client Menu wizard.
- Client Menu Wizard
Now you'll find yourself presented with the first screen of the wizard -"Select Deployment Option". Note that all the menu items have been named as the folder and job names, but excluding the (MI) tags we used to mark them as menu items. I fancy making this computer a public access machine, so i'm going to use the arrow keys to move down to the "Deploy Public Access Computer" option and click "Enter".
- Computer Name Override
This stage of the interface provides the opportunity to change the computer's name. This computer is currently known to Deployment Server as 'VMWARE-564D04FD' -a virtual machine. I'm going to decide now its time for a change, and when this computer is imaged it's going to get a proper name following a particular naming convention. So, I'm going to change this now to something more suitable -'staff-xp-001'. Note that in most cases however you'll want to leave the computer name as it stands in the database, and to do that just hit enter to to move to the next screen.
- When you hit enter here, the jobs will now be scheduled. While the job scheduling is in progress you'll see the screen below,
- After a few moments, if the job scheduling has been successful you'll be presented with the following screen,
- If you take a look in the console you'll now find the jobs scheduled just as if you had dragged'n'dropped them on yourself. Well, almost -there is the minor exception that they have been scheduled for the beginning of the day. This scheduling time is the only difference between scheduling jobs with ImageInvoker and performing the scheduling manually by drag'n'drop.
In order for these scheduled jobs to be instantly scheduled, ImageInvoker will delete any jobs previously scheduled jobs on this computer. This is to allow the current selection to be executed immediately.
Imaging New Computers
This is where ImageInvoker comes into its own. The process is exactly the same as before, but with one difference -when new computers are booted into the client menu wizard you are informed that the computer is unknown to DS. The Computer Name Override screen is slightly different in this scenario,
Here we can clearly see that Deployment Console can't find the computer in the database, so ImageInvoker knows it must create a computer object for it. By default, the name of the computer object will be set to the computer's serial number but you can of course override this.
This is truely fabulous for deploying new machines.
ImageInvoker Advanced Topics
If you've got this far and are happy with ImageInvoker, you might want to try out a few of the advanced options below. Tips here include password locking the client menu wizard and overriding the default naming convention for Menu Items.
Password Locking the Client Menu Wizard
ImageInvoker now allows the client menu wizard to be password locked. To enable the password lock do the following,
- In the Deployment Console, from the menu-bar select Tools -> Altiris Tools
- Select "ImageInvoker: Create Automation Client Menu" from the tools list
- Enable the client menu password by clicking the check-box
- A password dialog box will then appear. Enter in your password and click OK
- Now click Re-generate Client Menu. The pop-up box similar that below will appear. The important point to note is that the first option should now read "Client Menu password: Enabled (updated)"
Once these changes are committed, all clients trying to use the ImageInvoker Client Installation Wizard will be prompted for this password. Three login attempts are permitted before denying access to the wizard.
Overriding Menu Item Names for Jobs
Sometimes, you don't want to present the exact job name as the menu item text in the client interface. Perhaps you have a very technical naming convention which you don't want to needlessly expose to your helpdesk staff. ImageInvoker has an menu text override system to cater for this.
If you don't want to use the job name as the menu text for a job, the override is to set a description for the job. Once you've set a description, run the ImageInvoker Menu Creator from the Altiris Tools menu to refresh the client menu file.
Figure showing how menu item names can be overridden using the job description field
Overriding Menu Item Names for Job Folders
As there is no description field which can be added to folders, the mechanism I've gone with for override job folder names is to create a dummy job.
- Create a job with the name (MI) and place it in the root of the menu item folder
- Put in the description field your menu item text
- Add to the currently empty job a single run script task
- In the Run This Script box, enter in the text REM MenuItem and ensure the job is configured to run in Windows
- In the Script Run Location inset, configure the script to run on the Deployment Server, and uncheck the box to Run when the Agent is Connected
This job therefore does absolutely nothing, and will not impact on your deployments. Its sole purpose is to provide this mechanism to give you a menu item name. Re-run the ImageInvoker Menu Creator from the Altiris Tools menu to refresh the client menu file.
Using the SearchRoot Option
The Client Menu Wizard has a SearchRoot option which is designed to limit the search scope of the menu item scavenger. Buy design, ImageInvoker will not be able to schedule jobs if a similarly named job exists in a similarly named folder elsewhere. In environments where two job tree branches are maintained (one for production and one for development) this would present a problem. By setting the SearchRoot to "Production", ImageInvoker will limit its queries to the jobs solely within the folder hierarchy under "Production".
To configure a SearchRoot, do the following,
- In the Deployment Console, from the menu-bar select Tools -> Altiris Tools
- Select "ImageInvoker: Create Automation Client Menu" from the tools list
- Enter the folder you wish to limit the search scope to in the "Add Menu Items Only from Specific Folder" text box,
- Click "Re-Generate Client Menu"
- Restart the ImageInvoker Service
The only caveat in this is that the SearchRoot folder must be unique, and you will be warned if this is the case. In the next generation of the Clent-Menu Wizard I hope aim render this service restart unnecessary.
Changing the Menu Timeout
The Client Menu Wizard also has a Timeout field which can be changed to suite your envionment. Just enter in a new value in the Timeout text-box and regenerate the menu to apply a new timeout.
Silent Installation of ImageInvoker
Silently installing the ImageInvoker MSI is straightforward. All you need to set on the command line is the Deployment Server service account password as all the rest are discoverable by the installer.
So, the command line is simply,
msiexec /i imageinvoker_v2.0.0.0.msi MYPASSWORD="password" /qn
Or if you want the shell to return once the installation is complete try,
start /wait msiexec /i imageinvoker_v2.0.0.0.msi MYPASSWORD="password" /qn
Troubleshooting ImageInvoker
If ImageInvoker is not behaving as expected, try some of the troubleshooting tips below. If these fail, drop me a line on connect and I'll see what I can do.
Checking the Installation
There will always be situations where the Installer hasn't behaved as I anticipated. If you have problems with the install, its likely that ImageInvoker will not have installed properly. The install does the following things,
- Locates the express share
- Creates the ImageInvoker folder .\express\ImageInvoker
- Copies the menu.sh to .\express\Bootwiz\Include\LINUX\SHARED\startup
- Installs and starts the ImageInvoker service
- Installs 2 custom SQL functions called dbo.Custom_IsFolderwithinFolder & dbo.Custom_IsEventwithinFolder
Next, So the first port of call is to check all the above is in place, and if it hasn't let me know.
The next part of the install is loading the menu into Linux automation which is performed by the image regeneration step. PXE boot into Linux automation and confirm that the menu file is present by typing the following,
cd /startup
ls
If menu.sh isn't there, try regenerating your linux environment again. If this still doesn't work, edit the boot image and see the creation process through yourself. You should see under the "Linux Additional Files" the menu.sh shellscript as illustrated below,
The Log & Comms Files
For troubleshooting, ImageInvoker logs to three locations:
-
C:\ImageInvoker.log
This is for critical service errors such as failure to locate the deployment share
-
.\eXpress\ImageInvoker\Logs
Here you can find the runtime logs of the ImageInvoker service and the Menu Configuration Utility. The log files are datestamped.
ImageInvoker Comms are stored under,
- .\eXpress\temp\ImageInvoker_In
This is where the client-server comms files are written
- .\eXpress\temp\ImageInvoker_Good
This is where successfully processed client communications are moved to
- .\eXpress\temp\ImageInvoker_In
This is where client communications which failed to process are moved to
If you have problems, and want me to help you troubleshoot send me all the above files.
Uninstalling ImageInvoker
ImageInvoker should uninstall cleanly using Add/Remove program. Uninstalling will remove the service, the files and ImageInvoker menu creation item from the Altiris Tools menu. The only items left on your system will be the logs, and two custom SQL functions in the eXpress database.
Version 0.2 Notes
Install Requirements
ImageInvoker's only software requirement is that Altiris Deployment Version 6.9 is installed. I've tested ImageInvoker on DS the following 6.9 Service Packs,
I see no reason why you couldn't use ImageInvoker with previous DS6.9 releases, but your mileage will vary. Feel free to respond on this connect thread with success stories for these earlier releases.
The footprint of ImageInvoker on the Deployment Server is designed to be very small,
- Disk Utiliisation 4MB
- RAM: 10MB
- CPU -negligible
Enhancement Requests from v0.1
I've received various enhancement requests since releasing the first prototype of ImageInvoker to connect. As the amount of time I could spend enhancing ImageInvoker is limited, I prioritised them as follows,
- Password protection of the client menu interface (using MD5 checksums)
- Ability to change the menu timeout
- Ability to silently install the ImageInvoker MSI
- Automate the addition of the menu.sh shell script to Linux Automation
- Set log datestamping to ISO format (YYYY-MM-DD)
- Ability to narrow down menu-item scavenging to particular folder hierachies
- Factoring into ImageInvoker remote console usage
- Log-file cleanup options
- WinPE Support
- DOS support
- Auto-generation of unknown computer names
- Password protection through Active Directory
This prioritisation was determined by a mix of usefulness and how easy they would be to implement. In order to implement some of the changes above, a significant amount of work had to be dedicated to clean up the engine and reorganising how the imaging menu is built, parsed and logged. This work will also make easier to addfurther options down the line. As a result, only the first 6 of these requests were actioned for the v0.2 release.
Many of you will probably be pleased to hear that the next big effort for version v0.3 will be the addition of WinPE support. and I hope to have re-written the service code for .NET. This is to make the service more stable, and the code more supportable.
Enhancement Requests from v0.2
- Make the menu wizard text configurable
Notes for Upgrading to v0.2 from v0.1
If you are upgrading from version 0.1 of ImageInvoker, please first edit your boot images to remove the menu.sh script I asked you to add manually for this version.The latest build will automatically lay down a new menu.sh for you using the more supportable method of applying it through the linux branch of the Bootwiz folder structure.
There should be no need to uninstall the version 0.1 of ImageInvoker however as the MSI should see this as a valid upgrade path. The ImageInvoker service will be restarted at the end of the installation, but you should not be required to reboot.
Known Issues
Any issues which emerge for this version from my testing or from other Connect users I'll add here for reference:
13-01-2009
Just found that ImageInvoker_v2.0.0.0.msi has a SearchRoot bug. The Menu's are built taking the new scope into account, but the ImageInvoker ignores this parameter in this build. Unfortunately, I have other projects looming so I have to leave the debug for another day. This fix will
probably have to wait for version 0.3.
FAQ
Q:
I really want WInPE support. Why isn't this supported yet?
A: Two reasons. First I wanted to make sure I had a stable engine before expanding automation OS support. The second reason is time -and Linux automation was the fastest automation OS for me to prototype this idea in.
Q:
I am worried that this product is free and doesn't have any official support. I don't want to rely on it now, and then find it will no longer be developed.
A: I use this too much myself now
not to develop it. ;-)
Q:
I don't use Linux Automation -Is ImageInvoker any use to me?
A: If you use PXE in your environment the answer is yes. In this scenario you don't even need to ensure you Linux automation has all the normal mass-storage support sorted -it just needs network connectivity to work. See the section
ImageInvoker and PXE above where I talk about PXE booting.
License:
|
Altiris EULA
By downloading this software, you agree to the terms and conditions in the Altiris End User License Agreement
|
Support:
|
User-contributed tools on the Connect are not supported by Altiris Technical Support. If you have questions about a tool, please communicate directly with the author by visiting their profile page and clicking the 'contact' tab.
|
Please note that this version of ImageInvoker has now been superceeded. Please take a look at version 0.3 to download the latest version |