Giter Site home page Giter Site logo

hcl-tech-software / connections-automation Goto Github PK

View Code? Open in Web Editor NEW
17.0 12.0 31.0 1.21 MB

Deployment and upgrade automation scripts for HCL Connections 7.0 based on Ansible

License: Apache License 2.0

JavaScript 17.67% Shell 12.72% Ruby 1.90% Jinja 62.70% Python 4.86% CSS 0.16%
connections automation

connections-automation's Introduction

HCL Connections and Component Pack Deployment Automation Framework

The goal of the HCL Connections and Component Pack Deployment Automation Framework is to provide a solid foundation that can be readily adapted and customized to suit a customer’s unique Connections deployment requirements. This framework is used by the Connections team for internal deployments and can be used as an accelerator to reduce the overhead of deploying a connections environment.

Connections development is committed to ensuring its ongoing maintenance and periodic updates of this repository, which are typically synchronized with each new CR release. Additionally, we aim to maintain a consistent review schedule for pull requests (PRs) in alignment with these update cycles.

Before you start, please be sure to check out Frequently Asked Questions.

For HCL Connections 8 dependencies this means that:

  • Database will be installed (IBM DB2, Oracle or Microsoft SQL Server), configured as per Performance tunning guide for HCL Connections, and license applied. Please note: the license, the same one from FlexNet, will be applied only to IBM DB2 v11.5. If you want to learn more about using HCL Connections with different database backends, please check out this document.
  • HCL Connections Wizard will populate the database with needed schemas and grants.
  • If needed for demo or even production purposes, OpenLDAP will be spun up and seeded with some demo users. OpenLDAP will be spun up with SSL enabled, as needed later for setting up IBM WebSphere Application Server properly.
  • IBM TDI will be installed, configured, and run to populate profiles database in IBM DB2 with users from OpenLDAP
  • IBM Installation Manager will be set up on the nodes where IBM WebSphere Application Server Network Deployment needs to be installed.
  • IBM WebSphere Application Server Network Deployment will be set up where needed. Currently we tested it with Fixpack 24. By default, FP24 is going to be installed. Deployment manager and nodeagents profiles are going to be created, application security enabled, TLS certificated imported from LDAP, LDAP configured up to the point where it is ready to install HCL Connections 8.
  • IBM HTTP Server is going to be installed, patched with the same fixpack as IBM WebSphere Application Server, and added to the deployment manager.
  • NFS server will be installed, including master and clients configurations and proper folders set.

For HCL Connections 8 itself it means:

  • The script will mount NFS shares needed for the shared data and message stores where needed.
  • Install and configure database (currently IBM DB2 and Oracle are supported)
  • HCL Connections 8 will be downloaded and installed. Any type of layout is supported and customizable.
  • In LotusConnections-config.xml dynamicHost will be updated.
  • Optionaly, Prometheus JMX exported will be enabled for all HCL Connections clusters.
  • Moderation will be installed and optionally it can be enabled as well.
  • In case of upgrades, it will clean up temp folders to prevent possible issues with UI post upgrade.
  • All or some (or none) clusters will be started automatically.
  • IBM HTTP Server plugins will get generated and propagated
  • IBM HTTP Server's httpd.conf will be generated ready to support Component Pack integrations.
  • Needed post installation tasks on IBM WebSphere Application Server, like setting up properly session management and single sign on will be also handled.

For Component Pack for HCL Connections 8 it means:

  • Nginx will be set up and configured to support Customizer.
  • Haproxy will be set up configured to be the control plane for Kubernetes cluster and Component Pack.
  • NFS will be set up for Component Pack.
  • Containerd(container runtime) v1.4.12 will be installed with the optimisations required by the version of Kubernetes.
  • Kubernetes 1.27.0 will be set up.
  • Component Pack will be set up by default using latest community Kubernetes Ingress, Grafana and Prometheus for monitoring out of the box.
  • Post installation tasks needed for configuring Component Pack and the WebSphere-side of Connections to work together are also going to be executed, including enabling searches and Metrics using OpenSearch.

Requirements:

  • Ansible 2.9 installed on your machine
  • SSH access (passwordless makes stuff easier, but not mandatory) to the machine(s) you want to provision. Be sure that key forwarding is properly set on your controller and on all machines that you plan to manage with.
  • Your user (or any user used for the purposes of provisioning) having passwordless sudo acces on the nodes being provisioned.

To learn more about how to install Ansible on your local machine or Ansible controller, please check out official Ansible documentation.

Supported OSs:

  • CentOS 7+
  • RHEL 9

NOTE: Recommended OS for this automation is CentOS 7.9/RHEL 9. All HCL Connections, Docs and Component Pack builds are done on CentOS 7.9/RHEL 9. While it is being tested, in different scenarios, using version 8+ on CentOS you may hit different issues that are eventually not being tested.

Have files ready for download

To be able to use this automation you will need to be able to download the packages.

The suggestion is to have them all downloaded in a single location, and for this you would need at least 50G of disk space. Run a small HTTP server just to be able to serve them, it can be as simple as a single Ruby one liner to open web server on specific port so that automation can connect and download it.

Note: There is a known issue in IBM WebSphere 8.5.5 Fixpack 22 where retrieve from port using TLS v1.3 or v1.2 ciphers may not work. See PH49497: RETRIEVE FROM PORT NOT HONORING SSL PROTOCOL for details. The problem is fixed in Fixpack 23. If Fixpack 22 is needed, contact HCL Connections support or IBM WebSphere support for the iFix 8.5.5.22-WS-WAS-IFPH49497.zip and put it in the was855FP22 directory as the example below.

This is the example data folder structure we are following at HCL. Please refer to FlexNet when verifying the size and timestamps of the packages.

[root@c7lb1 packages]# ls -la *
Connections6.5CR1:
-rw-r--r--   1 root       root            82208 Nov  2  2021 65cr1-database-updates.zip
-rw-r--r--   1 sabrinayee sabrinayee 1345343235 Mar  2  2022 CFix.65CR1.XXXX-IC6.5.0.0_CR1-Common-Fix.jar
-r-xr-xr-x.  1 root       root       1720553596 Nov  2  2021 HC6.5_CR1.zip
-rw-rw-r--   1 pnott      pnott        38266880 Oct 18  2021 tdisol_65CR1_java8.tar
-rw-r--r--   1 sabrinayee sabrinayee   37959680 Mar  2  2022 tdisol_65CR1_java8_linux_XXXX.tar

Connections7:
-rw-r--r--   1 sabrinayee sabrinayee 1410458423 May  9 14:48 CFix.70.XXXX-IC7.0.0.0-Common-Fix.jar
-r-xr-xr-x.  1 root       root       2001305600 Jan 20  2021 HCL_Connections_7.0_lin.tar
-r-xr-xr-x.  1 root       root        817807360 Oct 29  2020 HCL_Connections_7.0_wizards_lin_aix.tar
-rw-r--r--.  1 root       root        125556954 Feb  4  2021 LO100079-IC7.0.0.0-Common-Fix.jar
-rw-rw-r--   1 pnott      pnott        66176887 Aug 16  2021 TinyEditorsForConnections7.0_XXXXXX_vX.X.X.XX.zip
-rw-rw-r--   1 pnott      pnott        37928960 Feb 25  2022 tdisol_70_java8_linux_XXXX.tar
-rwxr--r--.  1 root       root        185705657 May  6  2021 updateInstaller.zip
-rw-rw-r--   1 pnott      pnott        10834989 Aug  4  2022 sharedlib.zip

Connections8:
-r-xr-xr-x   1 root root  2172108800 Aug 22 05:20 HCL_Connections_8.0_lin.tar
-r-xr-xr-x   1 root root          66 Aug 22 05:20 HCL_Connections_8.0_lin.tar.sha256
-r-xr-xr-x   1 root root   661821440 Aug 22 05:20 HCL_Connections_8.0_wizards_lin_aix.tar
-r-xr-xr-x   1 root root          66 Aug 22 05:20 HCL_Connections_8.0_wizards_lin_aix.tar.sha256
-r-xr-xr-x   1 root root             Apr 10 16:41 HC8.0_CR6.zip

DB2:
-rw-r--r--.  1 dmenges dmenges    3993254 Oct 16 13:13 DB2_ESE_AUSI_Activation_11.5.zip
-rw-r--r--.  1 dmenges orion    250880000 Jun  3 10:48 v11.5.6_jdbc_sqlj.tar.gz
-rw-r--r--.  1 dmenges orion   1861783964 Apr 23  2020 v11.5.6_linuxx64_universal_fixpack.tar.gz

Docs:
-r-xr-xr-x.  1 root orion 737753769 Sep  7  2020 HCL_Docs_v202.zip

MSSQL:
-rw-r--r--.  1 dmenges dmenges  838550 Mar  1 10:01 sqljdbc_4.1.8112.200_enu.tar.gz
-rw-r--r--.  1 dmenges dmenges 2186950 Mar  1 10:01 sqljdbc_6.0.8112.200_enu.tar.gz

Oracle:
-rwxr--r--.  1 root       root       3059705302 Jan 25 15:12 LINUX.X64_193000_db_home.zip
-rw-r--r--.  1 sabrinayee sabrinayee    3397734 Feb 18 21:54 ojdbc7.jar
-rw-r--r--.  1 sabrinayee sabrinayee    4036257 Feb 18 21:54 ojdbc8.jar

TDI:
-r-xr-xr-x.  1 root orion  76251327 May  6  2020 7.2.0-ISS-SDI-FP0006.zip
-r-xr-xr-x.  1 root orion 644894720 Apr 30  2020 SDI_7.2_XLIN86_64_ML.tar
-rw-r--r--   1 sabrinayee sabrinayee 130165047 Sep  8 19:40 ibm-java-jre-8.0-6.25-linux-x86_64.tgz

cp:
-rw-r--r--   1 sabrinayee sabrinayee 5550666926 Mar  7  2022 ComponentPack_7.0.0.2.zip

was855:
-rw-r--r--.  1 dmenges orion 1025869744 Apr 23  2020 8.0.5.17-WS-IBMWASJAVA-Linux.zip
-rw-r--r--.  1 root    root  1022054019 Oct 21  2020 8.0.6.15-WS-IBMWASJAVA-Linux.zip
-rw-r--r--.  1 dmenges orion  135872014 Apr 23  2020 InstalMgr1.6.2_LNX_X86_64_WAS_8.5.5.zip
-rw-r--r--.  1 dmenges orion 1054717615 Apr 23  2020 WAS_ND_V8.5.5_1_OF_3.zip
-rw-r--r--.  1 dmenges orion 1022550691 Apr 23  2020 WAS_ND_V8.5.5_2_OF_3.zip
-rw-r--r--.  1 dmenges orion  902443241 Apr 23  2020 WAS_ND_V8.5.5_3_OF_3.zip
-rw-r--r--.  1 dmenges orion  976299561 Apr 23  2020 WAS_V8.5.5_SUPPL_1_OF_3.zip
-rw-r--r--.  1 dmenges orion 1056708869 Apr 23  2020 WAS_V8.5.5_SUPPL_2_OF_3.zip
-rw-r--r--.  1 dmenges orion  998887246 Apr 23  2020 WAS_V8.5.5_SUPPL_3_OF_3.zip
-rw-r--r--.  1 root    root   215292676 Aug 12  2020 agent.installer.linux.gtk.x86_64_1.9.1003.20200730_2125.zip

was855FP24:
-rw-r--r-- 1 sabrinayee sabrinayee 1091490712 Oct 24 11:35 8.5.5-WS-WAS-FP024-part1.zip
-rw-r--r-- 1 sabrinayee sabrinayee  198883257 Oct 24 11:35 8.5.5-WS-WAS-FP024-part2.zip
-rw-r--r-- 1 sabrinayee sabrinayee 1975961319 Oct 24 11:35 8.5.5-WS-WAS-FP024-part3.zip
-rw-r--r-- 1 sabrinayee sabrinayee  528827632 Oct 24 11:35 8.5.5-WS-WASSupplements-FP024-part1.zip
-rw-r--r-- 1 sabrinayee sabrinayee  783773739 Oct 24 11:36 8.5.5-WS-WASSupplements-FP024-part2.zip
-rw-r--r-- 1 sabrinayee sabrinayee 1975961319 Oct 24 11:36 8.5.5-WS-WASSupplements-FP024-part3.zip
-rw-r--r-- 1 sabrinayee sabrinayee  301473547 Oct 24 11:36 8.5.5-WS-WCT-FP024-part1.zip
-rw-r--r-- 1 sabrinayee sabrinayee 1979434838 Oct 24 11:37 8.5.5-WS-WCT-FP024-part2.zip

Of course, you can drop it all to a single folder, or restructure it whatever way you prefer.

Refer to this inventory how to override the default WebSphere installation file names.

Inventory files

Inventory files live in environments folder. To keep things simple, there are two files (you can break it to more if you want, it's up to you):

  • inventory.ini which has all FQDNs of the hosts in different groups
  • group_vars/all.yml with the variables you can customize.

We strongly recommend using the current model for handling variables. However, if you still want to stick with the old model, the only thing you need to add is cnx_was_servers group to your old connections inventory file. Otherwise, it is backwards compatible.

SSH User

If you run the Ansible playbooks from a Mac or Linux host, you need to specify the remote_user for the SSH connection, or it will default to your local username.

Edit ansible.cfg and remove the comment # from the line and set your user:

# remote_user = root

Example:

remote_user = sysadmin

The ansible.cfg allows a lot of settings, see the example file at https://github.com/ansible/ansible/blob/devel/examples/ansible.cfg and it can stay in the root of your Ansible project, or can be placed in ~/.ansible.cfg, then it will work for all of your Ansible projects.

Supported layouts

Those scripts should be able to support both single node installations and HA environments, specifically:

  • We tested with a single WAS node (DMGR, IHS, and Node agent co-located)
  • We tested with a proper distributed WAS (two separate WAS nodes, two separate IHSs behind internal load balancer, DMGR on a dedicated machine)
  • Kubernetes can be single node installation or any type of HA. Scaling is also supported by those scripts (you can add new masters or workers if you created your Kubernetes environment using those scripts in the first place).

Cache folders

Running those scripts specifically for Component Pack will create two cache folders:

  • /tmp/k8s_cache and
  • /home/${YOURUSER}/generated_charts

The second one will have all the values generated when running Helm installs. Those value files are used by Helm to install Component Pack. Values you see inside are coming from a variables inside your automation.

Setting up HCL Connections with its dependencies

This scenario is useful in multiple cases:

  • If you want to spin up a demo environment where you want to be able to quickly log in and start using it
  • If you want to spin up a production ready environment that you know will work, see it work, and then start replacing component by component (like switching/adding LDAP servers, switching databases, etc).
ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/setup-connections-complete.yml

Running this playbook will:

  • Setup database (IBM DB2 or Oracle) with HCL Connections Wizards on top
  • Install OpenLDAP and populate it with a number of fake user, one of them being the HCL Connections admin user
  • Set and execute IBM TDI to popule PeopleDB with LDAP users
  • Install IBM WebSphere Application Server Network Deployment and IBM HTTP Server and configure it properly
  • Install HCL Connections on top of that

You can, of course, run those steps separately.

Setting up IBM DB2

To install JDBC drivers for DB2 on WAS nodes for example, please set:

setup_db2_jdbc: True

To install IBM DB2 only, execute:

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/third_party/setup-db2.yml

This will install IBM DB2 on a Linux server, tune the server and IBM DB2 as per Performance tunning guide for HCL Connections, and apply the licence.

In case IBM DB2 was already installed nothing will happen, the scripts will just ensure that everything is as expected. JDBC drivers will be only installed if the variable mentioned above is also set.

Setting up Oracle database

To install JDBC drivers for Oracle on WAS nodes for example, please set:

setup_oracle_jdbc: True

To install Oracle 19c only, execute:

ansible-playbook -i environments/examples/cnx8/oracle/inventory.ini playbooks/third_party/setup-oracle.yml

Running this playbook will set up the prerequisites for Oracle 19c (like setting up big enough swap on the node dedicated for Oracle database) but it will also set up the JDBC for HCL Connections and HCL Connections Docs.

JDBC drivers for Oracle will be only installed if you have setup_oracle_jdbc set to true as mentioned above.

Installing HCL Connections Wizards

This requires the database already being set. To create the databases and apply the grants, execute:

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/hcl/setup-connections-wizards.yml

If databases already exist, this script will execute runstats and rerogs on all the databases by default on each consecutive run.

If you want to recreate the databases, uncomment:

#cnx_force_repopulation: True

If you want to run database migration scripts, uncomment:

#db_enable_upgrades: True

in your inventory file. This will then drop all the databases and recreate them again. Don't forget to run TDI afterwards. Be sure to comment it again once you do it.

Setting up OpenLDAP with SSL and amount of fake users

To install OpenLDAP with SSL enabled and generate fake users, execute:

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/third_party/setup-ldap.yml

You can turn on or off creating any of fake users by manipulating:

setup_fake_ldap_users: True

If you are creating them, you can manipulate the details using next set of variables:

ldap_nr_of_users: 2500
ldap_userid: "fakeuser"
ldap_user_password: "password"
ldap_user_admin_password: "password"

This will create 2500 fake accounts, starting with user id 'fakeuser1' and going to 'fakeuser2499'. First of them in this case (fakeuser1) will get 'ldap_user_admin_password' set, and all others are going to get 'ldap_user_password'. On top of that, it you will get automatically 10 more users created being set as external. Be sure to set in this case one of those users as HCL Connections admin user before the Connections installation like here:

connections_admin: fakeuser1
ldap_user_mail_domain: "connections.example.com"

This comes in handy if you don't have any other LDAP server ready and you want to quickly get to the point where you can test HCL Connections. You can later replace this LDAP with any other one.

Setting up IBM TDI and populating PeopleDB

To install IBM TDI, set up tdisol folder as per documentation, and migrate the users from LDAP to IBM DB2, run:

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/third_party/setup-tdi.yml

Installing and configuring IBM WebSphere Application Server only

To install IBM WebSphere Application Server, you should alraedy have either LDAP installed all LDAP data properly configured in your inventory file, in the section like this:

# This is just an example!
ldap_server: ldap1.internal.example.com
ldap_alias: ldap1
ldap_repo: LDAP_PRODUCTION1
ldap_bind_user: cn=Admin,dc=cxn,dc=example,dc=com
ldap_bind_pass: password
ldap_realm: dc=cxn,dc=example,dc=com
ldap_login_properties: uid;mail

LDAP should also have SSL enabled as IBM WebSphere Application Server is going to try to import its TLS certificate and fail if there is none.

And in the end, you need to create WebSphere user account by setting this:

was_username=wasadmin
was_password=password

To install JDBC drivers for Oracle, please set:

setup_oracle_jdbc: True

To install IBM WebSphere Application Server, IBM HTTP Server and configure it, execute:

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/third_party/setup-webspherend.yml

Preparing NFS for HCL Connections

By default, HCL Connections would use NFS for message stores and shared data. In case of single node and small demo environments, NFS is not needed, and that is also supported.

If you are going to use NFS with HCL Connections, then set it up first before you proceed with HCL Connections installation with:

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/third_party/setup-nfs.yml

Installing HCL Connections

By default, use of NFS is enabled, which means HCL Connections would try to mount the folders for shared data and message store. Note that NFS is needed if you plan to install HCL Docs later on a separate server. If you don't want it to be mounted and don't plan to install HCL Docs on a separate server, set:

skip_nfs_mount_for_connections: true

To install the WebSphere-side of HCL Connections only, on an already prepared environment (all previous steps are already done and the environment is ready for HCL Connections to be installed) execute:

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/hcl/setup-connections-only.yml

Note that installation will not start (and will inform you about that) if mandatory variables are missing.

To enable Moderation and Invites, set:

cnx_enable_moderation: true
cnx_enable_invite: true

To ensure that you don't have to pin specific offering version yourself, make sure that the next variable is set:

cnx_updates_enabled: True

You can also rewrite locations of message and shared data stores by manipulating next two variables before you hit install:

cnx_shared_area: "/nfs/data/shared"
cnx_message_store: "/nfs/data/messageStores"

Installing cFix for HCL Connections

To install iFix on already installed HCL Connections, edit your connections inventory file, and append these two lines:

ifix_apar:                                       CFix.XX.XXXX
ifix_file:                                       CFix.XX.XXXX-ICX.X.X.X-Common-Fix.jar
cnx_ifix_installer:                              "updateInstaller_XXXX.zip"

After it, run the iFix installation:

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/hcl/setup-connections-ifix.yml

Running post installation tasks

If you don't plan on installing the Component Pack and cnx_application_ingress is set to a host that can access the Connections server frontend (eg. IHS) via a browser now, run this playbook to set up some post installation bits and pieces to make the Connections deployment accessible. Otherwise, continue to the Component Pack deployment before testing the deployment.

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/hcl/connections-post-install.yml

Setting up Component Pack for HCL Connections 8 with its dependencies

To set up Component Pack, you should have the WebSphere-side of Connections already up and running and be able to log in successfully.

Follow the steps in Installing MongoDB 5 for Component Pack till the point the image is imported into containerd. This is a manual step.

Access to the HCL Harbor registry is needed to install the Component Pack. You can provide the Harbor credentials (and Quay credentials if enabling Huddo Boards) as environment variables.

export HARBOR_USERNAME=<<Harbor username>>
export HARBOR_SECRET=<<Harbor password>>

export QUAY_USERNAME=<<Quay username>>
export QUAY_SECRET=<<Quay password>>

Then add Harbor variables to the inventory files as below

component_pack_helm_repository:                  https://hclcr.io/chartrepo/cnx
docker_registry_url:                             hclcr.io/cnx
docker_registry_username:                        "{{ lookup('env','HARBOR_USERNAME') }}"
docker_registry_password:                        "{{ lookup('env','HARBOR_SECRET') }}"

Then execute:

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/setup-component-pack-complete-harbor.yml

This playbook will:

  • Set up Nginx
  • Set up Haproxy
  • Set up NFS
  • Set up containerd (container runtime)
  • Set up Kubernetes
  • Install and configure Component Pack to work with Connections

By default, Component Pack will consider first node in [nfs_servers] to be your NFS master also, and by default it will consider that on NFS master, all needed folders for Component Pack live in /pv-connections. You can rewrite it with:

nfsMasterAddress: "172.29.31.1"
persistentVolumePath: "nfs"

This translates to //172.29.31.1:/nfs

Note: The Component Pack installation and configuration contains tasks with an impact on the WebSphere-side of Connections side which require restarts of WebSphere and Connections itself, and which will be executed.

Setting up Nginx

Nginx is used only as an example of a reverse proxy for the WebSphere-side of Connections and Component Pack.

To install Nginx only, execute:

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/third_party/setup-nginx.yml

Setting up Haproxy

Haproxy is used as an example load balancer. To ensure it is not trying to bind to the same ports as Nginx, by default, it is going to use non standard ports (81 and 444).

If you want to change the default ports (81 and 444) edit your all.yml and set up those two variables to different values:

main_port: '81'
main_ssl_port: '444'

To install Haproxy only, execute:

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/third_party/setup-haproxy.yml

Setting up NFS

If you are setting up your own NFS, execute:

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/third_party/setup-nfs.yml

This will set up the NFS master, create and export needed folders for Component Pack components, and set up the clients so they can connect to it.

By default, NFS master will export the folders for its own network. If you want to change the netmask, be sure to set for example:

nfs_export_netmask: 255.255.0.0

Setting up containerd (container runtime)

This will install containerd.io and Configure containerd.

To set it up, execute:

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/third_party/setup-containerd.yml

Setting up Kubernetes

This will install Kubernetes, set up kubectl and Helm and make the Kubernetes cluster ready for Component Pack to be installed. However, this is really a minimum way of installing a stable Kubernetes using kubeadm. We do advice using more battle-proven solutions like kubespray or kops (or anything else) for production-ready Kubernetes clusters.

Desired kubernetes version can be set using

kubernetes_version

This set of automation will install by default 1.27.0 and should be always able to install the Kubernetes versions supported by Component Pack.

To install Kubernetes, execute:

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/third_party/kubernetes/setup-kubernetes.yml

Setting up kubectl for your user

If the cluster is already created, and you only want to set up kubectl for your own user, just run:

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/third_party/kubernetes/setup-kubectl.yml

Setting up Component Pack without Haproxy

If you don't want to use Haproxy (if you simply don't need it), then you can use this playbook:

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/setup-component-pack-complete-development-harbor.yml

It will do exactly the same as playbooks/setup-component-pack-complete-harbor.yml but it will not setup Haproxy.

Running post installation tasks

Once your Component Pack installation is done, run this playbook to set up some post installation:

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/hcl/connections-post-install.yml

Troubleshooting

For each machine that is going to be used in any capacity with those scripts, ensure that:

  • You run yum/dnf update before you start doing anything (there are multiple components that can fail installing if you don't do this)
  • You have user accounts created
  • DNS is properly set and reverse DNS works fine in any direction
  • You have proper network and internet access where needed (no firewall issues etc)
  • Machine hostnames are set properly (there are multiple components that can fail installing if this is not the case)

As a rule of thumb, be sure that:

  • User that is running Ansible can SSH into all the servers mentioned inside your inventory files.
  • User that is running Ansible have passwordless sudo access on all the servers mentioned inside your inventory files.
  • User that is running Ansible has key forwarding enabled. Automation will try to SSH from one machine to another to execute specific tasks, run rsync etc. which can fail if key forwarding is not properly configured.
  • Ansible is using Python. It can happen that something doesn't work as expected in your own scenario, depending on OS level, changes in distribution, etc.

If you run into a problem while running a playbook, examine the output to determine the specific command that is failing. It is often best to try to manually run this command and to troubleshoot the specific problem before trying to run the playbook again. Based on this investigation, you'll either resolve the problem that prevented the step from completing, or you will have successfully run the command manually. You can then run the playbook again and it will either complete the step or skip the step if no further work is needed.

HCL Connections Docs Automation Scripts

This set of scripts is able to spin up end-to-end HCL Connections Docs on top of an existing HCL Connections deployed by the ansible scripts described above.

For HCL Connections Docs dependencies this means that:

  • HCL Docs database will be created with needed user, schemas and grants.
  • WebSphere application clusters will be created for each Docs components.
  • WebSphere Job Manager targets will be created for Docs and Conversion nodes, Deployment Manager and Web Server.

For HCL Connections Docs itself it means:

  • The script will mount NFS shares needed for the HCL Connections shared data, Docs data and Viewer data.
  • HCL Docs installation kit will be downloaded. Document Format Conversion, Editor and Viewer applications, Editor and Viewer Extensions, Editor Proxy Filter will be installed.
  • IBM HTTP Server plugins will be re-generated and propagated to the web servers.
  • All clusters will be started automatically at the end of the install.

Requirements:

  • HCL Connections has been installed using the Ansible script describe above.

Have files ready for download

Installing HCL Connections Docs

To install HCL Connections Docs, after adjusting your inventory files, execute:

ansible-playbook -i environments/examples/cnx8/db2/inventory.ini playbooks/hcl/setup-connections-docs.yml

HCL Connections Docs Troubleshooting

  • If HCL Connections Docs configuration adjustment is needed after the install, it can be done in /opt/IBM/WebSphere/AppServer/profiles/Dmgr01/config/cells/${CELLNAME}/IBMDocs-config on the WebSphere Deployment Manager. Make sure to do a full re-synchronize to propagate any changes to all Docs nodes.
  • If options are not available in HCL Connections Files to create Document/Spreadsheet/Presentation, follow Step#3 in documentation to check if the HCL Docs and File Viewer extensions are installed and active within HCL Connections. If the modules are not listed, on the HCL Connections server, go to {{cnx_data_path_on_cnx_server}} based on the inventory file, then go to /provision/webresources in that location to make sure the jars are there. Also, go to the WAS admin console to make sure HCLDocsProxyCluster Proxy server cluster is running.
  • If you wish to re-install a HCL Connections Docs component, first cd to /opt/HCL/<component>/installer (/opt/HCL/<component>/extension/installer for Docs or Viewer extension) then run sudo ./uninstall.sh (sudo ./uninstall_node.sh on subsequent nodes if exist, ) to uninstall the component. Delete the .success file in /opt/HCL/<component>/ then run the playbook again. It is recommended to comment out the prior steps in the playbook to save time.

Acknowledgments

This project was inspired by the Ansible WebSphere/Connections 6.0 automation done by Enio Basso. It is done in a way that it can interoperate with the mentioned project or parts of it.

License

This project is licensed under Apache 2.0 license.

Disclaimer

The code listed here is not officially supported and is solely intended to be used as-is. It serves as an accelerator for customers wishing to automate their own HCL Connections deployments and HCL Technologies Ltd would welcome any feedback. HCL Technologies Ltd does not make any warranty about the completeness, reliability and accuracy of this code. Any action you take by using this code is strictly at your own risk, and HCL Technologies Ltd will not be liable for any losses and damages in connection with the use of this code.

connections-automation's People

Contributors

andrehagemeier avatar andylwelch avatar dejo1307 avatar gyanenduprakash avatar marde16 avatar markmon-hcl avatar michaelmontani-hcl avatar mikihcl avatar nbajjuri-hcl avatar nitinjagjivan avatar sabrina-yee avatar stoeps13 avatar tsrich92 avatar ukhare avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

connections-automation's Issues

Duplicate roles

There is a role install-containerd and one install-docker
both install containerd from epel. This should be cleaned up.

updateInstaller throws "Invalid version number: Version number may be negative or greater than 255"

Hi
I installed with the main branch from last Friday and wanted to uninstall the CFix, but get following error:

[root@cnx7-rh8-was updateInstaller]# export WAS_HOME=/opt/IBM/WebSphere/AppServer/
[root@cnx7-rh8-was updateInstaller]# ./updateWizard.sh 
Start of [ ./updateWizard.sh ]
Build 20201123_1449

Attempting to locate setupCmdLine.sh

**** WAS_CELL = ConnectionsCell
**** USER_INSTALL_ROOT = /opt/IBM/WebSphere/AppServer/profiles/Dmgr01
variables.xml file [/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/config/cells/ConnectionsCell/variables.xml] can be loaded.
NEWS_HOME: null
IBM Connections Home: /opt/HCL/Connections
Xlib:  extension "RANDR" missing on display "localhost:10.0".
Exception in thread "main" java.lang.ExceptionInInitializerError
	at java.lang.J9VMInternals.ensureError(J9VMInternals.java:147)
	at java.lang.J9VMInternals.recordInitializationFailure(J9VMInternals.java:136)
	at com.ibm.icu.impl.ICUResourceBundle.<clinit>(ICUResourceBundle.java:922)
	at com.ibm.icu.impl.ZoneMeta.getSystemTimeZone(ZoneMeta.java:512)
	at com.ibm.icu.util.TimeZone.getTimeZone(TimeZone.java:598)
	at com.ibm.icu.util.TimeZone.getDefault(TimeZone.java:703)
	at com.ibm.icu.util.Calendar.getInstance(Calendar.java:1579)
	at com.ibm.lconn.wizard.update.ui.wizardPage.FixInfoWizardPage.<init>(Unknown Source)
	at com.ibm.lconn.wizard.update.ui.wizardPage.Pages.createNewPage(Unknown Source)
	at com.ibm.lconn.wizard.update.ui.wizardPage.Pages.getPage(Unknown Source)
	at com.ibm.lconn.wizard.update.ui.UpdateWizard.addPages(Unknown Source)
	at org.eclipse.jface.wizard.WizardDialog.createContents(WizardDialog.java:605)
	at org.eclipse.jface.window.Window.create(Window.java:431)
	at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1089)
	at org.eclipse.jface.window.Window.open(Window.java:790)
	at com.ibm.lconn.wizard.launcher.UpdateInstallerLauncher.main(Unknown Source)
Caused by: java.lang.IllegalArgumentException: Invalid version number: Version number may be negative or greater than 255
	at com.ibm.icu.util.VersionInfo.getInstance(VersionInfo.java:194)
	at com.ibm.icu.impl.ICUDebug.getInstanceLenient(ICUDebug.java:65)
	at com.ibm.icu.impl.ICUDebug.<clinit>(ICUDebug.java:69)
	... 14 more
End of [ ./updateWizard.sh ]

[root@cnx7-rh8-was updateInstaller]# java
-bash: java: command not found
[root@cnx7-rh8-was updateInstaller]# /opt/IBM/WebSphere/AppServer/java/jre/bin/java -version
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 8.0.6.20 - pxa6480sr6fp20ifix-20210112_01(SR6 FP20+IJ29969))
IBM J9 VM (build 2.9, JRE 1.8.0 Linux amd64-64-Bit Compressed References 20210111_463465 (JIT enabled, AOT enabled)
OpenJ9   - bbe68d9
OMR      - 6ad3a34
IBM      - b7e48f4)
JCL - 20201119_01 based on Oracle jdk8u271-b09

So the version 1.8.0_271 is counted as > 255, I got an update from Support for updateInstaller some weeks ago. So I assume that updateInstaller needs a fix.

Regards
Christoph

Ansible task to 'pause' doesn't always wait long enough, or waits when it is not needed

There are several places (33) in the ansible tasks which wait an arbitrary amount of time for the helm upgrade/install command to complete. This is inefficient and not always long enough.

For example:
image

image

These should follow the new and improved way to kubectl wait until the pod in question has started. I can see this has been done 8 times already:
image

Could you please replace the remaining pause tasks, and also considering doubling the --timeout option on the wait command.

Moving forward to modular playbooks and roles with galaxy collections?

Hi
I'm using Ansible for most of my projects since several years, so I enjoy this repo a lot, but it is hard to include the roles and playbooks into existing projects or add local roles to get specialities of an environment in the code with breaking the option to update (pull) this repository frequently or just building a pull request because of the differences.
Have you ever thought about moving this repository in Ansible Galaxy Roles and Collections, so we can add them through requirements.yml to any Ansible project? Way easier to maintain and test than having this as a mono repository.

https://docs.ansible.com/ansible/latest/user_guide/collections_using.html

Regards
Christoph

Quickstart Guide - If Connections is already installed

Discussed in #134

Originally posted by rishablearn August 27, 2021
Hi,

I have a running Connections 7 install. I would like to install Nginx / HA proxy on a separate node and the component pack on the separate node. Can I do that with the Quick Start Guide will it detect my existing Connections deployment. What changes do I need to do.

In the end I need

  1. HAProxy
  2. Connections Exisiting Install
  3. Component Pack

Variables documentation

Thanks for the new documentation about the used variables.

It looks like the last lines are duplicates, or not sorted into the right topic:

persistentVolumePath | pv-connections | Persistent volume location to be created
helm_install_dir | /opt/helm | Helm install directory
ansible_cache | /tmp/k8s_ansible | Ansible cache location
kube_dir | /root/.kube | Kubernetes directory path
docker_registry_dir | /etc/docker/registry | Docker registry directory path
kubernetes_etc_dir | /etc/kubernetes | Kubernetes directory path
etcd_dir | /var/lib/etcd | etcd directory
db2_instance_fenced_homedir | /home/db2fenc1 | Fenced user home directory
db2_instance_homedir | /home/db2inst1 | DB2 Instance owner home directory
db_installation_folder_dir | /opt/IBM/db2 | DB2 installation directory
ihs_install_location | /opt/IBM/HTTPServer | IHS installation directory
iim_install_location | /opt/IBM/InstallationManager | IIM program folder
var_ibm_base_location | /var/ibm | var IBM base location
websphere_base_location | /opt/IBM/WebSphere | Websphere base location
imshared_location | /opt/IBM/IMShared | IIM config folder
ora_rsp_oracle_base | /opt/oracle | Oracle database base location
oraclfmap_oracle_base | /opt/ORCLfmap | Oracle database ORCLfmap location
oracltab_oracle_base | /etc/oratab | Oracle database oracltab base location
orainst_oracle_base | /etc/oraInst.loc | Oracle database orainst base location
oracle_temp | /tmp/.oracle | Oracle temp folder path
nfs_master_source | /pv-connections | Persistent volume location to be deleted
cnx_message_store | /opt/HCL/MessageStore | Connections bus SIB location mount point
cnx_message_store_nfs | /nfs/data/messageStores | Connections bus SIB NFS share
cnx_shared_area | /opt/IBM/SharedArea | Connections shared data location mount point
cnx_shared_area_nfs | /nfs/data/shared | Connections shared data NFS share
customizer_js_files_mount | /mnt/customizations | Customization files mount point folder in Component Pack
viewer_data_local_path | /mnt/viewer_data | path of local location to Docs Viewer data dir, if {{ viewer_shared_storage_type }} is nfs, {{ viewer_data_remote_path }} will mount to this directory
viewer_data_remote_path | /nfs/viewer_data | NFS share of Docs Viewer data dir, {{ viewer_shared_storage_type }} must be nfs to use it
docs_data_remote_path | /nfs/docs_data | NFS share of Docs data dir, {{ docs_shared_storage_type }} must be nfs to use it
docs_data_local_path | /mnt/docs_data | path of local location to Docs data dir, if {{ docs_shared_storage_type }} is nfs, {{ docs_data_remote_path }} will mount to this directory
cnx_data_remote_path | /nfs/data/shared | NFS share of Connections data dir, {{ cnx_shared_storage_type }} must be nfs to use it
cnx_data_local_path | /mnt/cnx_data | path of local location to Connections data dir, if {{ cnx_shared_storage_type }} is nfs, {{ cnx_data_remote_path }} will mount to this directory
nfs_master_files_mount | /mnt/pv-connections | Persistent volume mount point folder in Component Pack
cnx_install_base_dir | /opt/HCL/ | Base directory of connections installation

Regards
Christoph

Harbor: docker_registry_url

The setup creates the entry for "insecure-registries": ["{{ docker_registry_url }}"],, but then the docker service is not starting.

Error message:

Nov 02 07:39:45 cnx8-ora-cp.stoeps.home dockerd[9172]: failed to start daemon: insecure registry hclcr.io/cnx is not valid: invalid host "hclcr.io/cnx"

This should be replaced with "insecure-registries": ["{{ docker_registry_url.split('/')[0] }}"], that just the hostname is set to insecure-registries. Then docker service can be started.

On the other side, I want to discuss this setting when you deploy from harbor. When we put hclcr.io to insecure registries, even when it uses a valid certificate, then you're vulnerable for man in the middle attacks, because the docker daemon does not recognize that the attacker provides a self registered certificate.

None of these shell commands are being executed - Please help urgent

Hi I have setup ansible and ssh is working without password. All the path variables are also in place. But none of these commands
shell: kubectl get namespace | grep {{ __default_namespace }}
from say /home/ansible/connections-automation-main/roles/hcl/component-pack/tasks/configure_credentials.yml
get executed.
I get this error
TASK [component-pack : Check if namespace connections is already created] **********************************************************************************
fatal: [componentpack.ongc.co.in]: FAILED! => {"changed": true, "cmd": "kubectl get namespace | grep connections", "delta": "0:00:00.007366", "end": "2021-09-23 14:43:36.405329", "msg": "non-zero return code", "rc": 1, "start": "2021-09-23 14:43:36.397963", "stderr": "/bin/sh: kubectl: command not found", "stderr_lines": ["/bin/sh: kubectl: command not found"], "stdout": "", "stdout_lines": []}
...ignoring

DB2 package name variable not working

Hi,
the variables documentation says that the db2 package name can be set with db2_package_name:

db2_package_name | v11.1.4fp5_linuxx64_universal_fixpack.tar.gz | DB2 package name

But the variables in the db2 installation role, just decide dependent on the variable install_latest_db2

__default_package_name: "{{ 'v11.5.6_linuxx64_universal_fixpack.tar.gz' if __install_latest_db2 else 'v11.1.4fp5_linuxx64_universal_fixpack.tar.gz' }}"

As there are known vulnerabilities with the 11.5.6 packages https://support.hcltechsw.com/csm?id=kb_article&sysparm_article=KB0099179, this should be updated and the documented variable should be used.
Regards
Christoph

Role for epel-release install

Hi,
I get following error in setup-db2:

  msg: |-
    warning: /var/cache/yum/x86_64/7/epel/packages/epel-release-7-14.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
  
  
    GPG key retrieval failed: [Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7"
  rc: 1

The GPG Key needs to be imported.

So I thought I fix this, but there are several roles which install EPEL, so I have to do this multiple times. I think it would be easier to create a new role for EPEL deployment and include this into the role or playbook where it is needed. Or using this https://github.com/geerlingguy/ansible-role-repo-epel through requirements.yml file and import it to the repo.

What do you think? What's better?

Regards
Christoph

Needed packages for Connections 8

Hi
The readme shows

Connections8:
total 2895968
drwxr-xr-x   2 root root         138 Oct  6 06:41 .
drwxr-xr-x. 24 root orion       4096 Sep 28 14:30 ..
-r-xr-xr-x   1 root root  2117918720 Oct  6 06:40 HCL_Connections_8.0_lin.tar
-r-xr-xr-x   1 root root   661811200 Oct  6 06:41 HCL_Connections_8.0_wizards_lin_aix.tar
-rw-r--r--   1 root root         133 Oct  6 06:41 current.version
-r-xr-xr-x   1 root root   185730992 Oct  6 06:41 updateInstaller.zip

I see no updateInstaller.zip for Version 8 on Flexnet. The size shown here is different to 7. Is this package needed?

Regards
Christoph

HCL Docs installation error

Hello,

I'm attempting to install HCL Docs on a Linux machine using an Ansible script, but I'm getting the following error message.

TASK [setup-environment : Mount "{{ __docs_editor_files_dest }}" "to" "{{ __docs_data_local_path }}"] ******************************************************************
fatal: [devapps.test.com]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: {{ __nfsMasterAddress }}:{{ __docs_data_remote_path }}: {{ nfsMasterAddress | default( __firstNfsNode ) }}: {{ hostvars[groups['nfs_servers'][0]]['ansible_default_ipv4']['address'] }}: 'ansible.vars.hostvars.HostVarsVars object' has no attribute 'ansible_default_ipv4'\n\nThe error appears to be in '/opt/HCL/connections_ansible/connections-automation-main/roles/hcl/docs/setup-environment/tasks/mount_docs_nfs_shares.yml': line 18, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: Mount "{{ __docs_editor_files_dest }}" "to" "{{ __docs_data_local_path }}"\n ^ here\nWe could be wrong, but this one looks like it might be an issue with\nmissing quotes. Always quote template expression brackets when they\nstart a value. For instance:\n\n with_items:\n - {{ foo }}\n\nShould be written as:\n\n with_items:\n - "{{ foo }}"\n"}

PLAY RECAP *************************************************************************************************************************************************************
devapps.test.com : ok=18 changed=3 unreachable=0 failed=1 skipped=2 rescued=0 ignored=0

Please help us to resolve this issue.

Thanks
PK

Upgrade TDI jre error

Hello,

I'm trying to upgrade the TDI 7.2 jre using Ansible on RHEL machine but getting the following error on the screen.

failed: [devapps.test.com] (item=ojdbc8.jar) => {"ansible_loop_var": "item", "changed": false, "checksum_dest": null, "checksum_src": "967c0b1a2d5b1435324de34a9b8018d294f8f47b", "dest": "/opt/IBM/TDI/V7.20/jvm/jre/lib/ext", "elapsed": 0, "item": "ojdbc8.jar", "msg": "Destination /opt/IBM/TDI/V7.20/jvm/jre/lib does not exist", "src": "/home/citc_user/.ansible/tmp/ansible-tmp-1630498961.711784-258971-248242497747704/tmpw0bwbny5", "url": "http://devapps.test.com:8001/Oracle/ojdbc8.jar"}

Please us to resolve this issue.

Thanks
PK

Add variable for database selection

Hi,

in the actual version the playbook setup_database.yml installs both database systems (DB2 and Oracle)! So a variable to select the used database would help.

Keep up the great work.

Regards
Christoph

Haproxy 2.4.0

Hi,
the playbook compiles haproxy from sources and uses 2.4.0
So what's the advantage of 2.4.0 versus the one delivered with Red Hat 7 or 8?
Why not updating to the last available 2.4.8?
Regards
Christoph

error in connections post_install_config tasks update_files_config

in the yml file: connections-automation/roles/hcl/connections/post_install_config/tasks/update_files_config.yml
The script has stopped at this point, returning this error message:

TASK [post_install_config : Is restrict_reader_access__trusted_realms] **********************************************************************************
fatal: [cnx-server.internal.cloudapp.net]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: the inline if-expression on line 1 evaluated to false and no else section was defined.\n\nThe error appears to be in '/home/operador/connections-automation/roles/hcl/connections/post_install_config/tasks/update_files_config.yml': line 10, column 7, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n - name: Is restrict_reader_access__trusted_realms\n ^ here\n"}

Can you please review and tell if is this a bug or misconfiguration?
Thank you

Hardcoded nfs folders

Hi

I use one NFS Server for multiple connections test deployments, but there are some issues:

  • The /etc/exports file gets overwritten within several playbooks
  • there are several parts with hard coded paths: for example
    __cnx_message_store_nfs: "/nfs/data/messageStores"
  • if I don't use the default paths, the folders are not created on the filesystem and added to /etc/exports automatically

Regards
Christoph

Scaling pods on environments with more than 3 nodes

Hi,
the script

- name: Scale Component Pack to the number of workers
scales all pods on the number of nodes configured in the Kubernetes cluster, so when you have more than three nodes, it scales to 4, 5, ... pods per deployment.

The persistent volume script always creates hard coded 3 PV independent of the used worker nodes. So all pods which are larger than 3 will write data into non-persistent storage and will lose data when the pod gets rescheduled or when it fails / gets deleted.

So PV creation should also be dependent on the worker node count, or the scale command should stop at three, but I would prefer getting as many PV as Pods!

This affects:

  • NFS Server configuration
  • NFS Folder creation
  • PV / PVC configuration / creation
  • Pod scaling

Regards
Christoph

Share to MS Teams JS in wrong path

I deployed the Teams integration with the project and found that the icon to share is not loading.

Reason:

Files in pv-connections/customizations

├── ms-teams
│   ├── appregistry
│   │   ├── ms-teams-collapse-sidebar.json
│   │   ├── ms-teams-itm.json
│   │   ├── ms-teams-profile-bizcard.json
│   │   └── ms-teams-share.json
│   └── customizations
│       └── ms-teams
│           ├── collapse-sidebar
│           │   ├── communities_sidebar_collapse.js
│           │   └── wikis_sidebar_collapse.js
│           └── teamsshare
│               ├── connections-teams-share-integration.js
│               └── nls
│                   ├── locale_ar.json

File path in Customizer:

            "payload": {
                "include-files": [
                    "ms-teams/teamsshare/connections-teams-share-integration.js"
                ],

So the file wants to load ms-teams/teamsshare, but the file is stored in ms-teams/customizations/ms-teams/teamsshare/

Regards
Christoph

Installation of DB2 fails, but playbook runs until the end

Hi,
I test the installation with https://repo.almalinux.org/almalinux/8/cloud/x86_64/images/ the cloud images for Almalinux (binary compatible to RHEL).
It is comparable to a minimal installation.

I run the playbooks/setup-connections-complete.yml and one of the first tasks is the DB2 installation, which fails:

TASK [db2-install : Install DB2] *********************************************************************************
fatal: [cnx7-rh8-db2.stoeps.home]: FAILED! => changed=true 
  cmd:
  - /opt/IBM/InstallBinaries/universal/db2setup
  - -r
  - /opt/IBM/InstallBinaries/universal/db2server.rsp
  delta: '0:00:00.081528'
  end: '2022-01-26 08:59:04.671372'
  msg: non-zero return code
  rc: 67
  start: '2022-01-26 08:59:04.589844'
  stderr: |-
    ERROR:
       The 'strings' utility that is used to detect prerequisite libraries
       is not present on this system.  Please use your package or software
       manager to install the GNU Binary Utilities.
    Requirement not matched for DB2 database "Server" . Version: "11.5.6.0".
  
    Summary of prerequisites that are not met on the current system:
  
       DBT3514W  The db2prereqcheck utility failed to find the following 32-bit library file: "/lib/libpam.so*".
  
  
    DBT3520E  The db2prereqcheck utility could not find the library file libaio.so.1.
  stderr_lines: <omitted>
  stdout: |2-
      Aborting the current installation ...
      Run installation with the option "-f sysreq" parameter to force the installation.
  stdout_lines: <omitted>

TASK [db2-install : Apply the license to DB2] ********************************************************************
skipping: [cnx7-rh8-was.stoeps.home]
skipping: [cnx7-rh8.stoeps.home]

So the strings package (and some more) is missing, DB2 can't be installed, but the whole installation runs until the end. The Db2 database creation fails because of this, for example, but the playbook does not stop. So 1. there should be a package installation for all prerequisites of DB2 and if the installation fails, 2. the playbook needs to stop.

Regards
Christoph

Awkward description / naming of Tasks

The setup-connections-wizards role has some misleading names of tasks, so

and
are named "cleanup" -> these tasks drop the database, yes that's cleanup too, but dropping means deleting and not cleaning.

Run migrations for everything but ICEC

There are several tasks mentioning migration, but they just create the database. Migration would be 6.5 -> 7.0 but not createDB or appGrants.

As I haven't dig into every role, I didn't create a PR for this, but consider a renaming in future versions please.

There are more and more inexperienced users of Ansible and Connections setup, so this can cause major problems when databases are dropped. Mainly because the example variables which are provided have all variables set for database "cleanup".

Regards
Christoph

Elasticstack 7 not working after install

Hi,
I tried to install Elasticstack 7 today and set the variable setup_elasticstack7=true in my variables file.

The pods are not starting:

kubectl get pods -l release=elasticstack
NAME                        READY   STATUS             RESTARTS   AGE
filebeat-7-8mk9j            0/1     InvalidImageName   0          16h
kibana-7-65994b6c5d-vhb4g   0/1     InvalidImageName   0          16h
logstash-7-0                0/1     InvalidImageName   0          16h

kubectl describe pod -l app=kibana-7

Containers:
  kibana-7:
    Container ID:   
    Image:          map[repository:connections-docker.artifactory.cwp.pnp-hcl.com tag:20210418-230758]:7.6.1
    Image ID:       
    Port:           5601/TCP

There is still a helm chart for elastic stack available, but the created pods do not work, because the container images are missing. Even fixing the image name will not help. So I checked the documentation on https://help.hcltechsw.com/connections/v7/admin/install/cp_over_intro.html?hl=kibana and found:

Elastic Stack is a collection of open-source tools that collect log data and help you visualize those logs in a central location. Specific tools in Elastic Stack include Kibana, Logstash, FileBeat, and Elasticsearch Curator. Starting with version 7, self-build images for Elastic Stack are not provided, as they are no longer needed. Instead, guidance and the documentation on how to set up Elastic Stack, either using the HCL-provided Elasticsearch 7.6.1 or any available Elasticsearch, including AWS native setup.

As there is no additional information available in the documentation, it would be great if this project can deploy a working Elasticstack on top of Connections 7. The default Kibana image won't work, as it needs to have the Searchguard plugin and Elasticsearch certificates for the connection.
Regards
Christoph

Playbook does not stop when package for unarchive is not available

The usage of unarchive with http seems not to fail when a package is not available, it fails several steps later, when the setup wants to access one of the unarchived files.

Can we create a role which testss all used packages if they are available on the http server? Any idea how to do this without downloading the files?

TASK [component-pack : Wait for bootstrap to come up

We have installed Connections 7 with CP, using the quickstart scripts.
After installing, we have not been able to access the orient me page, although connections is running apparently fine.
All pods seem to be running in the CP kubernetes.
This is the output if we run the playbook "setup component pack""
ansible_issue30322.txt

Any idea?

Connections 6.5 CR1 install

Hi,

I had to install a Connections 6.5 environment for iFix testing.

I found that the installation installs a plain 6.5, there is no option to add the CR1 as additional repository to the installation manager or something like this. The playbook just ignores the fix. So even when I enable ifix install and provide the latest ifix from Flexnet, I get the message that the version don't match (clear because the ifix needs to be deployed on top of CR1).

Anybody interested in 6.5CR1 (mainly for testing)? Or do you already have something prepared to install the CR1 which I have overlooked?

The howtos mention a example here:

* Set up your inventory file the way you want (we will use [this example file for setting up 6.5.0.1](https://github.com/HCL-TECH-SOFTWARE/connections-automation/blob/main/environments/examples/cnx6/connections))
but it is not available in the repository master any more. So it would be cool to have a working example howto deploy 6.5CR1 or 6.5.0.1 like it is named in the howto.

Btw the fix itself says his name / version is 6.5.0.0_CR1 and this is also written to logs and version files. So the 6.5.0.1 strings should be replaced.

image

Thanks for any hints.
Regards
Christoph

Install Kubernetes playbook failing

When trying to execute the "Install Kubernetes" Playbook, it fails in the task "Setup-master-node" with the error:

ASK [setup-master-node : Initialize master for single node installation] ***************************************************************************************************
fatal: [cpack-server.internal.cloudapp.net]: FAILED! => {"changed": true, "cmd": ["kubeadm", "init", "--config=/tmp/k8s_ansible/kubeadm-config.yaml"], "delta": "0:00:00.675252", "end": "2021-10-27 14:29:16.222511", "msg": "non-zero return code", "rc": 1, "start": "2021-10-27 14:29:15.547259", "stderr": "W1027 14:29:15.743253 4310 configset.go:348] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]\nerror execution phase preflight: [preflight] Some fatal errors occurred:\n\t[ERROR Port-6443]: Port 6443 is in use\n\t[ERROR Port-10259]: Port 10259 is in use\n\t[ERROR Port-10257]: Port 10257 is in use\n\t[ERROR FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml]: /etc/kubernetes/manifests/kube-apiserver.yaml already exists\n\t[ERROR FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml]: /etc/kubernetes/manifests/kube-controller-manager.yaml already exists\n\t[ERROR FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml]: /etc/kubernetes/manifests/kube-scheduler.yaml already exists\n\t[ERROR FileAvailable--etc-kubernetes-manifests-etcd.yaml]: /etc/kubernetes/manifests/etcd.yaml already exists\n\t[ERROR Port-10250]: Port 10250 is in use\n\t[ERROR Port-2379]: Port 2379 is in use\n\t[ERROR Port-2380]: Port 2380 is in use\n\t[ERROR DirAvailable--var-lib-etcd]: /var/lib/etcd is not empty\n[preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors=...\nTo see the stack trace of this error execute with --v=5 or higher", "stderr_lines": ["W1027 14:29:15.743253 4310 configset.go:348] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]", "error execution phase preflight: [preflight] Some fatal errors occurred:", "\t[ERROR Port-6443]: Port 6443 is in use", "\t[ERROR Port-10259]: Port 10259 is in use", "\t[ERROR Port-10257]: Port 10257 is in use", "\t[ERROR FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml]: /etc/kubernetes/manifests/kube-apiserver.yaml already exists", "\t[ERROR FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml]: /etc/kubernetes/manifests/kube-controller-manager.yaml already exists", "\t[ERROR FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml]: /etc/kubernetes/manifests/kube-scheduler.yaml already exists", "\t[ERROR FileAvailable--etc-kubernetes-manifests-etcd.yaml]: /etc/kubernetes/manifests/etcd.yaml already exists", "\t[ERROR Port-10250]: Port 10250 is in use", "\t[ERROR Port-2379]: Port 2379 is in use", "\t[ERROR Port-2380]: Port 2380 is in use", "\t[ERROR DirAvailable--var-lib-etcd]: /var/lib/etcd is not empty", "[preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors=...", "To see the stack trace of this error execute with --v=5 or higher"], "stdout": "[init] Using Kubernetes version: v1.19.11\n[preflight] Running pre-flight checks", "stdout_lines": ["[init] Using Kubernetes version: v1.19.11", "[preflight] Running pre-flight checks"]}

the full script output is attached.
Appreciate your help.
ansible_issue.txt

WebSphere toolbox should be ugpraded to fp21 like other websphere component.

Hello, during this days I'm using this playbooks to install an environment and while I was installed a multi node installation of Connections with the setup-connections-only.yml I run into a fail after connections install.

the os is Red Hat Enterprise Linux release 8.5 (Ootpa)

TASK [ibm-http-config-plgwct : Generate Response file /opt/IBM/Binaries/logs/config_plugin_wct.rsp] ********************************************************************************************************
ok: [connections.fqdn.com]

TASK [ibm-http-config-plgwct : Configure WebSphere Plugin /opt/IBM/WebSphere/Toolbox/WCT/wctcmd.sh -tool pct -createDefinition -defLocName westend -defLocPathname /opt/IBM/WebSphere/Plugins -response /opt/IBM/Binaries/logs/config_plugin_wct.rsp] ***
fatal: [connections.fqdn.com]: FAILED! => {"changed": false, "cmd": ["/opt/IBM/WebSphere/Toolbox/WCT/wctcmd.sh", "-tool", "pct", "-createDefinition", "-defLocName", "westend", "-defLocPathname", "/opt/IBM/WebSphere/Plugins", "-response", "/opt/IBM/Binaries/logs/config_plugin_wct.rsp"], "delta": "0:00:00.011498", "end": "2022-05-05 10:24:44.822719", "msg": "non-zero return code", "rc": 1, "start": "2022-05-05 10:24:44.811221", "stderr": "libjvm.so preloadLibrary(/opt/IBM/WebSphere/Toolbox/java/jre/lib/i386/libjava.so): libnsl.so.1: cannot open shared object file: No such file or directory\nCould not create the Java virtual machine.", "stderr_lines": ["libjvm.so preloadLibrary(/opt/IBM/WebSphere/Toolbox/java/jre/lib/i386/libjava.so): libnsl.so.1: cannot open shared object file: No such file or directory", "Could not create the Java virtual machine."], "stdout": "", "stdout_lines": []}

after some verification I saw the issue was into the java embedded to the WAS toolbox that wasn't running causing the failure

./versionInfo.sh
libjvm.so preloadLibrary(/opt/IBM/WebSphere/Toolbox/java/jre/lib/i386/libjava.so): libnsl.so.1: cannot open shared object file: No such file or directory
Could not create the Java virtual machine

I 've downloaded and installed the FP21 for Toolbox from IBM site

8.5.5-WS-WCT-FP021-part1.zip
8.5.5-WS-WCT-FP021-part2.zip

The install also upgrade the Tollbox jvm from 1.6 to 1.8

`./imcl install com.ibm.websphere.WCT.v85_8.5.5021.20220202_1245 -repositories /root/wct/ -acceptLicense
[root@elpaso tools]# ./imcl install com.ibm.websphere.WCT.v85_8.5.5021.20220202_1245 -repositories /root/wct-f21/ -acceptLicense
Updated to com.ibm.websphere.WCT.v85_8.5.5021.20220202_1245 in the /opt/IBM/WebSphere/Toolbox directory.
WARNING:
The version of Java SE in the WAS_HOME/java directory was updated to Java SE 8

now both ./versionInfo.sh and java -version are running with the updated JVM 8

./versionInfo.sh
WVER0010I: Copyright (c) IBM Corporation 2002, 2012; All rights reserved.
WVER0012I: VersionInfo reporter version 1.15.1.50, dated 12/20/18


IBM WebSphere Product Installation Status Report

Report at date and time May 5, 2022 11:50:05 AM CEST

Installation

Product Directory /opt/IBM/WebSphere/Toolbox
Version Directory /opt/IBM/WebSphere/Toolbox/properties/version
DTD Directory /opt/IBM/WebSphere/Toolbox/properties/version/dtd
Log Directory /var/ibm/InstallationManager/logs

Product List

WCT installed

Installed Product

Name WebSphere Customization Toolbox
Version 8.5.5.21
ID WCT
Build Level cf212205.01
Build Date 2/2/22
Package com.ibm.websphere.WCT.v85_8.5.5021.20220202_1245
Java SE Version 8
Architecture x86 (32 bit)
Installed Features Core runtime
Web Server Plug-ins Configuration Tool


End Installation Status Report

./java -version
java version "1.8.0_311"
Java(TM) SE Runtime Environment (build 8.0.7.0 - pxi3280sr7-20211025_01(SR7))
IBM J9 VM (build 2.9, JRE 1.8.0 Linux x86-32-Bit 20211022_15212 (JIT enabled, AOT enabled)
OpenJ9 - 6abb372
OMR - b898db9
IBM - 2f2c48b)
JCL - 20210930_01 based on Oracle jdk8u311-b11`

after this steps , the playbook was able to comes to the end, so you should consider to add this part to the authomation.

Extraction folder always deleted, CP re-downloaded and re-unzipped

Sometimes you need to run the ansible task a few times to get things right. At the moment the Component Pack is always deleted at the start, re-downloaded, and re-unzipped.

Could we please have a variable to disable these tasks in order for us to re-use the existing valid files that we already have?

Authconfig not found

There are several tasks which shall disable fingerprinting:

roles/hcl/connections-wizards/tasks/setup_connections_docs.yml:- name:                  Disable fingerprinting
roles/hcl/connections-wizards/tasks/setup_connections_docs.yml-  command:               authconfig --disablefingerprint --update
roles/hcl/connections-wizards/tasks/setup_connections_docs.yml-  when:
roles/hcl/connections-wizards/tasks/setup_connections_docs.yml-    - not docs_migrations_already_done.stat.exists
--
roles/hcl/connections-wizards/tasks/setup_connections_docs_mssql.yml:- name:                  Disable fingerprinting
roles/hcl/connections-wizards/tasks/setup_connections_docs_mssql.yml-  command:               authconfig --disablefingerprint --update
roles/hcl/connections-wizards/tasks/setup_connections_docs_mssql.yml-  when:
roles/hcl/connections-wizards/tasks/setup_connections_docs_mssql.yml-    - not docs_migrations_already_done.stat.exists
--
roles/hcl/connections-wizards/tasks/setup_connections_docs_oracle.yml:- name:                  Disable fingerprinting
roles/hcl/connections-wizards/tasks/setup_connections_docs_oracle.yml-  command:               authconfig --disablefingerprint --update
roles/hcl/connections-wizards/tasks/setup_connections_docs_oracle.yml-  when:
roles/hcl/connections-wizards/tasks/setup_connections_docs_oracle.yml-    - not docs_migrations_already_done.stat.exists
--
roles/hcl/connections-wizards/tasks/setup_connections_wizards_mssql.yml:- name:                  Disable fingerprinting
roles/hcl/connections-wizards/tasks/setup_connections_wizards_mssql.yml-  command:               authconfig --disablefingerprint --update
roles/hcl/connections-wizards/tasks/setup_connections_wizards_mssql.yml-  when:
roles/hcl/connections-wizards/tasks/setup_connections_wizards_mssql.yml-    - not migrations_already_done.stat.exists
--
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml:- name:                  Disable fingerprinting
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml-  command:               authconfig --disablefingerprint --update
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml-  when:
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml-    - not migrations_already_done.stat.exists
--
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml:- name:                  Disable fingerprinting
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml-  command:               authconfig --disablefingerprint --update
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml-  when:
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml-    - not migrations_already_done.stat.exists

This ends with:

TASK [connections-wizards : Disable fingerprinting] **********************************************************************************************************************************************************************************
fatal: [cnx7-rh8-db2.stoeps.home]: FAILED! => changed=false 
  cmd: authconfig --disablefingerprint --update
  msg: '[Errno 2] No such file or directory: b''authconfig'': b''authconfig'''
  rc: 2
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>

On minimal installation the package authselect-compat is not installed. So if you want to use the command you should check that it is installed first.

I'm really curious why these tasks are included, as fingerprinting is only available when a fingerprint hardware is found. https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system-level_authentication_guide/fingerprints

So remove, add a conditional or check for the command first please.

Please use ansible-lint

I use Ansible-lint for my playbooks and roles, which brought me to easier maintenance cycles and less errors in the test runs, I checked the connections playbook:

ansible-lint playbooks/setup-connections-complete.yml 
WARNING  Listing 283 violation(s) that are fatal
risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections-wizards/tasks/setup_connections_docs.yml:20 Task/Handler: Create installation folder

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_docs.yml:40 Task/Handler: Cleanup Docs database

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/hcl/connections-wizards/tasks/setup_connections_docs.yml:40 Task/Handler: Cleanup Docs database

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_docs.yml:63 Task/Handler: Create Docs database and update schema

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_docs.yml:81 Task/Handler: Run appGrants.sql

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections-wizards/tasks/setup_connections_docs.yml:100 Task/Handler: Create {{ __docs_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections-wizards/tasks/setup_connections_docs_mssql.yml:20 Task/Handler: Create installation folder

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_docs_mssql.yml:40 Task/Handler: Cleanup Docs database

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/hcl/connections-wizards/tasks/setup_connections_docs_mssql.yml:40 Task/Handler: Cleanup Docs database

var-spacing: Variables should have spaces before and after: {{ __docs_installation_folder}}/sqlserver/dropdb.sql
roles/hcl/connections-wizards/tasks/setup_connections_docs_mssql.yml:40 Task/Handler: Cleanup Docs database

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_docs_mssql.yml:55 Task/Handler: Create Docs database and update schema

var-spacing: Variables should have spaces before and after: {{ __docs_installation_folder}}/sqlserver/createdb.sql
roles/hcl/connections-wizards/tasks/setup_connections_docs_mssql.yml:55 Task/Handler: Create Docs database and update schema

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections-wizards/tasks/setup_connections_docs_mssql.yml:92 Task/Handler: Create {{ __sql_docs_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections-wizards/tasks/setup_connections_docs_oracle.yml:20 Task/Handler: Create installation folder

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_docs_oracle.yml:40 Task/Handler: Cleanup Docs database

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/hcl/connections-wizards/tasks/setup_connections_docs_oracle.yml:40 Task/Handler: Cleanup Docs database

risky-shell-pipe: Shells that use pipes should set the pipefail option
roles/hcl/connections-wizards/tasks/setup_connections_docs_oracle.yml:58 Task/Handler: Create Docs database and update schema

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections-wizards/tasks/setup_connections_docs_oracle.yml:71 Task/Handler: Create {{ __ora_docs_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml:13 Task/Handler: Create installation folder

var-spacing: Variables should have spaces before and after: Download and unzip installation "{{ __download_location}}/{{ __package_name }}" to the {{ __db_extraction_folder }}
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml:21 Task/Handler: Download and unzip installation "{{ __download_location}}/{{ __package_name }}" to the {{ __db_extraction_folder }}

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml:45 Task/Handler: Force application to disconnect for database cleanup

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml:45 Task/Handler: Force application to disconnect for database cleanup

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml:61 Task/Handler: Dropping Connections Databases

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml:61 Task/Handler: Dropping Connections Databases

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml:91 Task/Handler: Dropping IC360 database

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml:91 Task/Handler: Dropping IC360 database

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml:110 Task/Handler: Clenaup ICEC database only

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml:146 Task/Handler: Creating Connections databases (except ICEC database)

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml:198 Task/Handler: Run Sharepoint migration for Connections 7

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml:224 Task/Handler: Run migrations for IC360

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml:245 Task/Handler: Run migrations for ICEC only

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml:265 Task/Handler: Run runstats.sql and reorg.sql everywhere

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml:311 Task/Handler: Create {{ __success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml:319 Task/Handler: Create {{ __ic360_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections-wizards/tasks/setup_connections_wizards.yml:327 Task/Handler: Create {{ __sharepoint_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections-wizards/tasks/setup_connections_wizards_mssql.yml:13 Task/Handler: Create installation folder

var-spacing: Variables should have spaces before and after: Download and unzip installation "{{ __download_location}}/{{ __package_name }}" to the {{ __db_extraction_folder }}
roles/hcl/connections-wizards/tasks/setup_connections_wizards_mssql.yml:21 Task/Handler: Download and unzip installation "{{ __download_location}}/{{ __package_name }}" to the {{ __db_extraction_folder }}

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards_mssql.yml:44 Task/Handler: Cleanup Databases

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards_mssql.yml:70 Task/Handler: Cleanup IC360 database

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards_mssql.yml:83 Task/Handler: Clenaup ICEC database only

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards_mssql.yml:111 Task/Handler: Run migrations for everything but ICEC

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards_mssql.yml:155 Task/Handler: Run Sharepoint migration for Connections 7

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards_mssql.yml:173 Task/Handler: Run migrations for IC360

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards_mssql.yml:186 Task/Handler: Run migrations for ICEC only

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections-wizards/tasks/setup_connections_wizards_mssql.yml:198 Task/Handler: Create {{ __sql_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections-wizards/tasks/setup_connections_wizards_mssql.yml:206 Task/Handler: Create {{ __sql_ic360_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections-wizards/tasks/setup_connections_wizards_mssql.yml:214 Task/Handler: Create {{ __sql_sharepoint_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml:13 Task/Handler: Create installation folder

var-spacing: Variables should have spaces before and after: Download and unzip installation "{{ __download_location}}/{{ __package_name }}" to the {{ __db_extraction_folder }}
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml:21 Task/Handler: Download and unzip installation "{{ __download_location}}/{{ __package_name }}" to the {{ __db_extraction_folder }}

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml:44 Task/Handler: Cleanup Databases

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml:44 Task/Handler: Cleanup Databases

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml:71 Task/Handler: Cleanup IC360 database

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml:71 Task/Handler: Cleanup IC360 database

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml:85 Task/Handler: Clenaup ICEC database only

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml:85 Task/Handler: Clenaup ICEC database only

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml:114 Task/Handler: Run migrations for everything but ICEC

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml:162 Task/Handler: Run Sharepoint migration for Connections 7

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml:182 Task/Handler: Run migrations for IC360

risky-shell-pipe: Shells that use pipes should set the pipefail option
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml:198 Task/Handler: Run migrations for ICEC only

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml:213 Task/Handler: Create {{ __ora_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml:221 Task/Handler: Create {{ __ora_ic360_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections-wizards/tasks/setup_connections_wizards_oracle.yml:229 Task/Handler: Create {{ __ora_sharepoint_success_file }} file

unnamed-task: All tasks should be named
roles/hcl/connections/clean_was_temp/tasks/main.yml:12 Task/Handler: set_fact versionStampToSet={{ '%Y%m%d.%H%M%S' | strftime(ansible_date_time.epoch) }}

var-naming: Task uses 'set_fact' to define variables that violates variable naming standards
roles/hcl/connections/clean_was_temp/tasks/main.yml:12 Task/Handler: set_fact versionStampToSet={{ '%Y%m%d.%H%M%S' | strftime(ansible_date_time.epoch) }}

unnamed-task: All tasks should be named
roles/hcl/connections/clean_was_temp/tasks/main.yml:15 Task/Handler: debug var=versionStampToSet

unnamed-task: All tasks should be named
roles/hcl/connections/post_install_config/tasks/update_files_config.yml:14 Task/Handler: debug var=__allauth_trusted_value

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/hcl/connections/tasks/check_vars.yml:50 Task/Handler: ldap_user_mail_domain should be defined

no-changed-when: Commands should not change things if nothing needs doing
roles/hcl/connections/tasks/define_vars.yml:2 Task/Handler: Is Product already Installed?

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/hcl/connections/tasks/download_extract_connections.yml:2 Task/Handler: Cleanup Binaries directory

no-changed-when: Commands should not change things if nothing needs doing
roles/hcl/connections/tasks/download_extract_connections.yml:62 Task/Handler: Get the installation ID

risky-shell-pipe: Shells that use pipes should set the pipefail option
roles/hcl/connections/tasks/download_extract_connections.yml:62 Task/Handler: Get the installation ID

unnamed-task: All tasks should be named
roles/hcl/connections/tasks/download_extract_connections.yml:66 Task/Handler: debug var=cnx_upgrade_version.stdout

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections/tasks/enable_prometheus_jmx_exporter.yml:1 Task/Handler: Create JMX directory

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections/tasks/enable_prometheus_jmx_exporter.yml:26 Task/Handler: Render {{ __cnx_prom_jmx_destination }}

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections/tasks/enable_prometheus_jmx_exporter.yml:31 Task/Handler: Render {{ __cnx_prom_cfg_destination }}

risky-shell-pipe: Shells that use pipes should set the pipefail option
roles/hcl/connections/tasks/install_connections.yml:2 Task/Handler: Encode Password XOR

var-spacing: Variables should have spaces before and after: {{__logs_dir}}/xor.props
roles/hcl/connections/tasks/install_connections.yml:2 Task/Handler: Encode Password XOR

no-changed-when: Commands should not change things if nothing needs doing
roles/hcl/connections/tasks/install_connections.yml:12 Task/Handler: Encode DB Passwords

unnamed-task: All tasks should be named
roles/hcl/connections/tasks/install_connections.yml:33 Task/Handler: debug var=__cnx_node_list

unnamed-task: All tasks should be named
roles/hcl/connections/tasks/install_connections.yml:54 Task/Handler: debug var=__installer_deployment_type

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections/tasks/install_connections.yml:59 Task/Handler: Generate Response file {{ __rsp_file }} from {{ __tpl_file }}

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/hcl/connections/tasks/install_connections.yml:64 Task/Handler: Disable Repository on Installation Manager

deprecated-command-syntax: mkdir used in place of argument state=directory to file module
roles/hcl/connections/tasks/install_connections.yml:73 Task/Handler: Install Connections Software

no-changed-when: Commands should not change things if nothing needs doing
roles/hcl/connections/tasks/install_connections.yml:73 Task/Handler: Install Connections Software

no-changed-when: Commands should not change things if nothing needs doing
roles/hcl/connections/tasks/uninstall_connections.yml:2 Task/Handler: Get the installation ID

risky-shell-pipe: Shells that use pipes should set the pipefail option
roles/hcl/connections/tasks/uninstall_connections.yml:2 Task/Handler: Get the installation ID

unnamed-task: All tasks should be named
roles/hcl/connections/tasks/uninstall_connections.yml:6 Task/Handler: debug var=cnx_uninstall_version.stdout

risky-shell-pipe: Shells that use pipes should set the pipefail option
roles/hcl/connections/tasks/uninstall_connections.yml:9 Task/Handler: Encode Password XOR

var-spacing: Variables should have spaces before and after: {{__logs_dir}}/xor.props
roles/hcl/connections/tasks/uninstall_connections.yml:9 Task/Handler: Encode Password XOR

risky-file-permissions: File permissions unset or incorrect
roles/hcl/connections/tasks/uninstall_connections.yml:19 Task/Handler: Generate Response file {{ __rsp_uninstall_file }} from {{ __tpl_uninstall_file }}

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/hcl/connections/tasks/uninstall_connections.yml:24 Task/Handler: Disable Repository on Installation Manager

deprecated-command-syntax: mkdir used in place of argument state=directory to file module
roles/hcl/connections/tasks/uninstall_connections.yml:32 Task/Handler: Uninstall Connections Software

no-changed-when: Commands should not change things if nothing needs doing
roles/hcl/connections/tasks/uninstall_connections.yml:32 Task/Handler: Uninstall Connections Software

command-instead-of-shell: Use shell only when shell functionality is required
roles/hcl/connections/tasks/uninstall_connections.yml:49 Task/Handler: Remove Connections data on DMGR

deprecated-command-syntax: rm used in place of argument state=absent to file module
roles/hcl/connections/tasks/uninstall_connections.yml:49 Task/Handler: Remove Connections data on DMGR

no-changed-when: Commands should not change things if nothing needs doing
roles/hcl/connections/tasks/uninstall_connections.yml:49 Task/Handler: Remove Connections data on DMGR

deprecated-command-syntax: rm used in place of argument state=absent to file module
roles/hcl/connections/tasks/uninstall_connections.yml:60 Task/Handler: Remove temp folders on WAS nodes

no-changed-when: Commands should not change things if nothing needs doing
roles/hcl/connections/tasks/uninstall_connections.yml:60 Task/Handler: Remove temp folders on WAS nodes

var-naming: File defines variable '__firstNfsNode' that violates variable naming standards
roles/hcl/connections/vars/main.yml:1

var-naming: File defines variable '__nfsMasterAddress' that violates variable naming standards
roles/hcl/connections/vars/main.yml:1

command-instead-of-shell: Use shell only when shell functionality is required
roles/third_party/ibm/db2-install/tasks/apply_tunings.yml:6 Task/Handler: Setup codepage

literal-compare: Don't compare to literal True/False
roles/third_party/ibm/db2-install/tasks/apply_tunings.yml:6 Task/Handler: Setup codepage

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/db2-install/tasks/apply_tunings.yml:27 Task/Handler: Create {{ __db2_tunings_applied }} file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/db2-install/tasks/download_db2.yml:6 Task/Handler: Create installation folder

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/db2-install/tasks/install_db2.yml:1 Task/Handler: Render {{ __db2_server_rsp_location }}

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/db2-install/tasks/install_db2.yml:11 Task/Handler: Generate password for users

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/db2-install/tasks/install_db2.yml:23 Task/Handler: Install DB2

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/db2-install/tasks/install_jdbc.yml:8 Task/Handler: Create {{ __jdbc_installation_folder }}

unnamed-task: All tasks should be named
roles/third_party/ibm/db2-install/tasks/main.yml:8 Task/Handler: debug msg=DB2 is already up and running

command-instead-of-shell: Use shell only when shell functionality is required
roles/third_party/ibm/db2-install/tasks/setup_codepage.yml:6 Task/Handler: Setup codepage

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/db2-install/tasks/setup_codepage.yml:25 Task/Handler: Create {{ __db2_codepage_success_file }} file

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/db2-install/tasks/setup_license.yml:16 Task/Handler: Apply the license

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/db2-install/tasks/setup_os.yml:15 Task/Handler: Creating selinux config file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/db2-install/tasks/setup_os.yml:23 Task/Handler: Add content to blacklist.conf

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/db2-install/tasks/setup_os.yml:32 Task/Handler: Copy OS details in /etc/SuSE-release

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/third_party/ibm/db2-install/tasks/setup_os.yml:72 Task/Handler: Disable SELinux

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/ihs/ibm-http-adminctl-restart/tasks/main.yml:2 Task/Handler: Is AdminCtl Running?

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/ihs/ibm-http-adminctl-restart/tasks/main.yml:17 Task/Handler: Is AdminCtl Running?

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/ihs/ibm-http-config-plgwct/tasks/config_plgwct.yml:2 Task/Handler: Create temporary folder {{ __logs_dir }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/ihs/ibm-http-config-plgwct/tasks/config_plgwct.yml:9 Task/Handler: Generate Response file {{ __rsp_file }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/ihs/ibm-http-config-plgwct/tasks/config_plgwct.yml:26 Task/Handler: Create temporary folder

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/ihs/ibm-http-config-plgwct/tasks/config_plgwct.yml:33 Task/Handler: Copy {{ __plg_install_location }}/bin/configure{{ __ihs_hostname }}.sh to /tmp/wct_plugins_{{ __ihs_hostname }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/ihs/ibm-http-config-plgwct/tasks/config_plgwct.yml:36 Task/Handler: Create the archive

command-instead-of-shell: Use shell only when shell functionality is required
roles/third_party/ibm/ihs/ibm-http-config-plgwct/tasks/config_plgwct.yml:77 Task/Handler: Generate plugins on DMGR

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/ihs/ibm-http-config-plgwct/tasks/config_plgwct.yml:77 Task/Handler: Generate plugins on DMGR

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/ihs/ibm-http-config-plgwct/tasks/config_plgwct.yml:90 Task/Handler: Create temporary folder

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/ihs/ibm-http-config-plgwct/tasks/config_plgwct.yml:100 Task/Handler: Copy {{ __was_install_location }}/profiles/Dmgr01/config/cells/ConnectionsCell/nodes/{{ __ihs_hostname }}-node/servers/{{ __ihs_hostname }}/plugin-cfg.xml to /tmp/wct_generated_plugins_{{ __ihs_hostname }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/ihs/ibm-http-config-plgwct/tasks/config_plgwct.yml:107 Task/Handler: Copy {{ __was_install_location }}/profiles/Dmgr01/config/cells/ConnectionsCell/nodes/{{ __ihs_hostname }}-node/servers/{{ __ihs_hostname }}/plugin-key.kdb to /tmp/wct_generated_plugins_{{ __ihs_hostname }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/ihs/ibm-http-config-plgwct/tasks/config_plgwct.yml:114 Task/Handler: Copy {{ __was_install_location }}/profiles/Dmgr01/config/cells/ConnectionsCell/nodes/{{ __ihs_hostname }}-node/servers/{{ __ihs_hostname }}/plugin-key.sth to /tmp/wct_generated_plugins_{{ __ihs_hostname }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/ihs/ibm-http-config-plgwct/tasks/config_plgwct.yml:121 Task/Handler: Create the archive /tmp/wct_generated_plugins_{{ __ihs_hostname }}.zip from /tmp/wct_generated_plugins_{{ __ihs_hostname }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/ihs/ibm-http-config-plgwct/tasks/config_plgwct.yml:141 Task/Handler: Copy the files to {{ __plg_install_location }}/config/{{ inventory_hostname_short }}/

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/ihs/ibm-http-config-plgwct/tasks/config_plgwct_coloc.yml:2 Task/Handler: Copy {{ __was_install_location }}/profiles/Dmgr01/config/cells/ConnectionsCell/nodes/{{ __ihs_hostname }}-node/servers/{{ __ihs_hostname }}/plugin-cfg.xml to {{ __plg_install_location }}/config/{{ inventory_hostname_short }}/

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/ihs/ibm-http-config-plgwct/tasks/config_plgwct_coloc.yml:9 Task/Handler: Copy {{ __was_install_location }}/profiles/Dmgr01/config/cells/ConnectionsCell/nodes/{{ __ihs_hostname }}-node/servers/{{ __ihs_hostname }}/plugin-key.kdb to {{ __plg_install_location }}/config/{{ inventory_hostname_short }}/

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/ihs/ibm-http-config-plgwct/tasks/config_plgwct_coloc.yml:16 Task/Handler: Copy {{ __was_install_location }}/profiles/Dmgr01/config/cells/ConnectionsCell/nodes/{{ __ihs_hostname }}-node/servers/{{ __ihs_hostname }}/plugin-key.sth to {{ __plg_install_location }}/config/{{ inventory_hostname_short }}/

var-spacing: Variables should have spaces before and after: {{__plg_install_location}}/config/{{ __ihs_hostname }}/plugin-cfg.xml
roles/third_party/ibm/ihs/ibm-http-config-plgwct/tasks/define_vars.yml:3 Task/Handler: Verifiy if Plugin already configured

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/third_party/ibm/ihs/ibm-http-httpdconf/tasks/main.yml:2 Task/Handler: Backup httpd.conf

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/ihs/ibm-http-httpdconf/tasks/main.yml:2 Task/Handler: Backup httpd.conf

deprecated-command-syntax: rm used in place of argument state=absent to file module
roles/third_party/ibm/ihs/ibm-http-httpdconf/tasks/main.yml:6 Task/Handler: Clean up old certificates

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/ihs/ibm-http-httpdconf/tasks/main.yml:6 Task/Handler: Clean up old certificates

var-spacing: Variables should have spaces before and after: {{ __ihs_install_location }}/{{__ihs_hostname}}-key.crl }}
roles/third_party/ibm/ihs/ibm-http-httpdconf/tasks/main.yml:6 Task/Handler: Clean up old certificates

command-instead-of-shell: Use shell only when shell functionality is required
roles/third_party/ibm/ihs/ibm-http-httpdconf/tasks/main.yml:14 Task/Handler: Generate key DB

var-spacing: Variables should have spaces before and after: {{__ihs_kdb_filename
roles/third_party/ibm/ihs/ibm-http-httpdconf/tasks/main.yml:14 Task/Handler: Generate key DB

command-instead-of-shell: Use shell only when shell functionality is required
roles/third_party/ibm/ihs/ibm-http-httpdconf/tasks/main.yml:20 Task/Handler: Generate self signed certificate

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/ihs/ibm-http-httpdconf/tasks/main.yml:20 Task/Handler: Generate self signed certificate

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/ihs/ibm-http-httpdconf/tasks/main.yml:29 Task/Handler: Generate httpd.conf

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/ihs/ibm-http-server-fix-install/tasks/define_vars.yml:23 Task/Handler: Is IIM Installed?

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/ihs/ibm-http-server-fix-install/tasks/define_vars.yml:28 Task/Handler: Is IHS Installed?

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/ihs/ibm-http-server-fix-install/tasks/define_vars.yml:33 Task/Handler: Is Product already Installed?

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/third_party/ibm/ihs/ibm-http-server-fix-install/tasks/install_ihs_fixes.yml:2 Task/Handler: Cleanup Binaries directory

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/ihs/ibm-http-server-fix-install/tasks/install_ihs_fixes.yml:19 Task/Handler: Generate Response file

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/third_party/ibm/ihs/ibm-http-server-fix-install/tasks/install_ihs_fixes.yml:24 Task/Handler: Disable Repository on Installation Manager

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/ihs/ibm-http-server-install/tasks/define_vars.yml:2 Task/Handler: Is IIM Installed?

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/ihs/ibm-http-server-install/tasks/define_vars.yml:6 Task/Handler: Is Product already Installed?

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/third_party/ibm/ihs/ibm-http-server-install/tasks/install_ihs.yml:2 Task/Handler: Cleanup Binaries directory

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/ihs/ibm-http-server-install/tasks/install_ihs.yml:27 Task/Handler: Generate Response file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/ihs/ibm-http-server-install/tasks/install_ihs.yml:39 Task/Handler: Overwrite admin.conf

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/third_party/ibm/ihs/ibm-http-server-install/tasks/setup_os.yml:2 Task/Handler: Disable SELinux

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/ihs/ibm-http-server-restart/tasks/main.yml:2 Task/Handler: Is IHS Running?

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/ihs/ibm-http-server-restart/tasks/main.yml:17 Task/Handler: Is IHS Running?

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/installation-manager-install/tasks/define_vars.yml:2 Task/Handler: Is Product already Installed?

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/tdi-install/tasks/tdi_install.yml:13 Task/Handler: Create installation folder

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/tdi-install/tasks/tdi_install.yml:28 Task/Handler: Render {{ __tdi_rsp_location }}

command-instead-of-shell: Use shell only when shell functionality is required
roles/third_party/ibm/tdi-install/tasks/tdi_install.yml:35 Task/Handler: Install TDI

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/tdi-install/tasks/tdi_install.yml:42 Task/Handler: Create {{ __tdi_installed_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/tdi-install/tasks/tdi_upgrade.yml:19 Task/Handler: Create upgrade folder

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/tdi-install/tasks/tdi_upgrade.yml:44 Task/Handler: Copy {{ __tdi_upgrade_folder }}/{{ __upgrade_package_folder_name }}/UpdateInstaller.jar to {{ __tdi_user_install_dir }}/maintenance/

command-instead-of-shell: Use shell only when shell functionality is required
roles/third_party/ibm/tdi-install/tasks/tdi_upgrade.yml:53 Task/Handler: Upgrade TDI

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/tdi-install/tasks/tdi_upgrade.yml:61 Task/Handler: Create {{ __tdi_upgrade_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/tdi-install/tasks/tdisol_install.yml:12 Task/Handler: Create installation folder

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/tdi-install/tasks/tdisol_install.yml:37 Task/Handler: Create {{ __tdi_sol_dest }} folder

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/tdi-install/tasks/tdisol_install.yml:55 Task/Handler: Render {{ __tdienv_sh_dest }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/tdi-install/tasks/tdisol_install.yml:60 Task/Handler: Render {{ __tdi_properties_dest }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/tdi-install/tasks/tdisol_install.yml:65 Task/Handler: Render {{ __tdi_mdbrfs_destination }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/tdi-install/tasks/tdisol_install.yml:82 Task/Handler: Copy DB2 JDBC files

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/tdi-install/tasks/tdisol_install.yml:103 Task/Handler: Copy MSSQL JDBC files

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/tdi-install/tasks/tdisol_install.yml:113 Task/Handler: Run collect_dns.sh

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/tdi-install/tasks/tdisol_install.yml:118 Task/Handler: Run populate_from_dn_file.sh

risky-shell-pipe: Shells that use pipes should set the pipefail option
roles/third_party/ibm/tdi-install/tasks/upgrade-tdi-jre.yml:12 Task/Handler: Checking existing version for jre

unnamed-task: All tasks should be named
roles/third_party/ibm/tdi-install/tasks/upgrade-tdi-jre.yml:19 Task/Handler: debug msg={{ jre_version_stat.stdout }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/tdi-install/tasks/upgrade-tdi-jre.yml:22 Task/Handler: Create temp download folder

var-spacing: Variables should have spaces before and after: }}/jvm/jre_{{ansible_date_time.iso8601}}"
roles/third_party/ibm/tdi-install/tasks/upgrade-tdi-jre.yml:42 Task/Handler: Backing up old jre dir

risky-shell-pipe: Shells that use pipes should set the pipefail option
roles/third_party/ibm/tdi-install/tasks/upgrade-tdi-jre.yml:61 Task/Handler: Checking updated version for jre

unnamed-task: All tasks should be named
roles/third_party/ibm/tdi-install/tasks/upgrade-tdi-jre.yml:68 Task/Handler: debug msg={{ updated_jre_version_stat.stdout }}

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/wasnd/was-dmgr-config-ldap/tasks/main.yml:7 Task/Handler: Verify if pid file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/wasnd/was-dmgr-config-ldap/tasks/main.yml:19 Task/Handler: Generate Response file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/wasnd/was-dmgr-config-ldap/tasks/main.yml:33 Task/Handler: Create was-dmgr-config-ldap.success file

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/wasnd/was-dmgr-config-webserver/tasks/main.yml:10 Task/Handler: Verify if pid file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/wasnd/was-dmgr-config-webserver/tasks/main.yml:28 Task/Handler: Create was-dmgr-config-webserver.success file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/wasnd/was-dmgr-create-profile/tasks/create_profile.yml:10 Task/Handler: Generate Response file

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/third_party/ibm/wasnd/was-dmgr-create-profile/tasks/create_profile.yml:21 Task/Handler: Change SOAP request timeout in {{ __was_install_location }}/profiles/{{ __profile_name }}/properties/soap.client.props

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/wasnd/was-dmgr-enable-app-sec/tasks/enable_app_sec.yml:2 Task/Handler: Generate Response file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/wasnd/was-dmgr-enable-app-sec/tasks/enable_app_sec.yml:14 Task/Handler: Create was-dmgr-enable-app-sec.success file

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/wasnd/was-dmgr-enable-app-sec/tasks/main.yml:7 Task/Handler: Verify if pid file

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/wasnd/was-dmgr-import-tls-cert/tasks/main.yml:7 Task/Handler: Verify if pid file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/wasnd/was-dmgr-import-tls-cert/tasks/main.yml:18 Task/Handler: Generate Response file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/wasnd/was-dmgr-import-tls-cert/tasks/main.yml:33 Task/Handler: Create was-dmgr-import-tls-cert.success file

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/wasnd/was-dmgr-restart/tasks/main.yml:2 Task/Handler: Is dmgr Running?

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/wasnd/was-dmgr-restart/tasks/main.yml:17 Task/Handler: Is dmgr Running?

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/wasnd/was-dmgr-start-cluster/tasks/main.yml:7 Task/Handler: Verify if pid file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/wasnd/was-dmgr-start-cluster/tasks/main.yml:30 Task/Handler: Generate Response file {{ __rsp_file }}

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/wasnd/was-dmgr-start/tasks/main.yml:2 Task/Handler: Is dmgr Running?

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/wasnd/was-dmgr-stop-cluster/tasks/main.yml:7 Task/Handler: Verify if pid file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/wasnd/was-dmgr-stop-cluster/tasks/main.yml:30 Task/Handler: Generate Response file {{ __rsp_file }}

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/wasnd/was-java-install/tasks/define_vars.yml:14 Task/Handler: Is Product already Installed?

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/third_party/ibm/wasnd/was-java-install/tasks/install_java.yml:2 Task/Handler: Cleanup Binaries directory

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/wasnd/was-java-install/tasks/install_java.yml:31 Task/Handler: Generate Response file

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/third_party/ibm/wasnd/was-java-install/tasks/install_java.yml:37 Task/Handler: Disable Repository on Installation Manager

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/wasnd/was-nd-fix-install/tasks/define_vars.yml:23 Task/Handler: Is IIM Installed?

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/wasnd/was-nd-fix-install/tasks/define_vars.yml:27 Task/Handler: Is WAS ND Installed?

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/wasnd/was-nd-fix-install/tasks/define_vars.yml:31 Task/Handler: Is Product already Installed?

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/third_party/ibm/wasnd/was-nd-fix-install/tasks/install_was_fixes.yml:2 Task/Handler: Cleanup Binaries directory

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/wasnd/was-nd-fix-install/tasks/install_was_fixes.yml:23 Task/Handler: Generate WAS Response file

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/third_party/ibm/wasnd/was-nd-fix-install/tasks/install_was_fixes.yml:29 Task/Handler: Disable Repository on Installation Manager

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/wasnd/was-nd-install/tasks/define_vars.yml:2 Task/Handler: Is IIM Installed?

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/wasnd/was-nd-install/tasks/define_vars.yml:6 Task/Handler: Is Product already Installed?

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/third_party/ibm/wasnd/was-nd-install/tasks/install_was.yml:2 Task/Handler: Disable SELinux

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/third_party/ibm/wasnd/was-nd-install/tasks/install_was.yml:11 Task/Handler: Cleanup Binaries directory

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/wasnd/was-nd-install/tasks/install_was.yml:36 Task/Handler: Generate WAS Response file

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/wasnd/was-nodeagent-start/tasks/main.yml:2 Task/Handler: Is nodeagent Running?

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/ibm/wasnd/was-nodeagent-stop/tasks/main.yml:2 Task/Handler: Verify if pid file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ibm/wasnd/was-profile-create/tasks/main.yml:16 Task/Handler: Generate Response file {{ __rsp_file }}

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/third_party/ibm/wasnd/was-profile-create/tasks/main.yml:29 Task/Handler: Change SOAP request timeout in {{ __was_install_location }}/profiles/{{ __profile_name }}/properties/soap.client.props

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/configure_openldap.yml:11 Task/Handler: Copy DB_CONFIG

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/configure_openldap.yml:42 Task/Handler: Create {{ __schema_ldif_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/configure_ssl.yml:20 Task/Handler: Render {{ __certs_ldif_location }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/configure_ssl.yml:35 Task/Handler: Render {{ __certs_ldif_location }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/configure_ssl.yml:49 Task/Handler: Create {{ __ldap_ssl_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/configure_ssl.yml:59 Task/Handler: Render {{ __slapd_location }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/create_mt_users.yml:40 Task/Handler: Render MT base and org ldifs

no-handler: Tasks that run when changed should likely be handlers
roles/third_party/ldap-install/tasks/create_mt_users.yml:61 Task/Handler: Create {{ __mt_base_ldif_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/create_mt_users.yml:61 Task/Handler: Create {{ __mt_base_ldif_success_file }} file

no-handler: Tasks that run when changed should likely be handlers
roles/third_party/ldap-install/tasks/create_mt_users.yml:76 Task/Handler: Create {{ __mt_org_ldif_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/create_mt_users.yml:76 Task/Handler: Create {{ __mt_org_ldif_success_file }} file

no-handler: Tasks that run when changed should likely be handlers
roles/third_party/ldap-install/tasks/create_mt_users.yml:82 Task/Handler: Render {{ __mt_users_ldif_location }} and {{ __mt_users_generic_ldif_location }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/create_mt_users.yml:82 Task/Handler: Render {{ __mt_users_ldif_location }} and {{ __mt_users_generic_ldif_location }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/create_mt_users.yml:102 Task/Handler: Create {{ __mt_users_created_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/create_mt_users.yml:117 Task/Handler: Create {{ __mt_users_generic_created_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/create_mt_users.yml:124 Task/Handler: Render {{ __mt_groups_ldif_location }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/create_mt_users.yml:138 Task/Handler: Create {{ __mt_groups_created_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/create_users.yml:9 Task/Handler: Render {{ __users_ldif_location }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/create_users.yml:33 Task/Handler: Create {{ __users_ldif_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/create_users.yml:45 Task/Handler: Copy additional users ldif if provided

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/create_users.yml:66 Task/Handler: Create {{ __custom_users_ldif_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/import_mt_schema.yml:25 Task/Handler: Add MT schema to LDAP schemas

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/import_mt_schema.yml:36 Task/Handler: Create {{ __mt_custom_schema_success_file }} file

no-handler: Tasks that run when changed should likely be handlers
roles/third_party/ldap-install/tasks/import_mt_schema.yml:50 Task/Handler: Copy the ldif files to OpenLDAP config directory

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/import_mt_schema.yml:50 Task/Handler: Copy the ldif files to OpenLDAP config directory

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/import_mt_schema.yml:59 Task/Handler: Create {{ __mt_config_added_success_file }} file

unnamed-task: All tasks should be named
roles/third_party/ldap-install/tasks/install_openldap.yml:40 Task/Handler: debug msg={{ slappasswd_output['stdout'] }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/install_openldap.yml:46 Task/Handler: Render {{ __db_ldif_location }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/install_openldap.yml:53 Task/Handler: Render {{ __db_ldif_location }} for RHEL8

risky-file-permissions: File permissions unset or incorrect
roles/third_party/ldap-install/tasks/install_openldap.yml:74 Task/Handler: Create {{ __db_ldif_success_file }} file

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/third_party/ldap-install/tasks/install_symas_openldap.yml:7 Task/Handler: Stop slapd service

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/third_party/ldap-install/tasks/install_symas_openldap.yml:14 Task/Handler: Remove openldap-clients if already installed

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/third_party/ldap-install/tasks/install_symas_openldap.yml:20 Task/Handler: Remove openldap-servers if already installed

package-latest: Package installs should not use latest
roles/third_party/ldap-install/tasks/install_symas_openldap.yml:31 Task/Handler: Upgrade all packages

risky-shell-pipe: Shells that use pipes should set the pipefail option
roles/third_party/linux/swap-setup/tasks/configure_swap.yml:7 Task/Handler: Check if swap is on

no-jinja-when: No Jinja2 in when
roles/third_party/linux/swap-setup/tasks/configure_swap.yml:13 Task/Handler: Disable swap

no-jinja-when: No Jinja2 in when
roles/third_party/linux/swap-setup/tasks/configure_swap.yml:31 Task/Handler: Create or change the size of the swap file

risky-shell-pipe: Shells that use pipes should set the pipefail option
roles/third_party/linux/swap-setup/tasks/configure_swap.yml:45 Task/Handler: Check if swap file is formated

no-handler: Tasks that run when changed should likely be handlers
roles/third_party/linux/swap-setup/tasks/configure_swap.yml:51 Task/Handler: Format swap file

command-instead-of-shell: Use shell only when shell functionality is required
roles/third_party/linux/swap-setup/tasks/configure_swap.yml:66 Task/Handler: Turn swap on

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/linux/swap-setup/tasks/configure_swap.yml:66 Task/Handler: Turn swap on

risky-file-permissions: File permissions unset or incorrect
roles/third_party/linux/swap-setup/tasks/configure_swap.yml:75 Task/Handler: Create {{ __swapfile_success }}

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/linux/swap-setup/tasks/main.yml:1 Task/Handler: Check if swap is already configured on the server

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/mssql-install/tasks/setup_admin_user.yml:1 Task/Handler: Create {{ __mssql_admin_user_name }} user

risky-file-permissions: File permissions unset or incorrect
roles/third_party/mssql-install/tasks/setup_jdbc.yml:2 Task/Handler: Create {{ __jdbc_installation_folder }}

command-instead-of-shell: Use shell only when shell functionality is required
roles/third_party/mssql-install/tasks/setup_mssql.yml:25 Task/Handler: Initialize MSSQL database

risky-shell-pipe: Shells that use pipes should set the pipefail option
roles/third_party/mssql-install/tasks/setup_mssql.yml:60 Task/Handler: Create profiles script

risky-file-permissions: File permissions unset or incorrect
roles/third_party/nfs-install/tasks/configure_master.yml:74 Task/Handler: Render /etc/exports

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/nfs-install/tasks/configure_master.yml:85 Task/Handler: Export file systems

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/nfs-install/tasks/configure_master.yml:88 Task/Handler: Fail if there is nothing exported

risky-shell-pipe: Shells that use pipes should set the pipefail option
roles/third_party/nfs-install/tasks/configure_master.yml:88 Task/Handler: Fail if there is nothing exported

risky-file-permissions: File permissions unset or incorrect
roles/third_party/oracle-install/tasks/configure_oracle.yml:15 Task/Handler: Create {{ __ora_config_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/oracle-install/tasks/install_jdbc.yml:1 Task/Handler: Create {{ __jdbc_installation_folder }}

unnamed-task: All tasks should be named
roles/third_party/oracle-install/tasks/install_oracle.yml:7 Task/Handler: debug msg=Oracle is already up and running

ignore-errors: Use failed_when and specify error conditions instead of using ignore_errors
roles/third_party/oracle-install/tasks/install_oracle.yml:17 Task/Handler: Setup environment variables required for RHEL8

risky-file-permissions: File permissions unset or incorrect
roles/third_party/oracle-install/tasks/install_oracle.yml:39 Task/Handler: Create {{ __ora_prereq_success_file }} file

risky-file-permissions: File permissions unset or incorrect
roles/third_party/oracle-install/tasks/install_oracle.yml:72 Task/Handler: Create {{ __ora_install_success_file }} file

var-spacing: Variables should have spaces before and after: export DATA_SOURCE_NAME='{{ __oracledb_monitor_user }}/{{ db_password }}@//{{ hostvars[groups['oracle_servers'][0]]['inventory_hostname'] }}:{{ __oracledb_port}}/{{ __ora_rsp_starter_db_name }}'
export ORACLE_SID={{ __ora_rsp_starter_db_name }}
export ORACLE_HOME={{ __ora_rsp_oracle_home }}
export TNS_ADMIN={{ __ora_rsp_oracle_home }}/network/admin
export LD_LIBRARY_PATH={{ __ora_rsp_oracle_home }}/lib:{{ __ora_rsp_oracle_home }}/instantclient
export PKG_CONFIG_PATH=/usr/share/pkgconfig
export PATH=$PATH:$ORACLE_HOME/lib:$ORACLE_HOME/bin:$ORACLE_HOME/instantclient:$ORACLE_HOME/network/admin:$ORACLE_HOME

roles/third_party/oracle-install/tasks/install_promethus_oracle_exporter.yml:15 Task/Handler: Add export vars to bashrc {{ __oracle_bashrc_file_path }}

no-changed-when: Commands should not change things if nothing needs doing
roles/third_party/oracle-install/tasks/install_promethus_oracle_exporter.yml:30 Task/Handler: Add Prometheus oracle exporter by running {{ __oracledbexp_extract_folder }}/{{ __oracledb_exporter_version }}/oracledb_exporter --default.metrics {{ __oracledbexp_extract_folder }}/{{ __oracledb_exporter_version }}/default-metrics.toml --log.level error --web.listen-address 0.0.0.0:{{ __oracledb_metrics_port }}

risky-file-permissions: File permissions unset or incorrect
roles/third_party/oracle-install/tasks/prepare_installation.yml:6 Task/Handler: Create installation folder

risky-file-permissions: File permissions unset or incorrect
roles/third_party/oracle-install/tasks/prepare_installation.yml:25 Task/Handler: Render {{ __ora_server_rsp_location }}

You can skip specific rules or tags by adding them to your configuration file:
# .ansible-lint
warn_list:  # or 'skip_list' to silence them completely
  - command-instead-of-shell  # Use shell only when shell functionality is required
  - deprecated-command-syntax  # Using command rather than an argument to e.g. file
  - experimental  # all rules tagged as experimental
  - literal-compare  # Don't compare to literal True/False
  - no-changed-when  # Commands should not change things if nothing needs doing
  - no-handler  # Tasks that run when changed should likely be handlers
  - no-jinja-when  # No Jinja2 in when
  - package-latest  # Package installs should not use latest
  - risky-shell-pipe  # Shells that use pipes should set the pipefail option
  - unnamed-task  # All tasks should be named
  - var-spacing  # Variables should have spaces before and after:  {{ var_name }}

Finished with 139 failure(s), 144 warning(s) on 166 files.

Lots of the used shell tasks can be rewritten to use the Ansible modules like Kubernetes, Docker, Helm and so on.

Working with the repository with that much warning and violations is really hard.

Regards
Christoph

TDI install renames DB2 jdbc files in DB2 directory

Why does the TDI installation rename files in DB2?

- name: "Rename db2jcc4.jar to db2jcc.jar"
copy:
src: "{{ __db2_jdbc_location }}/db2jcc4.jar"
dest: "{{ __db2_jdbc_location }}/db2jcc.jar"
remote_src: yes
when:
- "'db2_servers' in groups"
- db2jcc4_exists.stat.exists
ignore_errors: true
- name: Checking existing version for jre
shell: "{{ __tdi_user_install_dir }}/jvm/jre/bin/./java -version 2>&1 | awk -F'\"' 'NR==1{ print $2 }'"
register: jre_version_stat
- debug:
msg: "{{ jre_version_stat.stdout }}"
- name: "Copy DB2 JDBC files"
copy:
src: "{{ __db2_jdbc_location }}/{{ item }}"
dest: "{{ __jdbc_destination }}"
remote_src: yes
with_items:
- "db2jcc.jar"
- "db2jcc_license_cu.jar"
when:
- "'db2_servers' in groups"

So the file is renamed in DB2/java folder and then copied to TDI. It never was necessary to do so, but it will break other things, because db2jcc.jar and db2cc4.jar are two different kinds of jdbc drivers:

The IBM Data Server Driver for JDBC and SQLJ package includes two JDBC drivers:

db2jcc.jar - This driver is based on the JDBC 3 specification (Minimum required Java version 4)
db2jcc4.jar - This driver is based on the JDBC 4 or later specifications (Minimum required Java version 6)

So you break backwards compatibility in the driver. Just let the files as installed by DB2 setup and copy db2jcc4.jar to TDI, no need to rename!

updateInstaller extraction creates subfolders

Hi,
I installed 7.0 with latest CFix 2110 today and when I check the updateInstaller folder (tried to check the log) I see this:

[root@cnx7-was updateInstaller]# pwd
/opt/HCL/Connections/updateInstaller
[root@cnx7-was updateInstaller]# tree -L 5
.
├── fixes
│   └── CFix.70.2110-IC7.0.0.0-Common-Fix.jar
└── HCL_Connections_Install
    └── tools
        └── updateInstaller
            ├── bin
            │   ├── wpwsadmin.bat
            │   └── wpwsadmin.sh
            ├── config
            │   ├── earFullExpander.py
            │   ├── exportAppEAR.py
            │   ├── updateAppEAR.py
            │   └── updateApp.py
            ├── earLauncher
            │   └── launcher.exe
            ├── fixes
            ├── jvm
            │   └── aix
            ├── lib
            │   ├── commons-collections-3.2.1.jar
            │   ├── commons-configuration-1.5-plus-node-clone.jar
            │   ├── commons-lang-2.4.jar
            │   ├── commons-logging-1.0.4.jar
            │   ├── icu4j-68.1.jar
            │   ├── lcui.jar
            │   ├── nativefile.jar
            │   ├── org.eclipse.core.commands.jar
            │   ├── org.eclipse.equinox.common.jar
            │   ├── org.eclipse.jface.jar
            │   ├── org.eclipse.swt.gtk.aix.ppc64.jar
            │   ├── org.eclipse.swt.gtk.linux.s390x_3.7.0.v3735b.jar
            │   ├── org.eclipse.swt.gtk.linux.x86_64.jar
            │   ├── org.eclipse.swt.win32.win32.x86_64.jar
            │   └── org.eclipse.ui.forms_3.5.100.v20110425.jar
            ├── updateSilent.bat
            ├── updateSilent.sh
            ├── updateWizard.bat
            ├── updateWizard.sh
            └── version
                └── lcui.product
                

so HCL_Connections_Install/tools/updateInstaller are too much.

I checked the packages HCL_Connections_79_updateInstaller_2104.zip and 2102.zip, both show this folder structure! Should start with updateInstaller, then we can just decompress in /opt/HCL/Connections.

SELinux rules

Hi again,
on all Red Hat servers the SELinux is disabled after running the playbook connections-setup-complete.yml, but I see tons of SELinux rules added during the installation. So why are these rules added, when SELinux is disabled everywhere?

On the other side SElinux is the best prevention for container escapes, so at a minimum SELinux should be activated latest after the installation.

Regards
Christoph

Database tuning DB2

Hi,
I wondered why the DB2 server acts so weird slow during installation (using 8GB memory and 4 cores), so I found this:

with_items:
- "db2set DB2_MINIMIZE_LISTPREFETCH=YES"
- "db2set DB2_SELECTIVITY=YES"
- "db2 update dbm cfg using MON_HEAP_SZ {{ __db2_instance_heap_size }}"
- "db2stop force"
- "db2start"

MON_HEAP_SZ which is a value in pages of 4kb (so the default of 4096 seems way too high) https://www.ibm.com/docs/en/db2/9.7?topic=dmcp-mon-heap-sz-database-system-monitor-heap-size

About DB2 selectivity: You can set the environment variables to influence the DB2® optimizer to make better choice about how to access data in the LDAP tables.

I'm not aware that there are any LDAP tables within DB2 Connections databases used!

I tried to find a reason to use DB2_MINIMIZE_LISTPREFETCH=YES the only page I found mentioned it with FileNet (which is not supported in 7 and not installed with this project. So please explain these tuning parameters.

https://help.hcltechsw.com/connections/v65/admin/install/t_inst_configuring_unicode_db2.html tells us to set DB2CODEPAGE=1208

Which is set here:

So the task names in apply_tunings are misleading and should be renamed from Codepage to Tuning!

Connections 7 errors

Hello Team,

We installed Connections 7.0 using Ansible on RHEL 8, but when we tried to access the Connections URL, we received the error "Check that the Common EAR is installed and running correctly." We then checked the Connections applications, and some were not running. We tried to start them manually, but nothing worked. So we finally checked the connection logs and discovered the following error logs in SystemOut.log on the server.

Error:1
8/30/21 15:52:16:600 AST] 000000dd HighwayClient W com.ibm.connections.highway.client.impl.db.HighwayClientImpl getSettingFromHighwayService CLFRO1025E: Cannot access back end database data, required bean is not available

Error2:
[8/30/21 15:52:47:765 AST] 000000c2 SystemErr R Caused by: java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version; class=oracle/jdbc/pool/OracleConnectionPoolDataSource, offset=6
[8/30/21 15:52:47:766 AST] 000000c2 SystemErr R at java.lang.ClassLoader.defineClassImpl(Native Method)
[8/30/21 15:52:47:766 AST] 000000c2 SystemErr R at java.lang.ClassLoader.defineClassInternal(ClassLoader.java:398)
[8/30/21 15:52:47:766 AST] 000000c2 SystemErr R at java.lang.ClassLoader.defineClass(ClassLoader.java:359)
[8/30/21 15:52:47:766 AST] 000000c2 SystemErr R at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:154)
[8/30/21 15:52:47:766 AST] 000000c2 SystemErr R at java.net.URLClassLoader.defineClass(URLClassLoader.java:730)
[8/30/21 15:52:47:766 AST] 000000c2 SystemErr R at java.net.URLClassLoader.access$400(URLClassLoader.java:96)
[8/30/21 15:52:47:766 AST] 000000c2 SystemErr R at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:1187)
[8/30/21 15:52:47:766 AST] 000000c2 SystemErr R at java.security.AccessController.doPrivileged(AccessController.java:770)
[8/30/21 15:52:47:766 AST] 000000c2 SystemErr R at java.net.URLClassLoader.findClass(URLClassLoader.java:605)
[8/30/21 15:52:47:766 AST] 000000c2 SystemErr R at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:244)
[8/30/21 15:52:47:766 AST] 000000c2 SystemErr R at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:944)
[8/30/21 15:52:47:766 AST] 000000c2 SystemErr R at java.lang.ClassLoader.loadClass(ClassLoader.java:889)
[8/30/21 15:52:47:766 AST] 000000c2 SystemErr R at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:135)
[8/30/21 15:52:47:766 AST] 000000c2 SystemErr R at java.lang.ClassLoader.loadClass(ClassLoader.java:872)
[8/30/21 15:52:47:767 AST] 000000c2 SystemErr R at com.ibm.ws.rsadapter.DSConfigHelper.loadClass(DSConfigHelper.java:1526)
[8/30/21 15:52:47:767 AST] 000000c2 SystemErr R at com.ibm.ws.rsadapter.DSConfigHelper.createDataSource(DSConfigHelper.java:745)
[8/30/21 15:52:47:767 AST] 000000c2 SystemErr R at com.ibm.ws.rsadapter.spi.WSRdbDataSource.createNewDataSource(WSRdbDataSource.java:3029)
[8/30/21 15:52:47:767 AST] 000000c2 SystemErr R at com.ibm.ws.rsadapter.spi.WSRdbDataSource.(WSRdbDataSource.java:1358)
[8/30/21 15:52:47:767 AST] 000000c2 SystemErr R at com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl.setDataSourceProperties(WSManagedConnectionFactoryImpl.java:2679)

Thanks
PK

kubeadm 1.24 init fails

The role creates /etc/containerd/config.toml with the command containerd config default but then the command kubeadmin init falis.

Error message:

{"changed": true, "cmd": ["kubeadm", "init", "--config=/tmp/k8s_ansible/kubeadm-config.yaml"], "delta": "0:00:00.522020", "end": "2022-11-02 07:57:42.970618", "msg": "non-zero return code", "rc": 1, "start": "2022-11-02 07:57:42.448598", "stderr": "error execution phase preflight: [preflight] Some fatal errors occurred:\n\t[ERROR CRI]: container runtime is not running: output: E1102 07:57:42.752076    2098 remote_runtime.go:948] \"Status from runtime service failed\" err=\"rpc error: code = Unimplemented desc = unknown service runtime.v1alpha2.RuntimeService\"\ntime=\"2022-11-02T07:57:42Z\" level=fatal msg=\"getting status of runtime: rpc error: code = Unimplemented desc = unknown service runtime.v1alpha2.RuntimeService\"\n, error: exit status 1\n[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`\nTo see the stack trace of this error execute with --v=5 or higher", "stderr_lines": ["error execution phase preflight: [preflight] Some fatal errors occurred:", "\t[ERROR CRI]: container runtime is not running: output: E1102 07:57:42.752076    2098 remote_runtime.go:948] \"Status from runtime service failed\" err=\"rpc error: code = Unimplemented desc = unknown service runtime.v1alpha2.RuntimeService\"", "time=\"2022-11-02T07:57:42Z\" level=fatal msg=\"getting status of runtime: rpc error: code = Unimplemented desc = unknown service runtime.v1alpha2.RuntimeService\"", ", error: exit status 1", "[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`", "To see the stack trace of this error execute with --v=5 or higher"], "stdout": "[init] Using Kubernetes version: v1.24.1\n[preflight] Running pre-flight checks", "stdout_lines": ["[init] Using Kubernetes version: v1.24.1", "[preflight] Running pre-flight checks"]}

This article https://stackoverflow.com/questions/49658051/kubeadm-join-unable-to-check-if-the-container-runtime says delete the config.toml.

Deleting the config.toml and restarting containerd fixes this, but I'm not sure if this has side effects.

Connections 7 iFix installation

Hello,

We successfully installed HCL Connections 7.0 using Ansible on a RHEL machine, but when we try to install Connections iFix using Ansible, the process gets stuck at the following stage. I've waited at least an hour, but the installation process is still stalled. We also checked the Connections logs, but only the Connections cluster stopped showing up in the logs, and nothing else was getting into the logs file.

TASK [ifix : Create a new updateInstaller directory] *******************************************************************************************************************
changed: [devapps.test.com] => (item=/opt/HCL/Connections/updateInstaller/fixes)
ok: [devapps.test.com] => (item=/opt/IBM/Binaries/cnx-ifix/)

TASK [ifix : Download the updateInstaller from http://devapps.test.com:8001/Connections7/updateInstaller_2102.zip] **************************************************
changed: [devapps.test.com]

TASK [ifix : Extract the updateInstaller] ******************************************************************************************************************************
changed: [devapps.test.com]

TASK [ifix : Add +x to updateInstaller] ********************************************************************************************************************************
changed: [devapps.test.com]

TASK [ifix : Download the iFixes HCL_Connections_70_Update.jar] ********************************************************************************************************
changed: [devapps.test.com]

TASK [ifix : Install Connections iFix] *********************************************************************************************************************************
included: /opt/HCL/connections_ansible/connections-automation-main/roles/hcl/connections/ifix/tasks/setup_ifix.yml for devapps.test.com

TASK [ifix : Verify if iFix LO100079 is already installed] *************************************************************************************************************
ok: [devapps.test.com]

TASK [ifix : Run the iFix install for LO100079] ************************************************************************************************************************

Thanks
PK

Oracle DB error while installing the HCL connections on RHEL 8

Hello Team,

We're having trouble installing HCL Connections 7.0 with Ansible on RHEL 8. We already have Oracle DB19, so we created all Connections DB on the server to avoid installing the Oracle server; instead, we are simply passing Oracle DB information in ansible script, but we are receiving the following Oracle DB error.

We have two servers, one for HCL Connections 7./HCL Docs and the other for HCL Component Pack.

TASK [connections : Encode DB Passwords] *******************************************************************************************************************************
fatal: [devapps.test.com]: FAILED! => {"msg": "[{'app': 'activities', 'name': "{{ activities_db.name | default('OPNACT') }}", 'server': '{{ activities_db.server | default( __db_hostname ) }}', 'port': '{{ activities_db.port | default( __db_port ) }}', 'jdbc_file': '{{ activities_db.jdbc_file | default( __db_jdbc_file ) }}', 'type': '{{ activities_db.type | default( __db_type ) }}', 'user': '{{ activities_db.user | default( __db_username ) }}', 'pw': '{{ activities_db.pw | default( __db_password ) }}'}, {'app': 'blogs', 'name': "{{ blogs_db.name | default('BLOGS') }}", 'server': '{{ blogs_db.server | default( __db_hostname ) }}', 'port': '{{ blogs_db.port | default( __db_port ) }}', 'jdbc_file': '{{ blogs_db.jdbc_file | default( __db_jdbc_file ) }}', 'type': '{{ blogs_db.type | default( __db_type ) }}', 'user': '{{ blogs_db.user | default( __db_username ) }}', 'pw': '{{ blogs_db.pw | default( __db_password ) }}'}, {'app': 'communities', 'name': "{{ communities_db.name | default('SNCOMM') }}", 'server': '{{ communities_db.server | default( __db_hostname ) }}', 'port': '{{ communities_db.port | default( __db_port ) }}', 'jdbc_file': '{{ communities_db.jdbc_file | default( __db_jdbc_file ) }}', 'type': '{{ communities_db.type | default( __db_type ) }}', 'user': '{{ communities_db.user | default( __db_username ) }}', 'pw': '{{ communities_db.pw | default( __db_password ) }}'}, {'app': 'dogear', 'name': "{{ dogear_db.name | default('DOGEAR') }}", 'server': '{{ dogear_db.server | default( __db_hostname ) }}', 'port': '{{ dogear_db.port | default( __db_port ) }}', 'jdbc_file': '{{ dogear_db.jdbc_file | default( __db_jdbc_file ) }}', 'type': '{{ dogear_db.type | default( __db_type ) }}', 'user': '{{ dogear_db.user | default( __db_username ) }}', 'pw': '{{ dogear_db.pw | default( __db_password ) }}'}, {'app': 'profiles', 'name': "{{ profiles_db.name | default('PEOPLEDB') }}", 'server': '{{ profiles_db.server | default( __db_hostname ) }}', 'port': '{{ profiles_db.port | default( __db_port ) }}', 'jdbc_file': '{{ profiles_db.jdbc_file | default( __db_jdbc_file ) }}', 'type': '{{ profiles_db.type | default( __db_type ) }}', 'user': '{{ profiles_db.user | default( __db_username ) }}', 'pw': '{{ profiles_db.pw | default( __db_password ) }}'}, {'app': 'wikis', 'name': "{{ wikis_db.name | default('WIKIS') }}", 'server': '{{ wikis_db.server | default( __db_hostname ) }}', 'port': '{{ wikis_db.port | default( __db_port ) }}', 'jdbc_file': '{{ wikis_db.jdbc_file | default( __db_jdbc_file ) }}', 'type': '{{ wikis_db.type | default( __db_type ) }}', 'user': '{{ wikis_db.user | default( __db_username ) }}', 'pw': '{{ wikis_db.pw | default( __db_password ) }}'}, {'app': 'files', 'name': "{{ files_db.name | default('FILES') }}", 'server': '{{ files_db.server | default( __db_hostname ) }}', 'port': '{{ files_db.port | default( __db_port ) }}', 'jdbc_file': '{{ files_db.jdbc_file | default( __db_jdbc_file ) }}', 'type': '{{ files_db.type | default( __db_type ) }}', 'user': '{{ files_db.user | default( __db_username ) }}', 'pw': '{{ files_db.pw | default( __db_password ) }}'}, {'app': 'forums', 'name': "{{ forums_db.name | default('FORUM') }}", 'server': '{{ forums_db.server | default( __db_hostname ) }}', 'port': '{{ forums_db.port | default( __db_port ) }}', 'jdbc_file': '{{ forums_db.jdbc_file | default( __db_jdbc_file ) }}', 'type': '{{ forums_db.type | default( __db_type ) }}', 'user': '{{ forums_db.user | default( __db_username ) }}', 'pw': '{{ forums_db.pw | default( __db_password ) }}'}, {'app': 'news', 'name': "{{ homepage_db.name | default('HOMEPAGE') }}", 'server': '{{ homepage_db.server | default( __db_hostname ) }}', 'port': '{{ homepage_db.port | default( __db_port ) }}', 'jdbc_file': '{{ homepage_db.jdbc_file | default( __db_jdbc_file ) }}', 'type': '{{ homepage_db.type | default( __db_type ) }}', 'user': '{{ homepage_db.user | default( __db_username ) }}', 'pw': '{{ homepage_db.pw | default( __db_password ) }}'}, {'app': 'search', 'name': "{{ homepage_db.name | default('HOMEPAGE') }}", 'server': '{{ homepage_db.server | default( __db_hostname ) }}', 'port': '{{ homepage_db.port | default( __db_port ) }}', 'jdbc_file': '{{ homepage_db.jdbc_file | default( __db_jdbc_file ) }}', 'type': '{{ homepage_db.type | default( __db_type ) }}', 'user': '{{ homepage_db.user | default( __db_username ) }}', 'pw': '{{ homepage_db.pw | default( __db_password ) }}'}, {'app': 'homepage', 'name': "{{ homepage_db.name | default('HOMEPAGE') }}", 'server': '{{ homepage_db.server | default( __db_hostname ) }}', 'port': '{{ homepage_db.port | default( __db_port ) }}', 'jdbc_file': '{{ homepage_db.jdbc_file | default( __db_jdbc_file ) }}', 'type': '{{ homepage_db.type | default( __db_type ) }}', 'user': '{{ homepage_db.user | default( __db_username ) }}', 'pw': '{{ homepage_db.pw | default( __db_password ) }}'}, {'app': 'metrics', 'name': "{{ metrics_db.name | default('METRICS') }}", 'server': '{{ metrics_db.server | default( __db_hostname ) }}', 'port': '{{ metrics_db.port | default( __db_port ) }}', 'jdbc_file': '{{ metrics_db.jdbc_file | default( __db_jdbc_file ) }}', 'type': '{{ metrics_db.type | default( __db_type ) }}', 'user': '{{ metrics_db.user | default( __db_username ) }}', 'pw': '{{ metrics_db.pw | default( __db_password ) }}'}, {'app': 'mobile', 'name': "{{ mobile_db.name | default('MOBILE') }}", 'server': '{{ mobile_db.server | default( __db_hostname ) }}', 'port': '{{ mobile_db.port | default( __db_port ) }}', 'jdbc_file': '{{ mobile_db.jdbc_file | default( __db_jdbc_file ) }}', 'type': '{{ mobile_db.type | default( __db_type ) }}', 'user': '{{ mobile_db.user | default( __db_username ) }}', 'pw': '{{ mobile_db.pw | default( __db_password ) }}'}, {'app': 'pushNotification', 'name': "{{ push_db.name | default('PNS') }}", 'server': '{{ push_db.server | default( __db_hostname ) }}', 'port': '{{ push_db.port | default( __db_port ) }}', 'jdbc_file': '{{ push_db.jdbc_file | default( __db_jdbc_file ) }}', 'type': '{{ push_db.type | default( __db_type ) }}', 'user': '{{ push_db.user | default( __db_username ) }}', 'pw': '{{ push_db.pw | default( __db_password ) }}'}, {'app': 'icec', 'name': "{{ icec_db.name | default('XCC') }}", 'server': '{{ icec_db.server | default( __db_hostname ) }}', 'port': '{{ icec_db.port | default( __db_port ) }}', 'jdbc_file': '{{ icec_db.jdbc_file | default( __db_jdbc_file ) }}', 'type': '{{ icec_db.type | default( __db_type ) }}', 'user': '{{ icec_db.user | default( __db_username ) }}', 'pw': '{{ icec_db.pw | default( __db_password ) }}'}, {'app': 'ic360', 'name': "{{ ic360_db.name | default('ESSAPPS') }}", 'server': '{{ ic360_db.server | default( __db_hostname ) }}', 'port': '{{ ic_db.port | default( __db_port ) }}', 'jdbc_file': '{{ ic360_db.jdbc_file | default( __db_jdbc_file ) }}', 'type': '{{ ic360_db.type | default( __db_type ) }}', 'user': '{{ ic360_db.user | default( __db_username ) }}', 'pw': '{{ ic360_db.pw | default( __db_password ) }}'}]: {{ db_hostname }}: {{ hostvars[groups['db_servers'][0]]['inventory_hostname'] }}: list object has no element 0"}

PLAY RECAP *************************************************************************************************************************************************************
devapps.test.com : ok=169 changed=70 unreachable=0 failed=1 skipped=51 rescued=0 ignored=9
kbclusterdev.test.com : ok=19 changed=3 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0

selfregistration-config.xml not valid xml in 6.5

The Fix for 6.5CR1 can't be deployed, because Installation Manager logs a non-valid xml file: selfregistration-config.xml

In 6.5 the selfregistration-config.xsd does not know about invite-user-type which is set here:

- name: Set Invite user type
xml:
path: "{{ __selfreg_full_path }}"
xpath: "{{ __selfreg_invite_usertype_xpath }}"
value: "{{ invite_user_type | default('internal') }}"

So to have valid xml and to be able to install the latest fixes this needs to be removed for the 6.5 installation!

This needs to be changed to:

- name:                                     Set Invite user type
  xml:
    path:                                   "{{ __selfreg_full_path }}"
    xpath:                                  "{{ __selfreg_invite_usertype_xpath }}"
    value:                                  "{{ invite_user_type | default('internal') }}"
  when:
    - __cnx_major_version == '7'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.