Containerless Deployment
If you want to use ICM to provision cloud infrastructure and install noncontainerized InterSystems IRIS instances on that infrastructure, or to install InterSystems IRIS on a PreExisting cluster, you can do so using containerless mode.
In essence, containerless mode replaces the containerized deployment of InterSystems IRIS by ICM with direct installation from traditional kits, while retaining all the other steps in the ICM provisioning and deployment process. This is accomplished by adding two commands to ICM and adapting several others.
In containerless mode, Docker is not installed on the provisioned nodes and the icm run command cannot be used to deploy containers on those nodes.
Containerless Deployment Platforms
Operating systems supported for containerless deployment include:
Ubuntu 18.04 or later
Red Hat Enterprise Linux 7.3 to 7.7
SUSE Enterprise Linux 12 SP4, 15, and 15 SP1
The following operating systems are not supported but have been tested:
CentOS
Enabling Containerless Mode
Enable containerless mode by adding the Containerless field to the defaults.json file with a value of true, for example:
{ "Containerless": "true", "Provider": "AWS", "Label": "Acme", "Tag": "TEST" "LicenseDir": "/Samples/license/", "Credentials": "/Samples/AWS/sample.credentials", ... }
Installing InterSystems IRIS
To install InterSystems IRIS on your provisioned nodes using the installation kit you have selected, use the icm install command, which does not exist in container mode. The kit is identified by the KitURL field, which specifies the path to the installation kit and can be added to either defaults.json or definitions.json. The specified kit must be all of the following:
Accessible by the node on which InterSystems IRIS is to be installed (though not necessarily by the ICM container itself)
A 64-bit Linux kit
A gzipped tar file
For example, in the definitions file:
[ { "Role": "DM", "Count": "1", "DataVolumeSize": "50", "InstanceType": "m4.xlarge", "KitURL": "http://kits.acme.com/iris/2019.4.0/unix/IRIS-2019.4.0.792.0-lnxrhx64.tar.gz" }, { "Role": "AM", "Count": "2", "StartCount": "2", "LoadBalancer": "true", "KitURL": "http://kits.acme.com/iris/2019.4.0/unix/IRIS-2019.4.0.792.0-lnxrhx64.tar.gz" } ]
In the defaults file:
{ "Containerless": "true", "KitURL": "http://kits.acme.com/iris/2019.4.0/unix/IRIS-2019.4.0.792.0-lnxrhx64.tar.gz" "Provider": "AWS", "Label": "Acme", "Tag": "TEST" "LicenseDir": "/Samples/license/", "Credentials": "/Samples/AWS/sample.credentials", ... }
The KitURL can be a reference to a local file copied to the provisioned nodes, which may be convenient under some circumstances. For example, you can include this KitURL in the defaults file:
"KitURL": "file://tmp/IRIS-2019.4.0.792.0-lnxrhx64.tar.gz"
and use the icm scp command to copy the kit to the provisioned nodes before executing the icm install command, for example:
icm scp -localFile IRIS-2019.4.0.792.0-lnxrhx64.tar.gz -remoteFile /tmp
When you execute the icm install command, ICM installs InterSystems IRIS from the specified kit on each applicable node, resulting in output like the following:
Downloading kit on Acme-DM-TEST-0001... Downloading kit on Acme-AM-TEST-0002... Downloading kit on Acme-AM-TEST-0003... ...downloaded kit on Acme-AM-TEST-0002 ...downloaded kit on Acme-AM-TEST-0003 ...downloaded kit on Acme-DM-TEST-0001 Installing kit on Acme-AM-TEST-0003... Installing kit on Acme-DM-TEST-0001... Installing kit on Acme-AM-TEST-0002... ...installed kit on Acme-AM-TEST-0002 ...installed kit on Acme-DM-TEST-0001 ...installed kit on Acme-AM-TEST-0003 Starting InterSystems IRIS on Acme-DM-TEST-0001... Starting InterSystems IRIS on Acme-AM-TEST-0002... Starting InterSystems IRIS on Acme-AM-TEST-0003... ...started InterSystems IRIS on Acme-AM-TEST-0002 ...started InterSystems IRIS on Acme-AM-TEST-0003 ...started InterSystems IRIS on Acme-DM-TEST-0001 Management Portal available at: http://172.16.110.14:52773/csp/sys/UtilHome.csp
You can use the UserCPF field and a CPF merge file to install multiple instances with different configuration settings from the same kit; for more information, see Deploying with Customized InterSystems IRIS Configurations in the “ICM Reference” chapter.
Reinstalling InterSystems IRIS
To make the containerless deployment process as flexible and resilient as possible, the icm install command is fully reentrant — it can be issued multiple times for the same deployment. In this regard it is similar to the icm run command, as described in Redeploying Services in the “Using ICM” chapter.
When an icm install command is repeated, ICM stops and uninstalls the installed instances, then installs InterSystems IRIS from the specified kit again. You might want to repeat the command for one of the following reasons:
Reinstalling the existing instances.
To replace the installed InterSystems IRIS instances with new ones from the same kit, simply repeat the original icm run command that first deployed the containers. You might do this if you have made a change in the definitions files that requires reinstallation, for example you have updated the licenses in the directory specified by the LicenseDir field.
Installing InterSystems IRIS on nodes you have added to the infrastructure, as described in Reprovisioning the Infrastructure.
When you repeat an icm install command after adding nodes to the infrastructure, instances on the existing nodes are reinstalled as described in the preceding, while new instances are installed on the new nodes. This allows the existing nodes to be reconfigured for the new deployment topology, if necessary.
Overcoming deployment errors.
If the icm install command fails on one or more nodes due to factors outside ICM’s control, such as network latency or interruptions, you can issue the command again; in most cases, deployment will succeed on repeated tries. If the error persists, however, it may require manual intervention — for example, if it is caused by an error in one of the configuration files — before you issue the command again.
Uninstalling InterSystems IRIS
The icm uninstall command, which does not exist in container mode, is used in containerless mode to stop and uninstall all InterSystems IRIS instances in the deployment (without options). You can use the -role and -machine options, as usual, to limit the command to a specific role or node. For example,
icm uninstall
uninstalls InterSystems IRIS on all nodes in the deployment, while
icm uninstall -role AM
uninstalls InterSystems IRIS on the AM nodes only.
Additional Containerless Mode Commands
Several container mode commands work in the same way, or an analagous way, in containerless mode, including use of the -machine and -role options, as follows:
icm ssh, icm scp, icm session, icm sql
The behavior of these commands is identical in container mode and containerless mode.
The columns included in icm ps output in containerless mode are shown in the following example:
# icm ps -json Machine IP Address Instance Kit Status Health ------- ---------- -------- --- ------ ------ Acme-DM-TEST-0001 54.67.2.117 IRIS 2019.4.0.792.0 running ok Acme-AM-TEST-0002 54.153.96.236 IRIS 2019.4.0.792.0 running ok Acme-AM-TEST-0003 54.103.9.388 IRIS 2019.4.0.792.0 running ok
Copy code to clipboardThe Instance field provides the name of each instance (in a container provided by InterSystems this is always IRIS) and the Kit field the kit from which it was installed. Values for Status include running, down, and sign-on inhibited; values for Health include ok, warn, and alert.
Note:When the icm ps command is used prior to the icm install command in a containerless mode deployment, the Status field displays the value not installed.
The icm stop and icm start commands execute the iris stop and iris start commands (see Controlling InterSystems IRIS Instances in the “Using Multiple Instances of InterSystems IRIS” chapter of the System Administration Guide) on all InterSystems IRIS instances or the specified instance(s).
In containerless mode, icm upgrade does the following:
Downloads the InterSystems IRIS kit specified by the KitURL field.
Stops the current InterSystems IRIS instance using iris stop.
Uninstalls the current InterSystems IRIS instance.
Installs the InterSystems IRIS kit specified by KitURL.
Starts the newly-installed InterSystems IRIS instance using iris start.
The following shows output from the icm upgrade command in containerless mode:
# icm ps Machine IP Address Instance Kit Status Health ------- ---------- -------- --- ------ ------ Acme-DM-TEST-0001 54.67.2.117 IRIS 2019.4.0.792.0 running ok Acme-AM-TEST-0002 54.153.96.236 IRIS 2019.4.0.792.0 running ok Acme-AM-TEST-0003 54.103.9.388 IRIS 2019.4.0.792.0 running ok # icm upgrade Downloading kit on Acme-DM-TEST-0001... Downloading kit on Acme-AM-TEST-0002... Downloading kit on Acme-AM-TEST-0003... ...downloaded kit on Acme-AM-TEST-0002 ...downloaded kit on Acme-AM-TEST-0003 ...downloaded kit on Acme-DM-TEST-0001 Stopping InterSystems IRIS on Acme-DM-TEST-0001... Stopping InterSystems IRIS on Acme-AM-TEST-0003... Stopping InterSystems IRIS on Acme-AM-TEST-0002... ...stopped InterSystems IRIS on Acme-DM-TEST-0001 ...stopped InterSystems IRIS on Acme-AM-TEST-0002 ...stopped InterSystems IRIS on Acme-AM-TEST-0003 Uninstalling InterSystems IRIS on Acme-AM-TEST-0003... Uninstalling InterSystems IRIS on Acme-DM-TEST-0001... Uninstalling InterSystems IRIS on Acme-AM-TEST-0002... ...uninstalled InterSystems IRIS on Acme-DM-TEST-0001 ...uninstalled InterSystems IRIS on Acme-AM-TEST-0002 ...uninstalled InterSystems IRIS on Acme-AM-TEST-0003 Installing kit on Acme-AM-TEST-0002... Installing kit on Acme-DM-TEST-0001... Installing kit on Acme-AM-TEST-0003... ...installed kit on Acme-AM-TEST-0002 ...installed kit on Acme-DM-TEST-0001 ...installed kit on Acme-AM-TEST-0003 Starting InterSystems IRIS on Acme-DM-TEST-0001... Starting InterSystems IRIS on Acme-AM-TEST-0002... Starting InterSystems IRIS on Acme-AM-TEST-0003... ...started InterSystems IRIS on Acme-AM-TEST-0002 ...started InterSystems IRIS on Acme-AM-TEST-0003 ...started InterSystems IRIS on Acme-DM-TEST-0001 # icm ps Machine IP Address Instance Kit Status Health ------- ---------- -------- --- ------ ------ Acme-DM-TEST-0001 54.67.2.117 IRIS 2019.4.1.417.0 running ok Acme-AM-TEST-0002 54.153.96.236 IRIS 2019.4.1.417.0 running ok Acme-AM-TEST-0003 54.103.9.388 IRIS 2019.4.1.417.0 running ok
Copy code to clipboardAfter upgrade, you may want to update the value of KitURL in your defaults or definitions file to reflect the upgrade.