Maximo

 View Only

Deploy MAS Manage (Maximo 8.x) on a single node openshift (SNO) in AWS

By Brian Zhu posted Fri September 16, 2022 08:34 AM

  
Running MAS Manage on a regular OCP (3 master nodes / 3 worker nodes) may be too expensive as a dev/test env. In this blog, I will show how to run MAS Manage on a single node openshift (SNO) in AWS.

To move forward with MAS Manage (Maximo 8.x) install you will need a few basics. Below is the check list and ensure you have them before start the installation.

Steps for MAS Manage Deployment:

1) set up IBM MAS DevOps ansible collection docker container
- mkdir ~/sno
- cd ~/sno
- git clone https://github.com/ibm-mas/ansible-devops
- docker run -dit -v ~/sno:/opt/app-root/src/sno --name sno quay.io/ibmmas/ansible-devops:latest bash​
- docker exec -it sno bash
- cd /opt/app-root/src/sno/ansible-devops/ibm/mas_devops
- ./rebuild.sh
- exit

2) log into the docker container; create a folder for mas configuration; then exit the container
- "docker exec -it sno bash"
- "mkdir /root/masconfig-sno​"
- "exit"


3) copy pull-secret and mas license file into the docker ontainer
- "docker cp pull-secret sno:/root/masconfig-sno/pull-secret"
- "docker cp license.dat sno:/root/masconfig-sno/license.dat"

4) log into docker container, set env variables, then run playbook to provision SNO Cluster
- docker exec -it sno bash
- export AWS_ACCESS_KEY_ID="<your aws access key id"
- export AWS_SECRET_ACCESS_KEY="<your aws secret access key"
- export IPI_PLATFORM=aws
- export CLUSTER_TYPE="ipi"
- export CLUSTER_NAME=<cluster name e.g. sno>
- export IPI_REGION=<aws region e.g. us-east-1?
- export IPI_BASE_DOMAIN=<your domain>
- export IPI_PULL_SECRET_FILE="/root/masconfig-sno/pull-secret"
- export IPI_DIR="/root/sno"
- export IPI_CONTROLPLANE_REPLICAS=1
- export IPI_COMPUTE_REPLICAS=0
- export OCP_VERSION="latest-4.8"
- ansible-playbook ibm.mas_devops.ocp_aws_provision

When the provisioning is done, you can see the credential for sno cluster in the screen like bel


5) run one click playbook to install mas core

- export MAS_INSTANCE_ID=inst1
- export MAS_ENTITLEMENT_KEY=<your entitlemment key>
- export IBM_ENTITLEMENT_KEY=<your entitlemment key>
- export MAS_CONFIG_DIR=/root/masconfig-sno
- export SLS_LICENSE_FILE=/root/masconfig-sno/license.dat
- export SLS_LICENSE_ID=<license id that can be found in the license.dat>
- export SLS_ENTITLEMENT_KEY=<your entitlemment key>
- export UDS_CONTACT_EMAIL=<contact email>
- export UDS_CONTACT_FIRSTNAME=<first name>
- export UDS_CONTACT_LASTNAME=<last name>
- export PROMETHEUS_STORAGE_CLASS=gp2
- export PROMETHEUS_ALERTMGR_STORAGE_CLASS=gp2
- export GRAFANA_INSTANCE_STORAGE_CLASS=gp2
- export MONGODB_STORAGE_CLASS=gp2
- export MONGODB_REPLICAS=1
- export UDS_STORAGE_CLASS=gp2
- ansible-playbook ibm.mas_devops.oneclick_core


When the playbook is completed, you can find Maximo Application Suite Login Info as below



6) run one click playbook to add mas manage

- export DB2_DATA_STORAGE_CLASS=gp2
- export DB2_DATA_STORAGE_SIZE=100Gi ## default value
- export DB2_META_STORAGE_CLASS=gp2
- export DB2_META_STORAGE_SIZE=20Gi ## default
- export DB2_BACKUP_STORAGE_CLASS=gp2
- export DB2_BACKUP_STORAGE_SIZE=100Gi ## default value
- export DB2_LOGS_STORAGE_CLASS=gp2
- export DB2_LOGS_STORAGE_SIZE=100Gi ## default value
- export DB2_TEMP_STORAGE_CLASS=gp2
- export DB2_TEMP_STORAGE_SIZE=100Gi  ##default value
- export DB2_CPU_REQUESTS=2000m ##default value
- export DB2_CPU_LIMITS=4000m ## default value
- export DB2_MEMORY_REQUESTS=2Gi ## default value
- export DB2_MEMORY_LIMITS=6Gi ## default value
- export IBM_ENTITLEMENT_KEY=<your IBM_ENTITLEMENT_KEY>
- export DB2_ENTITLEMENT_KEY=<your IBM_ENTITLEMENT_KEY>
- export DB2_META_STORAGE_ACCESSMODE=ReadWriteOnce
- export DB2_BACKUP_STORAGE_ACCESSMODE=ReadWriteOnce
- export DB2_NAMESPACE=db2u
- export MAS_APP_SETTINGS_AIO_FLAG=false

- ansible-playbook ibm.mas_devops.oneclick_add_manage


#AssetandFacilitiesManagement
#Maximo
10 comments
191 views

Permalink

Comments

Tue April 25, 2023 04:24 PM

Hi Bria , I have followed in supplying the pull-secret and still throwing the error. Could you please suggest. Thanks TASK [ibm.mas_devops.ocp_provision : ipi : Fail if pull secret does not exist] *************************************************************************************************************** Tuesday 25 April 2023 20:04:31 +0000 (0:00:00.677) 0:00:04.021 ********* fatal: [localhost]: FAILED! => { "assertion": "ipi_pull_secret_file_lookup.stat.exists", "changed": false, "evaluated_to": false, "msg": "Red Hat pull secret file does not exist: /opt/app-root/src/masconfig/pull-secret" }

Tue April 25, 2023 04:22 PM

@Brian Zhu , This article is great helpful. I hit a blocker with respect to pull-secret file not found.

PS C:\Users\Lakshmanarao\zprosno> docker exec -it sno bash
IBM Maximo Application Suite CLI Container v4.0.6
 
https://github.com/ibm-mas/ansible-devops
https://github.com/ibm-mas/ansible-airgap
https://github.com/ibm-mas/cli
 
Available commands:
  - mas install to launch a MAS install pipeline
  - mas uninstall to launch a MAS uninstall pipeline
  - mas provision-fyre to provision an OCP cluster on IBM DevIT Fyre (internal)
  - mas provision-roks to provision an OCP cluster on IBMCloud Red Hat OpenShift Service (ROKS)
  - mas provision-aws to provision an OCP cluster on AWS
  - mas provision-rosa to provision an OCP cluster on AWS Red Hat OpenShift Service (ROSA)
  - mas setup-registry to setup a private container registry on an OCP cluster
  - mas mirror-images to mirror container images required by mas to a private registry
  - mas configure-ocp-for-mirror to configure a cluster to use a private registry as a mirror
 
[ibmmas/cli:4.0.6]mascli$ mas provision-aws
/mascli/mas: line 62: /mascli/functions/configtool_oidc: No such file or directory
IBM Maximo Application Suite AWS Cluster Provisioner
Powered by https://github.com/ibm-mas/ansible-devops/
 
 
AWS Access Key ID
Provide your AWS API Key ID (if you have not set the AWS_ACCESS_KEY_ID
environment variable) which will be used to provision an AWS instance.
AWS API Key ID > AKIAR3W5QGFO3GWPNQSJ
 
AWS Secret Access Key
Provide your AWS Secret Access Key (if you have not set the AWS_SECRET_ACCESS_KEY
environment variable) which will be used to provision an AWS instance.
 
AWS Secret Access Key > PR5aHcBWXfS1DhL/heKAfSFwO+y7VrHvd8/NP2Vp
Re-use saved AWS Secret Access Key Starting 'PR5aHcBWXfS1DhL/heKAfSFwO+y7VrHvd8/NP2Vp'? [Y/n] y
 
AWS Cluster Configuration
Cluster Name > zprosnozprosno
AWS Region > us-east-1
AWS Base Domain > zcloudsolutions.com
Do you want single node openshift  [Y/n] y
 
OCP Version:
  1. 4.10 (MAS 8.9-8.10)
Select Version > 11
 
Proceed with these settings [y/N] y
Using /opt/app-root/src/ansible.cfg as config file
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
[WARNING]: running playbook inside collection ibm.mas_devops
 
PLAY [localhost] *****************************************************************************************************************************************************************************
 
TASK [Gathering Facts] ***********************************************************************************************************************************************************************
Tuesday 25 April 2023  20:04:27 +0000 (0:00:00.044)       0:00:00.044 *********
ok: [localhost]
 
TASK [Check for required environment variables] **********************************************************************************************************************************************
Tuesday 25 April 2023  20:04:30 +0000 (0:00:02.374)       0:00:02.419 *********
ok: [localhost] => {
    "changed": false,
    "msg": "All assertions passed"
}
 
TASK [ibm.mas_devops.ansible_version_check : Verify minimum Ansible version is 2.10.3] *******************************************************************************************************
Tuesday 25 April 2023  20:04:30 +0000 (0:00:00.165)       0:00:02.585 *********
ok: [localhost] => {
    "changed": false,
    "msg": "All assertions passed"
}
 
TASK [ibm.mas_devops.ocp_provision : Fail if cluster name & type is not provided] ************************************************************************************************************
Tuesday 25 April 2023  20:04:30 +0000 (0:00:00.114)       0:00:02.699 *********
ok: [localhost] => {
    "changed": false,
    "msg": "All assertions passed"
}
 
TASK [ibm.mas_devops.ocp_provision : Backwards compatability for 'quickburn' cluster type] ***************************************************************************************************
Tuesday 25 April 2023  20:04:30 +0000 (0:00:00.113)       0:00:02.812 *********
skipping: [localhost] => {"changed": false, "skip_reason": "Conditional result was False"}
 
TASK [ibm.mas_devops.ocp_provision : Fail if cluster type is not supported] ******************************************************************************************************************
Tuesday 25 April 2023  20:04:30 +0000 (0:00:00.074)       0:00:02.887 *********
ok: [localhost] => {
    "changed": false,
    "msg": "All assertions passed"
}
 
TASK [ibm.mas_devops.ocp_provision : Fail if no OCP version is provided] *********************************************************************************************************************
Tuesday 25 April 2023  20:04:30 +0000 (0:00:00.087)       0:00:02.974 *********
ok: [localhost] => {
    "changed": false,
    "msg": "All assertions passed"
}
 
TASK [ibm.mas_devops.ocp_provision : include_tasks] ******************************************************************************************************************************************
Tuesday 25 April 2023  20:04:30 +0000 (0:00:00.097)       0:00:03.071 *********
included: /opt/app-root/lib64/python3.9/site-packages/ansible_collections/ibm/mas_devops/roles/ocp_provision/tasks/providers/ipi.yml for localhost
 
TASK [ibm.mas_devops.ocp_provision : ipi : Fail if required parameters are not provided] *****************************************************************************************************
Tuesday 25 April 2023  20:04:30 +0000 (0:00:00.162)       0:00:03.233 *********
ok: [localhost] => {
    "changed": false,
    "msg": "All assertions passed"
}
 
TASK [ibm.mas_devops.ocp_provision : ipi : Check ipi_pull_secret_file] ***********************************************************************************************************************
Tuesday 25 April 2023  20:04:31 +0000 (0:00:00.110)       0:00:03.343 *********
ok: [localhost] => {"changed": false, "stat": {"exists": false}}
 
TASK [ibm.mas_devops.ocp_provision : ipi : Fail if pull secret does not exist] ***************************************************************************************************************
Tuesday 25 April 2023  20:04:31 +0000 (0:00:00.677)       0:00:04.021 *********
fatal: [localhost]: FAILED! => {
    "assertion": "ipi_pull_secret_file_lookup.stat.exists",
    "changed": false,
    "evaluated_to": false,
    "msg": "Red Hat pull secret file does not exist: /opt/app-root/src/masconfig/pull-secret"
}
 
PLAY RECAP ***********************************************************************************************************************************************************************************
localhost                  : ok=9    changed=0    unreachable=0    failed=1    skipped=1    rescued=0    ignored=0
 
Tuesday 25 April 2023  20:04:31 +0000 (0:00:00.078)       0:00:04.099 *********
===============================================================================
Gathering Facts ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2.37s
ibm.mas_devops.ocp_provision : ipi : Check ipi_pull_secret_file ----------------------------------------------------------------------------------------------------------------------- 0.68s
Check for required environment variables ---------------------------------------------------------------------------------------------------------------------------------------------- 0.17s
ibm.mas_devops.ocp_provision : include_tasks ------------------------------------------------------------------------------------------------------------------------------------------ 0.16s
ibm.mas_devops.ansible_version_check : Verify minimum Ansible version is 2.10.3 ------------------------------------------------------------------------------------------------------- 0.11s
ibm.mas_devops.ocp_provision : Fail if cluster name & type is not provided ------------------------------------------------------------------------------------------------------------ 0.11s
ibm.mas_devops.ocp_provision : ipi : Fail if required parameters are not provided ----------------------------------------------------------------------------------------------------- 0.11s
ibm.mas_devops.ocp_provision : Fail if no OCP version is provided --------------------------------------------------------------------------------------------------------------------- 0.10s
ibm.mas_devops.ocp_provision : Fail if cluster type is not supported ------------------------------------------------------------------------------------------------------------------ 0.09s
ibm.mas_devops.ocp_provision : ipi : Fail if pull secret does not exist --------------------------------------------------------------------------------------------------------------- 0.08s
ibm.mas_devops.ocp_provision : Backwards compatability for 'quickburn' cluster type --------------------------------------------------------------------------------------------------- 0.07s
 
Fatal Error[1]  See /opt/app-root/src/.ibm-mas/logs/mas.log for details
[ibmmas/cli:4.0.6]mascli$ ls
ansible.cfg  ansible-devops  functions  mas  masconfig  templates  tools
[ibmmas/cli:4.0.6]mascli$ cd masconfig
[ibmmas/cli:4.0.6]masconfig$ ls
license.dat  pull-secret  pull-secret.txt
[ibmmas/cli:4.0.6]masconfig$ cd /opt/app-root/src/.ibm-mas/logs
[ibmmas/cli:4.0.6]logs$ cat mas.log
cat: mas.log: No such file or directory

Thu December 08, 2022 01:14 PM

Giridhar Ganapavarapu 
you can check .openshift_install.log to see why the provision failed. The log is located at  /root/sno/config/<sno-cluster name> e.g. /root/sno/config/sno

Thu December 08, 2022 01:08 PM

@Dianne Woodley - we don't have ansible script for oracle provision.
What you can do, before Step 6, log in MAS Core UI (info can be found in step 5), add a system jdbc configure for oracle db.
Then update oneclick_add_manage.yml, delete below 2 lines in role section.
roles:
- ibm.mas_devops.db2
- ibm.mas_devops.suite_db2_setup_for_manage

Thu December 08, 2022 01:04 PM

Note: For those who uses latest ansible-devops build, add two changes if needed.
- export DB2_INSTANCE_DBM_CONFIG=1500000
1500000 means 6G memory (1500000 * 4K)
- consider to low DB2_CPU_REQUESTS=1

Thu November 24, 2022 10:14 AM

Hi Brian.
Thanks for sharing this SNO!.

On step 6, do you have the ansible script for standing up Manage to connect to Oracle DB?

Fri October 28, 2022 10:07 AM

To resolve it.. I have manually downloaded OCP installer and placed it in /root/sno/installer/$OCP_VERSION and ran the OCP provision script again. I am getting below error now:
```
TASK [ibm.mas_devops.ocp_provision : ipi : Create ipi_config_dir if it does not exist] *******************************************************************************************************
Friday 28 October 2022 12:24:25 +0000 (0:00:00.199) 0:00:03.415 ********
changed: [localhost] => {"changed": true, "gid": 0, "group": "root", "mode": "0755", "owner": "root", "path": "/root/sno/config/sno-rs", "size": 4096, "state": "directory", "uid": 0}

TASK [ibm.mas_devops.ocp_provision : ipi : Build the install-config.yaml] ********************************************************************************************************************
Friday 28 October 2022 12:24:25 +0000 (0:00:00.289) 0:00:03.705 ********
changed: [localhost] => {"changed": true, "checksum": "c13c37e4b78824fea4f48495f375b19bae9a6683", "dest": "/root/sno/config/sno-rs/install-config.yaml", "gid": 0, "group": "root", "md5sum": "35fd0bb99ec8bf0257737fbed3b7c2b7", "mode": "0644", "owner": "root", "size": 3302, "src": "/root/.ansible/tmp/ansible-tmp-1666959865.6457691-694-18847863108776/source", "state": "file", "uid": 0}

TASK [ibm.mas_devops.ocp_provision : ipi : Create cluster] ***********************************************************************************************************************************
Friday 28 October 2022 12:24:26 +0000 (0:00:00.424) 0:00:04.130 ********
FAILED - RETRYING: [localhost]: ipi : Create cluster (60 retries left).
FAILED - RETRYING: [localhost]: ipi : Create cluster (59 retries left).
FAILED - RETRYING: [localhost]: ipi : Create cluster (58 retries left).
FAILED - RETRYING: [localhost]: ipi : Create cluster (57 retries left).
FAILED - RETRYING: [localhost]: ipi : Create cluster (56 retries left).
```

Fri October 28, 2022 10:05 AM

@Brian Zhu I got below error while running `ansible-playbook ibm.mas_devops.ocp_aws_provision` :
```
fatal: [localhost]: FAILED! => {"changed": false, "msg": "Failure downloading https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable-4.10/openshift-install-linux.tar.gz, The read operation timed out"}
```

Mon October 24, 2022 05:53 AM

Hi Brian,
Is MAS Manage on a single node openshift (SNO) running on vSphere (onPrem) installation scenario also possible?
Thanks and Best Regards, Jani

Fri October 07, 2022 04:28 PM

For anyone who has an issue to run below command in step 1
docker run -dit -v ~/sno:/opt/app-root/src/sno --name sno quay.io/ibmmas/ansible-devops:latest bash​

Use this new command instead:
docker run -dit -v ~/sno:/opt/app-root/src/sno --name sno quay.io/ibmmas/ansible-devops:10.2.0 bash​

After docker exec -it sno bash,  then run:
cd sno
git clone https://github.com/ibm-mas/ansible-devops