Friday, 23 January 2015

IBM Installation Manager - Installing across the 'web'

Typically, when one installs IBM software such as WebSphere Application Server, IBM HTTP Server, IBM Business Process Manager etc., it is common to create a "local" software library from which to install.

This software library, either hosted on the target server's local disk or, more logically, on a shared file server ( NFS etc. ), is then used by IBM Installation Manager (IIM) as the target repository.

This is a common pattern, and allows one to run IIM commands against the repository, as per the following example: -

/mnt/hgfs/SoftwareLibrary/IIM181/tools/imcl listAvailablePackages -repositories /mnt/hgfs/SoftwareLibrary/BPM855/Product/repository/repos_64bit/,/mnt/hgfs/SoftwareLibrary/WAS85/Fixes/Base/

com.ibm.bpm.ADV.v85_8.5.5000.20140604_1130
com.ibm.websphere.ND.v85_8.5.5002.20140408_1947
com.ibm.ws.DB2EXP.linuxia64_10.1.1.20140530_0055
com.ibm.websphere.BASE.v85_8.5.5004.20141119_1746
com.ibm.websphere.BASETRIAL.v85_8.5.5004.20141119_1746
com.ibm.websphere.DEVELOPERS.v85_8.5.5004.20141119_1746
com.ibm.websphere.DEVELOPERSILAN.v85_8.5.5004.20141119_1746
com.ibm.websphere.EXPRESS.v85_8.5.5004.20141119_1746
com.ibm.websphere.EXPRESSTRIAL.v85_8.5.5004.20141119_1746
com.ibm.websphere.ND.v85_8.5.5004.20141119_1746
com.ibm.websphere.NDDMZ.v85_8.5.5004.20141119_1746
com.ibm.websphere.NDDMZTRIAL.v85_8.5.5004.20141119_1746
com.ibm.websphere.NDTRIAL.v85_8.5.5004.20141119_1746

In this example, the imcl command is being sourced from the repository, which is hosted on one OS and mounted on the target OS.

( For the record, /mnt/hgfs refers to the way that VMware Fusion on Mac OS X presents a shared folder )

Whilst this is the most common method, IIM also supports connectivity to repositories via other mechanisms, including FTP and HTTP.

To demonstrate this, I have set up a web server ( Apache 2.4 ) to serve up a software library, via HTTP.

Again, for the record, the Apache server is running on Mac OS X, but this approach should work with any common web server, including IBM HTTP Server.

These are the relevant parts of the Apache configuration: -

Create a symbolic link to the actual physical location of the software repository

cd /Library/WebServer/Documents/
sudo ln -s ~/SoftwareLibrary/ .

ls -al

total 88
drwxr-xr-x  7 root  wheel    238 23 Jan 10:28 .
drwxr-xr-x  5 root  wheel    170  9 Sep 23:11 ..
-rw-r--r--  1 root  wheel   3726  9 Sep 23:11 PoweredByMacOSX.gif
-rw-r--r--  1 root  wheel  31958  9 Sep 23:11 PoweredByMacOSXLarge.gif
lrwxr-xr-x  1 root  wheel     28 23 Jan 10:28 SoftwareLibrary -> /Users/hayd/SoftwareLibrary/
-rw-r--r--  1 root  wheel     45 11 Jun  2007 index.html.en


Update Apache configuration to serve up the repository

sudo vi /private/etc/apache2/httpd.conf 

adding: -

Alias /SoftwareLibrary "/Library/WebServer/Documents/SoftwareLibrary"
<Directory "/Library/WebServer/Documents/SoftwareLibrary">
    Options All
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>


Restart Apache

sudo apachectl restart

Test Apache via a browser


This is, as is apparent, the IBM BPM Advanced 8.5.5 installation media.

This being done, we can now query the repository using IBM Installation Manager: -

/opt/IBM/InstallationManager/eclipse/tools/imcl listAvailablePackages -repositories http://macserver/SoftwareLibrary/BPM855/Product/repository/repos_64bit/

com.ibm.bpm.ADV.v85_8.5.5000.20140604_1130
com.ibm.websphere.ND.v85_8.5.5002.20140408_1947
com.ibm.ws.DB2EXP.linuxia64_10.1.1.20140530_0055

This allows us to install BPM ( plus WAS and the 8.5.5.4 fix pack ) using a response file, onto a clean target server which does not have the repository available, either locally or via NFS.

The benefits of this approach include situations where the software media cannot be physically hosted on the target server ( perhaps for security reasons ) and where shared storage such as NFS and GPFS are not available.

This is the relevant excerpt from the response file: -

....
<server>
<repository location='/tmp/Repo/IIM181/'/>
<repository location='http://macserver/SoftwareLibrary/BPM855/Product/repository/repos_64bit/'/>
<repository location='http://macserver/SoftwareLibrary/WAS85/Fixes/Base/'/>
</server>

...

Note that the path for IBM Installation Manager is an absolute path, as IIM needs to be available locally, in order to start and run IIM. However, IIM is relatively easy to distribute, as it's ~150 MB in size.

Having staged the installation media for IIM in /tmp/Repo/IIM, we can validate the connectivity to the HTTP-hosted library as follows: -


com.ibm.bpm.ADV.v85_8.5.5000.20140604_1130
com.ibm.websphere.ND.v85_8.5.5002.20140408_1947
com.ibm.ws.DB2EXP.linuxia64_10.1.1.20140530_0055
com.ibm.websphere.BASE.v85_8.5.5004.20141119_1746
com.ibm.websphere.BASETRIAL.v85_8.5.5004.20141119_1746
com.ibm.websphere.DEVELOPERS.v85_8.5.5004.20141119_1746
com.ibm.websphere.DEVELOPERSILAN.v85_8.5.5004.20141119_1746
com.ibm.websphere.EXPRESS.v85_8.5.5004.20141119_1746
com.ibm.websphere.EXPRESSTRIAL.v85_8.5.5004.20141119_1746
com.ibm.websphere.ND.v85_8.5.5004.20141119_1746
com.ibm.websphere.NDDMZ.v85_8.5.5004.20141119_1746
com.ibm.websphere.NDDMZTRIAL.v85_8.5.5004.20141119_1746
com.ibm.websphere.NDTRIAL.v85_8.5.5004.20141119_1746


and then perform the installation: -

/tmp/Repo/IIM181/tools/imcl -input installBPM855.rsp -acceptLicense

Installed com.ibm.cic.agent_1.8.1000.20141126_2002 to the /opt/IBM/InstallationManager/eclipse directory.
Installed com.ibm.websphere.ND.v85_8.5.5004.20141119_1746 to the /opt/IBM/WebSphere/AppServer directory.
Installed com.ibm.bpm.ADV.v85_8.5.5000.20140604_1130 to the /opt/IBM/WebSphere/AppServer directory.

validated as follows: -

/opt/IBM/InstallationManager/eclipse/tools/imcl listInstalledPackages

com.ibm.cic.agent_1.8.1000.20141126_2002
com.ibm.bpm.ADV.v85_8.5.5000.20140604_1130
com.ibm.websphere.ND.v85_8.5.5004.20141119_1746

So, in conclusion, this demonstrates how a software library ( repository ) can be hosted on a HTTP server, allowing installations to be performed across the LAN, when shared file systems such as NFS are not available.

No comments:

Note to self - use kubectl to query images in a pod or deployment

In both cases, we use JSON ... For a deployment, we can do this: - kubectl get deployment foobar --namespace snafu --output jsonpath="{...