IMC Icon

HP IMC Silent Installation

HP IMC installation is normally a manual process, with plenty of clickey clickey clickey. This is OK for production systems, as most sites will only have one or maybe two IMC servers. But for my lab, I wanted to automate the install, so I can quickly spin up a new lab system. I have now found an undocumented, unsupported way of doing this.

There’s two parts to this – preparing the underlying OS & DB, and installing IMC. I am writing Ansible playbooks to handle the OS + DB setup. That’s working, but it needs a bit of cleanup. Once that’s done, I’ll integrate it with Vagrant. Then I should be able to completely automate the install of a lab IMC system. I will write another post on that once it’s complete.

To install IMC silently, create an “install.cfg” file to define your settings. Then tweak the installation script to call the silent installer, not the interactive install.

Note: I am using CentOS 6.x plus MySQL 5.6. With a few tweaks, this will probably work with Windows and/or other DBs. Also remember that this does not seem to be publicly documented anywhere. I’ve figured out how to do it through a bit of trial & error, but I wouldn’t go asking HP for support.

install.cfg

The key file is install.cfg. Create this file in the same directory as the IMC install.sh script. Here’s what my install.cfg looks like:

Most of that should be pretty self-explanatory. Here’s a breakdown of what they do, as far as I can figure out:

  • install.dir – the location where IMC is installed.
  • data.dir – location for the DB. This is more important for SQL Server installation.
  • db.type – choices are SQLServer, Oracle, MySQL, PostgreSQL. If you use Oracle, you also need to define “db.addinfo” (i.e. additional DB info). I don’t know the exact syntax required for that, but I suspect it is the network service name.
  • db.adminusername – A user with SA-level privileges. This user needs to be able to do pretty much everything – create new databases, users, etc. Typically this will be root, or sa.
  • db.adminpwd – the password for the above user. Note that if you’re using MySQL on the localhost, with user root, you must set a password for root. IMC won’t let you have a blank password.
  • db.port – port the DB listens on.
  • install.locale – the locale in use. Unsurprisingly, I’m using English – New Zealand.
  • deploy.components – the IMC components to deploy. This is a comma or semi-colon separated list. This is the full list of components installed with IMC Standard. If you’re installing Enterprise, there’s a couple more you can add. If you find out what those other component codenames are, let me know.
  • http.port – port for IMC to listen on. Default is 8080, but I don’t like that.
  • https.port – port for IMC to listen on for HTTPS. Default is 8443.

All pretty self-explanatory, right?

There’s one small issue: you can’t define the database server. From my analysis of the InstallSilence Java class, it will always use 127.0.0.1 for the DB IP. That’s OK for a lab system, but in production you’d probably rather have an external DB. It’s a pity you can’t define it, because it wouldn’t take much to extend the silent installer to handle it.

install.sh

The default install script is install.sh. This needs a few changes for a silent install. This will tell the installer to call a different Java class, and to send its output to Xvfb. This way you don’t need an X11 server running. I’ve created a new script “installsilence.sh” that contains these differences:

The first change is to call the “InstallSilence” class, rather than “InstallLauncher”. This tells IMC to look for install.cfg, and read its settings from there.

Next I comment out an unnecessary “echo” statement. Then I run Xvfb, so that you don’t need an X11 server set. This will send the progress bar off to the equivalent of /dev/null, and it won’t block. You’ll probably need to install xorg-x11-server-Xvfb first – I’m doing this in my Ansible playbook.

The last change is to add “-y” to the install command. If you don’t do this, the installer will read the settings, tell you what it’s about to do, then wait for you to enter “y” before continuing. With that setting, it won’t prompt, but will just start the installation.

So far, this is all working well for me. I now have a completely repeatable process for installing IMC, and it should work with new versions too. Output during installation looks like this:

[UPDATE 20150331] You can see at the end that it says “Press ‘Enter’ to launch DMA.” Normally it will block here. I created this Expect script to automatically handle this. Now it can be launched remotely, and run with no interaction at all:

Then all you need to do us run installer.tcl. Because I send “Ctrl+D”, it doesn’t even launch DMA. That means that everything is installed, but only the Deployment Monitoring Service is running. It would be nice to figure out how to tell IMC to start all processes via the CLI. I don’t know any way to do that yet, although I’m sure it’s possible.

, ,

4 Responses to HP IMC Silent Installation

  1. Peter Debruyne April 3, 2015 at 2:43 am #

    Hi Lindsay,

    very nice, I have asked HP for this several times, but could not get the info, so many thanks for figuring this out !
    I’ll try this on an windows box as well and see how the patch/other modules can be done.

    I never cared about the click stuff for the basic platform, but once you have to install PLAT+UAM+WSM and for each of the modules some patches, it really feels like wasted time, so this is step in the right direction!

    For the IMC start/stop, I did some digging in the existing scripts of the IMC install directory, and this worked for me:

    set CURRENT_DIR=C:Program FilesiMCdeploy
    set JAVA_HOME=%CURRENT_DIR%jdk
    set JAVA_CLASSPATH=%CURRENT_DIR%deploy.jar

    ## Stop IMC
    “%JAVA_HOME%binjava.exe” -cp “%JAVA_CLASSPATH%” com.h3c.imc.deploy.ProcessLauncher stop

    ## Start IMC
    “%JAVA_HOME%binjava.exe” -cp “%JAVA_CLASSPATH%” com.h3c.imc.deploy.ProcessLauncher start

    (using this on windows box, but this should be similar on the linux system)

    Hope this works for you!
    Peter

    • Lindsay Hill April 3, 2015 at 4:42 pm #

      Interesting – that might do the trick, if I run /opt/iMC/deploy/procctl,sh.

      I was setting autostart=true in /opt/iMC/deploy/conf/dma.conf, and restarting the Deployment Monitoring Service. That works, but doing it this other way gives me an option to start the processes without needing to change the autostart parameter.

  2. Kamil August 26, 2016 at 3:44 am #

    I’ve just tried to install it on CentOS 7.2 without XWindow environment, but unfortunately got this:
    http://pastebin.com/3Yh1fkLD

    Could you please advise?

    • Lindsay Hill August 26, 2016 at 4:39 am #

      You need X libraries installed. This playbook covers all the libraries you need https://github.com/NetOpsCommunity/ansible-build-imc

      But as I said on the HPE forums, if this is your first time using IMC, you should not be using the silent installation. You should be reading HP’s installation guides.