IBM / ansible-role-infosvr

Ansible role for automating the deployment of IBM InfoSphere Information Server
Apache License 2.0
15 stars 12 forks source link
ansible ansible-role information-server

ansible-role-infosvr

Ansible role for automating the deployment of an IBM InfoSphere Information Server environment, both versions 11.5 and 11.7, including:

and the following modules of Enterprise Edition, which can be disabled through the variables described below (eg. if not entitled to use them or you do not want to install / configure them):

Currently the deployment only caters for DB2 as the back-end, though works for both installing and configuring the bundled DB2 as well as configuring a pre-existing DB2. Either a full WebSphere Application Server Network Deployment configuration or a WebSphere Liberty Profile configuration will be installed (see variables below for more details); currently the role is not able to configure a pre-existing WebSphere installation.

New to Ansible? This simple introduction might help.

Requirements

Role Variables

See defaults/main.yml for inline documentation, and the example below for the main variables needed. The defaults file contains the default settings you would find for a vanilla v11.7 installation already, so you only need to override those variables for which you do not wish to use the default (ie. passwords for users).

The minimal variables that likely need to be overridden are as follows:

Finally, the various credentials variables should be overridden to create a sufficiently secure environment. Searching for _upwd_ will reveal all of the password variables in the defaults/main.yml that you will want to override. (And feel free to replace this with references to other variables which are themselves further secured through an Ansible vault.)

Dependencies

The configuration of Information Analyzer makes use of the IBM.infosvr-metadata-asset-manager role indirectly, using the import_role directive. This role has not been listed as an explicit dependency to avoid circular dependencies, but it should be installed if you plan to configure Information Analyzer.

Example Playbook

The following example playbook will do a complete installation and configuration of IBM InfoSphere Information Server using the default parameters from defaults/main.yml (and any overrides you've placed in eg. group_vars/all.yml). Note that because the entire installation is done across multiple tiers by this single role, you should use any_errors_fatal to avoid partial install / configuration of a tier in the event an earlier step fails on a different tier.

---

- name: install and configure IBM InfoSphere Information Server
  hosts: all
  any_errors_fatal: true
  roles:
    - IBM.infosvr
  pre_tasks:
    - name: update all OS-level packages
      yum:
        state: latest
        name: '*'
        exclude: docker*,kubelet*,kubectl*,kubeadm*
      become: yes
      when: ('ibm_information_server_clients' not in group_names)

The pre-tasks ensure that all OS-level packges are up-to-date before beginning the installation.

Expected Inventory

The following groups are expected in the inventory, as they are used to distinguish where various components are installed. Of course, if you want to install multiple components on a single server this can be done by simply providing the same hostname under each group. In the example below, for instance, the repository and domain tiers are both placed on 'serverA' while the engine tier will be installed separately on 'serverB' and the Unified Governance tier is also given its own system 'serverC'.

[ibm_information_server_repo]
# Linux host where the repository tier (database) should be installed (DB2)
serverA.somewhere.com

[ibm_information_server_domain]
# Linux host where the domain (services) tier should be installed (WebSphere)
serverA.somewhere.com

[ibm_information_server_engine]
# Linux host where the engine tier should be installed
serverB.somewhere.com

[ibm_information_server_clients]
# Windows host where the client applications should be installed, and a Metadata Interchange Server configured for Windows-only brokers / bridges
client.somewhere.com

[ibm_information_server_ug]
# Linux host where the v11.7+ Unified Governance tier shuold be installed (kubernetes)
serverC.somewhere.com

[ibm_information_server_external_db]
# Linux host that holds a pre-existing database into which to deploy XMETA, etc -- if no host provided, or this group is missing entirely, will install the bundled DB2 onto ibm_information_server_repo server
serverD.somewhere.com

[ibm_cognos_report_server]
# Linux host where a pre-existing Cognos BI installation exists (for Information Governance Dashboard)
cognos.somewhere.com

[ibm_bpm]
# Linux host where a pre-existing BPM installation exists (currently unused)
bpm.somewhere.com

As with any Ansible inventory, sufficient details should be provided to ensure connectivity to the servers is possible (see http://docs.ansible.com/ansible/latest/intro_inventory.html#list-of-behavioral-inventory-parameters).

Tags

Installing patches

The role is intended to also be able to keep an installed environment up-to-date with patches and system packages. To apply patches, simply enter the relevant details into the files under vars/patches/[server|client]/<version>/<date>.yml. For example, fixes for v11.7.1.0 server-side should go into vars/patches/server/11.7.1.0/<date>.yml while fixes for v11.7.0.2 client-side go into vars/patches/client/11.7.0.2/<date>.yml, where <date> is the date on which the patch was released. Generally these are kept up-to-date within GitHub based on the availability of major patches in Fix Central; but should you wish to apply an interim fix or other that is not already in the list, simply follow the instructions below.

For example:

ibm_infosvr_patch_definition:
  name: is11700_ServicePack2_ug_services_engine_linux64
  srcFile: servicepack_11.7_SP2_linux64_11700.tar.gz
  pkgFile: servicepack_11.7_SP2_linux64_11700.ispkg
  versionId: servicepack_SP2_IS117_11700
  tiers:
    - domain
    - engine

JDK updates can also be included under vars/patches/jdk/[server|client]/<major>/latest.yml, where <major> is the major release version (11.5 or 11.7). In both cases, a single dictionary named ibm_infosvr_jdk_definition should be used to define the JDK information.

For 11.5 the following keys are needed:

For 11.7 the following keys are needed:

These JDK updates are not a list, but a simple dictionary -- because each update will overwrite the previous update, you should only ever need to list the latest version of the JDK you wish to apply.

To run through an update, use the update tag as follows:

ansible-playbook [-i hosts] [site.yml] --tags=update

This will apply any patches listed in the vars/patches... files for your particular release that have not already been applied. The patches are applied in sorted order, based on the date on which they were released (oldest first). It will not however update any system-level packages for the operating system: if this is desired, ensure your broader playbook takes care of such an update.

Environment operations

A number of tags have been provided to ease the operations of the environment, particularly when it spans multiple hosts:

Re-usable tasks

The role also includes the following re-usable tasks, meant for inclusion in other roles that need to make use of the characteristics of the Information Server installation without necessarily running through all of the installation steps themselves.

setup_vars.yml

The configuration variables used in deploying an Information Server environment can be retrieved later by using the setup_vars.yml set of tasks, for example by including the following play in your playbook:

---

- name: setup Information Server vars
  hosts: all
  tasks:
    - import_role: name=IBM.infosvr tasks_from=setup_vars.yml

get_certificate.yml

The root SSL certificate of the domain tier of an Information Server environment can be retrieved later by using the get_certificate.yml set of tasks, for example by including the following play in your playbook:

---

- name: setup Information Server vars
  hosts: all
  tasks:
    - import_role: name=IBM.infosvr tasks_from=setup_vars.yml
    - import_role: name=IBM.infosvr tasks_from=get_certificate.yml

Note that this set of tasks depends on the setup_vars.yml being run already as well, so it may be worth including them in the same play (as in the example above). The domain tier's SSL certificate will be stored into cache/__ibm_infosvr_cert_root.crt relative to the path where the playbook is executing on the control machine.

License

Apache 2.0

Author Information

Christopher Grote