Not able to run the application from Ansible while same apps starts/stops from linux

Hi There,
We are trying to automate starting up and shutting down of Enovia application from Ansible. Enovia application runs on linux in our organizational environment.
The good thing is that when we start Enovia directly from the server using unix shell command, this works but when we try starting the same application from ansible, it ends up with failure in starting up of the web GUI.

Observation:
1) The application starts the JVM for 3dxspacenocas application but it dies after 30-40 seconds.
2) The other application starts well which is 3dxfdsearch successfully.
2) Ansible processes show that the application count increased intially but later the JVM process dies down.

I am not able to find out what is the exact issue.

Below please find attached the CODE which I have been using for your reference.

  • my code

#This script starts the Enovia applications.
#These applications include fdsearch, 3dspace, 3dspacenocas, 3dnotification, 3dswymn

This script is calling some environment files and then the mail shell scripts which

starts the Enovia application

  • name: Run shell script on managed host
    hosts: 3dxdap1.domain.com
    gather_facts: yes
    become: yes
    become_user: mxvan
    vars:
    script_path: β€œ/opt/matrixone/tools/mms/matrix_manage.sh”
    l_action: β€œstartall” # Change to β€œstartall” or β€œstopall” as needed
    l_env_file_1: β€œ/home/matrixusers/mxvan/.profile”
    l_env_file_2: β€œ/home/matrixusers/mxvan/.bash_profile”
    l_environment: β€œ3dvan” # Change to β€œinteg”, β€œprod”, or other environments as needed
    ENV: β€œ{{l_environment}}”
    l_env_file: β€œ/opt/matrixone/3dvan/r2023x/3dspace/scripts/mxEnv.sh”
    l_cronprofile: β€œ/home/matrixusers/mxvan/.cronprofile”
    DIR_USER: β€œ3dvan|mxvan|tomee_3dpassport|tomee_3dcomment|tomee_3ddashboard|tomee_3dfcs|tomee_3dspace|tomee_3dspacenocas|tomee_3dfedsearch|tomee_3dswym|latest|r2023x|1\n”
    WAR: β€œ3ddev|3dxdfcs1.domain.com|3dxddash2.domain.com|3dxdpass2.domain.com\n 3dvan|3dxdfcs2.domain.com|3dxddash1.domain.com|3dxdpass1.domain.com\n
    3dinteg|3dxdfcs2.domain.com|3dxddash3.domain.com|3dxdpass3.domain.com\n 3dfulldev|3dxdfcs2.domain.com|3dxddash4.domain.com|3dxdpass4.domain.com\n
    3dbst|3dxdap2.domain.com|3dxdfcs3.bbn.domain.com|3dxdfcs1.domain.com|3dxddash5.domain.com|3dxdpass5.domain.com\n prod|3dxpap1.domain.com|3dxpap2.domain.com|3dxpfcos1.domain.com|3dxpfbbn1.bbn.domain.com|3dxpfhch1.hch.domain.com|3dxpfpng1.png.domain.com|3dxpfscs1.scs.domain.com|3dxpfsrs1.srs.domain.com|3dxpfsgp1.sgp.domain.com|3dxpfedi1.edi.domain.com|3dxpdash1.domain.com|3dxppass1.domain.com\n
    dr|3dxdrdash1.dfw.domain.com|3dxdrpass1.dfw.domain.com|3dxdrex1.dfw.domain.com\n”

    STAT: β€œ3dbst|3dxdap2.domain.com\n 3dinteg|\n prod|3dxpap1.domain.com|3dxpap2.domain.com\n”
    EXTWAR: β€œ3dbst|3dxdex1.domain.com\n
    prod|3dxpex1.domain.com|3dxpex2.domain.com\n”

    EXTSTAT: β€œ3dbst|3dxex1.domain.com\n prod|3dxpex1.domain.com|3dxpex2.domain.com\n”

    tasks:

    • name: Get the DIR
      shell: β€œecho -e β€˜{{DIR_USER}}’ | sed β€˜s/^ //’ |grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $1}’”
      register: l_dir

    • name: Set the DIR
      ansible.builtin.set_fact:
      DIR: β€œ{{l_dir.stdout}}”

    • name: Get the USER
      shell: β€œecho -e ’ {{ DIR_USER }} ’ | sed β€˜s/^ //’|grep β€˜^{{ ENV }}|’ | awk -F β€˜|’ β€˜{print $2}’”
      register: l_user

    • name: Set the USER
      ansible.builtin.set_fact:
      USER: β€œ{{ l_user.stdout }}”

    • name: Get the NODE
      shell: β€œuname -n”
      register: l_node

    • name: Set the NODE
      ansible.builtin.set_fact:
      NODE: β€œ{{l_node.stdout}}”

    • name: Get the SOURCE
      shell: β€œecho -e β€˜{{DIR_USER}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $3}’”
      register: l_source

    • name: Set the SOURCE
      ansible.builtin.set_fact:
      SOURCE: β€œ{{l_source.stdout}}”

    • name: Get the WAR_DEST1
      shell: β€œecho -e β€˜{{WAR}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $2}’”
      register: l_war_dest1

    • name: Set the WAR_DEST1
      ansible.builtin.set_fact:
      WAR_DEST1: β€œ{{l_war_dest1.stdout}}”

    • name: Get the WAR_DEST2
      shell: β€œecho -e β€˜{{WAR}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $3}’”
      register: l_war_dest2

    • name: Set the WAR_DEST2
      ansible.builtin.set_fact:
      WAR_DEST2: β€œ{{l_war_dest2.stdout}}”

    • name: Get the WAR_DEST3
      shell: β€œecho -e β€˜{{WAR}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $4}’”
      register: l_war_dest3

    • name: Set the WAR_DEST3
      ansible.builtin.set_fact:
      WAR_DEST3: β€œ{{l_war_dest3.stdout}}”

    • name: Get the WAR_DEST4
      shell: β€œecho -e β€˜{{WAR}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $5}’”
      register: l_war_dest4

    • name: Set the WAR_DEST4
      ansible.builtin.set_fact:
      WAR_DEST4: β€œ{{l_war_dest4.stdout}}”

    • name: Get the WAR_DEST5
      shell: β€œecho -e β€˜{{WAR}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $6}’”
      register: l_war_dest5

    • name: Set the WAR_DEST5
      ansible.builtin.set_fact:
      WAR_DEST5: β€œ{{l_war_dest5.stdout}}”

    • name: Get the WAR_DEST6
      shell: β€œecho -e β€˜{{WAR}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $7}’”
      register: l_war_dest6

    • name: Set the WAR_DEST6
      ansible.builtin.set_fact:
      WAR_DEST6: β€œ{{l_war_dest6.stdout}}”

    • name: Get the WAR_DEST7
      shell: β€œecho -e β€˜{{WAR}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $8}’”
      register: l_war_dest7

    • name: Set the WAR_DEST7
      ansible.builtin.set_fact:
      WAR_DEST7: β€œ{{l_war_dest7.stdout}}”

    • name: Get the WAR_DEST8
      shell: β€œecho -e β€˜{{WAR}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $9}’”
      register: l_war_dest8

    • name: Set the WAR_DEST8
      ansible.builtin.set_fact:
      WAR_DEST8: β€œ{{l_war_dest8.stdout}}”

    • name: Get the WAR_DEST9
      shell: β€œecho -e β€˜{{WAR}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $10}’”
      register: l_war_dest9

    • name: Set the WAR_DEST9
      ansible.builtin.set_fact:
      WAR_DEST9: β€œ{{l_war_dest9.stdout}}”

    • name: Get the WAR_DEST10
      shell: β€œecho -e β€˜{{WAR}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $11}’”
      register: l_war_dest10

    • name: Set the WAR_DEST10
      ansible.builtin.set_fact:
      WAR_DEST10: β€œ{{l_war_dest10.stdout}}”

    • name: Get the WAR_DEST11
      shell: β€œecho -e β€˜{{WAR}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $12}’”
      register: l_war_dest11

    • name: Set the WAR_DEST11
      ansible.builtin.set_fact:
      WAR_DEST11: β€œ{{l_war_dest11.stdout}}”

    • name: Get the WAR_DEST12
      shell: β€œecho -e β€˜{{WAR}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $13}’”
      register: l_war_dest12

    • name: Set the WAR_DEST12
      ansible.builtin.set_fact:
      WAR_DEST12: β€œ{{l_war_dest12.stdout}}”

    • name: Get the WAR_DEST13
      shell: β€œecho -e β€˜{{WAR}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $14}’”
      register: l_war_dest13

    • name: Set the WAR_DEST13
      ansible.builtin.set_fact:
      WAR_DEST13: β€œ{{l_war_dest13.stdout}}”

    • name: Get the WAR_DEST14
      shell: β€œecho -e β€˜{{WAR}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $15}’”
      register: l_war_dest14

    • name: Set the WAR_DEST14
      ansible.builtin.set_fact:
      WAR_DEST14: β€œ{{l_war_dest14.stdout}}”

    • name: Get the WAR_DEST15
      shell: β€œecho -e β€˜{{WAR}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $16}’”
      register: l_war_dest15

    • name: Set the WAR_DEST15
      ansible.builtin.set_fact:
      WAR_DEST15: β€œ{{l_war_dest15.stdout}}”

    • name: Get the WAR_DEST16
      shell: β€œecho -e β€˜{{WAR}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $17}’”
      register: l_war_dest16

    • name: Set the WAR_DEST16
      ansible.builtin.set_fact:
      WAR_DEST16: β€œ{{l_war_dest16.stdout}}”

    • name: Get the STAT_DEST1
      shell: β€œecho -e β€˜{{STAT}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $2}’”
      register: l_stat_dest1

    • name: Set the STAT_DEST1
      ansible.builtin.set_fact:
      STAT_DEST1: β€œ{{l_stat_dest1.stdout}}”

    • name: Get the STAT_DEST2
      shell: β€œecho -e β€˜{{STAT}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $3}’”
      register: l_stat_dest2

    • name: Set the STAT_DEST2
      ansible.builtin.set_fact:
      STAT_DEST2: β€œ{{l_stat_dest2.stdout}}”

    • name: Get the STAT_DEST3
      shell: β€œecho -e β€˜{{STAT}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $4}’”
      register: l_stat_dest3

    • name: Set the STAT_DEST3
      ansible.builtin.set_fact:
      STAT_DEST3: β€œ{{l_stat_dest3.stdout}}”

    • name: Get the EXTWAR_DEST1
      shell: β€œecho -e β€˜{{EXTWAR}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $2}’”
      register: l_extwar_dest1

    • name: Set the EXTWAR_DEST1
      ansible.builtin.set_fact:
      EXTWAR_DEST1: β€œ{{l_extwar_dest1.stdout}}”

    • name: Get the EXTWAR_DEST2
      shell: β€œecho -e β€˜{{EXTWAR}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $3}’”
      register: l_extwar_dest2

    • name: Set the EXTWAR_DEST2
      ansible.builtin.set_fact:
      EXTWAR_DEST2: β€œ{{l_extwar_dest2.stdout}}”

    • name: Get the EXTSTAT_DEST1
      shell: β€œecho -e β€˜{{EXTSTAT}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $2}’”
      register: l_extstat_dest1

    • name: Set the EXTSTAT_DEST1
      ansible.builtin.set_fact:
      EXTSTAT_DEST1: β€œ{{l_extstat_dest1.stdout}}”

    • name: Get the EXTSTAT_DEST2
      shell: β€œecho -e β€˜{{EXTSTAT}}’ | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $3}’”
      register: l_extstat_dest2

    • name: Set the EXTSTAT_DEST2
      ansible.builtin.set_fact:
      EXTSTAT_DEST2: β€œ{{l_extstat_dest2.stdout}}”

    • name: Get the war_num
      shell: β€œecho -e $DIR_USER | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $4}’”
      register: l_war_num

    • name: Set the war_num
      ansible.builtin.set_fact:
      war_num: β€œ{{l_war_num.stdout}}”

    • name: Get the stat_num
      shell: β€œecho -e $DIR_USER | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $5}’”
      register: l_stat_num

    • name: Set the stat_num
      ansible.builtin.set_fact:
      stat_num: β€œ{{l_stat_num.stdout}}”

    • name: Get the extwar_num
      shell: β€œecho -e $DIR_USER | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $6}’”
      register: l_extwar_num

    • name: Set the extwar_num
      ansible.builtin.set_fact:
      extwar_num: β€œ{{l_extwar_num.stdout}}”

    • name: Get the extstat_num
      shell: β€œecho -e $DIR_USER | sed β€˜s/^ //’|grep β€˜^{{ENV}}|’ | awk -F β€˜|’ β€˜{print $7}’”
      register: l_extstat_num

    • name: Set the extstat_num
      ansible.builtin.set_fact:
      extstat_num: β€œ{{l_extstat_num.stdout}}”

    • name: Get the TOMEE_PASS
      shell: β€œecho -e ’ {{ DIR_USER }} ’ | sed β€˜s/^ //’|grep β€˜^{{ ENV }}|’ | awk -F β€˜|’ β€˜{print $3}’”
      register: l_tp

    • name: Set the TOMEE_PASS
      ansible.builtin.set_fact:
      TOMEE_PASS: β€œ{{ l_tp.stdout }}”

    • name: Get the TOMEE_COMMENT
      shell: β€œecho -e ’ {{ DIR_USER }} ’ | sed β€˜s/^ //’|grep β€˜^{{ ENV }}|’ | awk -F β€˜|’ β€˜{print $4}’”
      register: l_tc

    • name: Set the TOMEE_COMMENT
      ansible.builtin.set_fact:
      TOMEE_COMMENT: β€œ{{ l_tc.stdout }}”

    • name: Get the TOMEE_DASH
      shell: β€œecho -e ’ {{ DIR_USER }} ’ | sed β€˜s/^ //’|grep β€˜^{{ ENV }}|’ | awk -F β€˜|’ β€˜{print $5}’”
      register: l_td

    • name: Set the TOMEE_DASH
      ansible.builtin.set_fact:
      TOMEE_DASH: β€œ{{ l_td.stdout }}”

    • name: Get the TOMEE_FCS
      shell: β€œecho -e ’ {{ DIR_USER }} ’ | sed β€˜s/^ //’|grep β€˜^{{ ENV }}|’ | awk -F β€˜|’ β€˜{print $6}’”
      register: l_tf

    • name: Set the TOMEE_FCS
      ansible.builtin.set_fact:
      TOMEE_FCS: β€œ{{ l_tf.stdout }}”

    • name: Get the TOMEE_SPACE
      shell: β€œecho -e ’ {{ DIR_USER }} ’ | sed β€˜s/^ //’|grep β€˜^{{ ENV }}|’ | awk -F β€˜|’ β€˜{print $7}’”
      register: l_ts

    • name: Set the TOMEE_SPACE
      ansible.builtin.set_fact:
      TOMEE_SPACE: β€œ{{ l_ts.stdout }}”

    • name: Get the TOMEE_SPACENOCAS
      shell: β€œecho -e ’ {{ DIR_USER }} ’ | sed β€˜s/^ //’|grep β€˜^{{ ENV }}|’ | awk -F β€˜|’ β€˜{print $8}’”
      register: l_tnc

    • name: Set the TOMEE_SPACENOCAS
      ansible.builtin.set_fact:
      TOMEE_SPACENOCAS: β€œ{{ l_tnc.stdout }}”

    • name: Get the TOMEE_FEDSEARCH
      shell: β€œecho -e ’ {{ DIR_USER }} ’ | sed β€˜s/^ //’|grep β€˜^{{ ENV }}|’ | awk -F β€˜|’ β€˜{print $9}’”
      register: l_tfs

    • name: Set the TOMEE_FEDSEARCH
      ansible.builtin.set_fact:
      TOMEE_FEDSEARCH: β€œ{{ l_tfs.stdout }}”

    • name: Get the TOMEE_SWYM
      shell: β€œecho -e ’ {{ DIR_USER }} ’ | sed β€˜s/^ //’|grep β€˜^{{ ENV }}|’ | awk -F β€˜|’ β€˜{print $10}’”
      register: l_tsy

    • name: Set the TOMEE_SWYM
      ansible.builtin.set_fact:
      TOMEE_SWYM: β€œ{{ l_tsy.stdout }}”

    • name: Get the JAVA_VER
      shell: β€œecho -e ’ {{ DIR_USER }} ’ | sed β€˜s/^ //’|grep β€˜^{{ ENV }}|’ | awk -F β€˜|’ β€˜{print $11}’”
      register: l_jv

    • name: Set the JAVA_VER
      ansible.builtin.set_fact:
      JAVA_VER: β€œ{{ l_jv.stdout }}”

    • name: Get the X3D_VER
      shell: β€œecho -e ’ {{ DIR_USER }} ’ | sed β€˜s/^ //’|grep β€˜^{{ ENV }}|’ | awk -F β€˜|’ β€˜{print $12}’”
      register: l_x3d

    • name: Set the X3D_VER
      ansible.builtin.set_fact:
      X3D_VER: β€œ{{ l_x3d.stdout }}”

    • name: Get the JVMCNT
      shell: β€œecho -e ’ {{ DIR_USER }} ’ | sed β€˜s/^ //’|grep β€˜^{{ ENV }}|’ | awk -F β€˜|’ β€˜{print $13}’”
      register: l_jvm

    • name: Set the JVMCNT
      ansible.builtin.set_fact:
      JVMCNT: β€œ{{ l_jvm.stdout }}”

    • name: Get the HTTPD_HOME
      shell: β€œecho -e /opt/matrixone/β€˜{{ ENV }}’/β€˜{{ X3D_VER }}’/3dspace/XMLERPIntegration/bin”
      register: l_httpd_home

    • name: Set the HTTPD_HOME
      ansible.builtin.set_fact:
      HTTPD_HOME: β€œ{{ l_httpd_home.stdout }}”

    • name: Get the PASSCATALINA_HOME
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/apache/{{ TOMEE_PASS }}”
      register: l_PASSCATALINA_HOME

    • name: Set the PASSCATALINA_HOME
      ansible.builtin.set_fact:
      PASSCATALINA_HOME: β€œ{{ l_PASSCATALINA_HOME.stdout }}”

    • name: Get the DASHCATALINA_HOME
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/apache/{{ TOMEE_DASH }}”
      register: l_DASHCATALINA_HOME

    • name: Set the DASHCATALINA_HOME
      ansible.builtin.set_fact:
      DASHCATALINA_HOME: β€œ{{ l_DASHCATALINA_HOME.stdout }}”

    • name: Get the COMCATALINA_HOME
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/apache/{{ TOMEE_COMMENT }}”
      register: l_COMCATALINA_HOME

    • name: Set the COMCATALINA_HOME
      ansible.builtin.set_fact:
      COMCATALINA_HOME: β€œ{{ l_COMCATALINA_HOME.stdout }}”

    • name: Get the FCSCATALINA_HOME
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/apache/{{ TOMEE_FCS }}”
      register: l_FCSCATALINA_HOME

    • name: Set the FCSCATALINA_HOME
      ansible.builtin.set_fact:
      FCSCATALINA_HOME: β€œ{{ l_FCSCATALINA_HOME.stdout }}”

    • name: Get the SPACECATALINA_HOME
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/apache/{{ TOMEE_SPACE }}”
      register: l_SPACECATALINA_HOME

    • name: Set the SPACECATALINA_HOME
      ansible.builtin.set_fact:
      SPACECATALINA_HOME: β€œ{{ l_SPACECATALINA_HOME.stdout }}”

    • name: Get the SPACENOCASCATALINA_HOME
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/apache/{{ TOMEE_SPACENOCAS }}”
      register: l_SPACENOCASCATALINA_HOME

    • name: Set the SPACENOCASCATALINA_HOME
      ansible.builtin.set_fact:
      SPACENOCASCATALINA_HOME: β€œ{{ l_SPACENOCASCATALINA_HOME.stdout }}”

    • name: Get the FEDSEARCHCATALINA_HOME
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/apache/{{ TOMEE_FEDSEARCH }}”
      register: l_FEDSEARCHCATALINA_HOME

    • name: Set the FEDSEARCHCATALINA_HOME
      ansible.builtin.set_fact:
      FEDSEARCHCATALINA_HOME: β€œ{{ l_FEDSEARCHCATALINA_HOME.stdout }}”

    • name: Get the SWYMCATALINA_HOME
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/apache/{{ TOMEE_SWYM }}”
      register: l_SWYMCATALINA_HOME

    • name: Set the SWYMCATALINA_HOME
      ansible.builtin.set_fact:
      SWYMCATALINA_HOME: β€œ{{ l_SWYMCATALINA_HOME.stdout }}”

    • name: Get the EXALEAD_HOME
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/r2023x/3dswym/linux_a64/datadir/bin”
      register: l_EXALEAD_HOME

    • name: Set the EXALEAD_HOME
      ansible.builtin.set_fact:
      EXALEAD_HOME: β€œ{{ l_EXALEAD_HOME.stdout }}”

    • name: Get the PASSCATALINA_TMPDIR
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/temp/{{ TOMEE_PASS }}”
      register: l_PASSCATALINA_TMPDIR

    • name: Set the PASSCATALINA_TMPDIR
      ansible.builtin.set_fact:
      PASSCATALINA_TMPDIR: β€œ{{ l_PASSCATALINA_TMPDIR.stdout }}”

    • name: Get the DASHCATALINA_TMPDIR
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/temp/{{ TOMEE_DASH }}”
      register: l_DASHCATALINA_TMPDIR

    • name: Set the DASHCATALINA_TMPDIR
      ansible.builtin.set_fact:
      DASHCATALINA_TMPDIR: β€œ{{ l_DASHCATALINA_TMPDIR.stdout }}”

    • name: Get the COMCATALINA_TMPDIR
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/temp/{{ TOMEE_DASH }}”
      register: l_COMCATALINA_TMPDIR

    • name: Set the COMCATALINA_TMPDIR
      ansible.builtin.set_fact:
      COMCATALINA_TMPDIR: β€œ{{ l_COMCATALINA_TMPDIR.stdout }}”

    • name: Get the FCSCATALINA_TMPDIR
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/temp/{{ TOMEE_FCS }}”
      register: l_FCSCATALINA_TMPDIR

    • name: Set the FCSCATALINA_TMPDIR
      ansible.builtin.set_fact:
      FCSCATALINA_TMPDIR: β€œ{{ l_FCSCATALINA_TMPDIR.stdout }}”

    • name: Get the SPACECATALINA_TMPDIR
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/temp/{{ TOMEE_FCS }}”
      register: l_SPACECATALINA_TMPDIR

    • name: Set the SPACECATALINA_TMPDIR
      ansible.builtin.set_fact:
      SPACECATALINA_TMPDIR: β€œ{{ l_SPACECATALINA_TMPDIR.stdout }}”

    • name: Get the SPACENOCASCATALINA_TMPDIR
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/temp/{{ TOMEE_FCS }}”
      register: l_SPACENOCASCATALINA_TMPDIR

    • name: Set the SPACENOCASCATALINA_TMPDIR
      ansible.builtin.set_fact:
      SPACENOCASCATALINA_TMPDIR: β€œ{{ l_SPACENOCASCATALINA_TMPDIR.stdout }}”

    • name: Get the FEDSEARCHCATALINA_TMPDIR
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/temp/{{ TOMEE_FCS }}”
      register: l_FEDSEARCHCATALINA_TMPDIR

    • name: Set the FEDSEARCHCATALINA_TMPDIR
      ansible.builtin.set_fact:
      FEDSEARCHCATALINA_TMPDIR: β€œ{{ l_FEDSEARCHCATALINA_TMPDIR.stdout }}”

    • name: Get the SWYMCATALINA_TMPDIR
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/temp/{{ TOMEE_SWYM }}”
      register: l_SWYMCATALINA_TMPDIR

    • name: Set the SWYMCATALINA_TMPDIR
      ansible.builtin.set_fact:
      SWYMCATALINA_TMPDIR: β€œ{{ l_SWYMCATALINA_TMPDIR.stdout }}”

    • name: Get the X3D_HOME
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/temp/{{ TOMEE_SWYM }}”
      register: l_X3D_HOME

    • name: Set the X3D_HOME
      ansible.builtin.set_fact:
      X3D_HOME: β€œ{{ l_X3D_HOME.stdout }}”

    • name: Get the JAVA_HOME
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/java/{{ JAVA_VER }}”
      register: l_JAVA_HOME

    • name: Set the JAVA_HOME
      ansible.builtin.set_fact:
      JAVA_HOME: β€œ{{ l_JAVA_HOME.stdout }}”

    • name: Get the SAVE_LOGS_HOME
      shell: β€œecho -e /matrixone/cache/{{ ENV }}”
      register: l_SAVE_LOGS_HOME

    • name: Set the SAVE_LOGS_HOME
      ansible.builtin.set_fact:
      SAVE_LOGS_HOME: β€œ{{ l_SAVE_LOGS_HOME.stdout }}”

    • name: Get the LOGS_HOME
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/logs”
      register: l_LOGS_HOME

    • name: Set the LOGS_HOME
      ansible.builtin.set_fact:
      LOGS_HOME: β€œ{{ l_LOGS_HOME.stdout }}”

    • name: Get the TEMP_HOME
      shell: β€œecho -e /opt/matrixone/{{ ENV }}/temp”
      register: l_TEMP_HOME

    • name: Set the TEMP_HOME
      ansible.builtin.set_fact:
      TEMP_HOME: β€œ{{ l_TEMP_HOME.stdout }}”

    • name: Get the ERPAdapter_Log_Path
      shell: β€œecho -e /matrixone/cache/{{ ENV }}/logs/ERPAdapter”
      register: l_ERPAdapter_Log_Path

    • name: Set the ERPAdapter_Log_Path
      ansible.builtin.set_fact:
      ERPAdapter_Log_Path: β€œ{{ l_ERPAdapter_Log_Path.stdout }}”

    • name: Get the ERPAdapter_Temp_Path
      shell: β€œecho -e /matrixone/cache/{{ ENV }}/temp/ERPAdapter”
      register: l_ERPAdapter_Temp_Path

    • name: Set the ERPAdapter_Temp_Path
      ansible.builtin.set_fact:
      ERPAdapter_Temp_Path: β€œ{{ l_ERPAdapter_Temp_Path.stdout }}”

    • name: Get the Workspace_Dir_Path
      shell: β€œecho -e /matrixone/cache/{{ ENV }}/temp/3dspace/workspace”
      register: l_Workspace_Dir_Path

    • name: Set the Workspace_Dir_Path
      ansible.builtin.set_fact:
      Workspace_Dir_Path: β€œ{{ l_Workspace_Dir_Path.stdout }}”

    • name: Get the Mxtrace_Log_Path
      shell: β€œecho -e /matrixone/cache/{{ ENV }}/logs/3dspace”
      register: l_Mxtrace_Log_Path

    • name: Set the Mxtrace_Log_Path
      ansible.builtin.set_fact:
      Mxtrace_Log_Path: β€œ{{ l_Mxtrace_Log_Path.stdout }}”

    • name: Set TCL_LIBRARY
      ansible.builtin.set_fact:
      TCL_LIBRARY: β€œ/opt/matrixone/3dvan/r2023x/3dspace/linux_a64/tcl85/lib/tcl8.5”

    • name: Set TK_LIBRARY
      ansible.builtin.set_fact:
      TK_LIBRARY: β€œ/opt/matrixone/3dvan/r2023x/3dspace/linux_a64/tcl85/lib/tk8.5”

    • name: Set XMSO_OPT
      ansible.builtin.set_fact:
      XMSO_OPT: β€œ-Xmso1024k -Xgcpolicy:balanced”

    • name: Set MX_JAVA_OPTIONS
      ansible.builtin.set_fact:
      MX_JAVA_OPTIONS: "-Xss1024k -Xms2048m -Xmx2048m -Xmn1024m -XX:MetaspaceSize: 256m -XX:MaxMetaspaceSize: 256m -XX:SurvivorRatio: 3 -XX:+UseCompressedOops -XX:+DisableExplicitGC -Dfile.encoding: UTF-8 -Djava.awt.headless: true "

    • name: Set JAVA_OPTS
      ansible.builtin.set_fact:
      JAVA_OPTS: β€œ-Dtomcat.util.http.parser.HttpParser.requestTargetAllow=β€˜|{}’”

    • name: Set JDKPATH
      ansible.builtin.set_fact:
      JDKPATH: β€œ{{JAVA_HOME}}”

    • name: Set TMPPATH
      ansible.builtin.set_fact:
      TMPPATH: β€œ{{JDKPATH}}/bin”

    • name: Run the command
      ansible.builtin.shell:
      β€œsource {{ l_env_file_1 }} &&
      source {{ l_env_file_2 }} &&
      source {{ l_env_file }} &&
      {{ script_path }} {{ l_action }} {{ l_environment }}”

      env

      environment:
      JDK_VER: β€œlatest”
      PASSCATALINA_HOME: β€œ{{ l_PASSCATALINA_HOME.stdout }}”
      DASHCATALINA_HOME: β€œ{{ l_DASHCATALINA_HOME.stdout }}”
      COMCATALINA_HOME: β€œ{{ l_COMCATALINA_HOME.stdout }}”
      FCSCATALINA_HOME: β€œ{{ l_FCSCATALINA_HOME.stdout }}”
      SPACECATALINA_HOME: β€œ{{ l_SPACECATALINA_HOME.stdout }}”
      SPACENOCASCATALINA_HOME: β€œ{{ l_SPACENOCASCATALINA_HOME.stdout }}”
      FEDSEARCHCATALINA_HOME: β€œ{{ l_FEDSEARCHCATALINA_HOME.stdout }}”
      SWYMCATALINA_HOME: β€œ{{ l_SWYMCATALINA_HOME.stdout }}”
      EXALEAD_HOME: β€œ{{ l_EXALEAD_HOME.stdout }}”
      PASSCATALINA_TMPDIR: β€œ{{ l_PASSCATALINA_TMPDIR.stdout }}”
      DASHCATALINA_TMPDIR: β€œ{{ l_DASHCATALINA_TMPDIR.stdout }}”
      COMCATALINA_TMPDIR: β€œ{{ l_COMCATALINA_TMPDIR.stdout }}”
      FCSCATALINA_TMPDIR: β€œ{{ l_FCSCATALINA_TMPDIR.stdout }}”
      SPACECATALINA_TMPDIR: β€œ{{ l_SPACECATALINA_TMPDIR.stdout }}”
      SPACENOCASCATALINA_TMPDIR: β€œ{{ l_SPACENOCASCATALINA_TMPDIR.stdout }}”
      FEDSEARCHCATALINA_TMPDIR: β€œ{{ l_FEDSEARCHCATALINA_TMPDIR.stdout }}”
      SWYMCATALINA_TMPDIR: β€œ{{ l_SWYMCATALINA_TMPDIR.stdout }}”
      X3D_HOME: β€œ{{ l_X3D_HOME.stdout }}”
      HTTPD_HOME: β€œ{{ l_httpd_home.stdout }}”
      JAVA_HOME: β€œ{{ l_JAVA_HOME.stdout }}”
      SAVE_LOGS_HOME: β€œ{{ l_SAVE_LOGS_HOME.stdout }}”
      LOGS_HOME: β€œ{{ l_LOGS_HOME.stdout }}”
      TEMP_HOME: β€œ{{ l_TEMP_HOME.stdout }}”
      ERPAdapter_Log_Path: β€œ{{ l_ERPAdapter_Log_Path.stdout }}”
      ERPAdapter_Temp_Path: β€œ{{ l_ERPAdapter_Temp_Path.stdout }}”
      Workspace_Dir_Path: β€œ{{ l_Workspace_Dir_Path.stdout }}”
      Mxtrace_Log_Path: β€œ{{ l_Mxtrace_Log_Path.stdout }}”
      MX_JAVA_OPTIONS: "-Xss1024k -Xms2048m -Xmx2048m -Xmn1024m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:SurvivorRatio=3 -XX:+UseCompressedOops -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djava.awt.headless=true "

      PATH: "{{ HTTPD_HOME }}:{{ X3D_HOME }}:{{ FEDSEARCHCATALINA_TMPDIR }}:{{ SPACENOCASCATALINA_TMPDIR }}:{{ SPACECATALINA_TMPDIR }}:{{ PASSCATALINA_TMPDIR }}:{{ DASHCATALINA_TMPDIR }}:{{ SWYMCATALINA_TMPDIR }}:{{ COMCATALINA_TMPDIR }}:{{ FCSCATALINA_TMPDIR }}:{{ SPACECATALINA_HOME }}:{{ SPACENOCASCATALINA_HOME }}:{{ FEDSEARCHCATALINA_HOME }}:{{ PASSCATALINA_HOME }}:{{ DASHCATALINA_HOME }}:{{ SWYMCATALINA_HOME }}:{{ COMCATALINA_HOME }}:{{ FCSCATALINA_HOME }}:{{ LOGS_HOME }}:{{ JAVA_HOME }}:{{ EXALEAD_HOME }}"
      
      PATH: "{{ ansible_env.PATH }}:/opt/matrixone/3dvan/java/latest:/home/matrixusers/mxvan/bin:/opt/matrixone/tools/mms:/opt/matrixone/tools:/opt/matrixone/3dvan/java/latest/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:.:."
      DOCROOT_HOME: "/opt/matrixone/{{ENV}}/apache/docroot"
      WAR_HOME: "/opt/matrixone/$ENV/{{X3D_VER}}/3dspace/distrib_CAS"
      LANG: en_US.UTF-8
      NLS_LANG: "_.AL32UTF8"
      MX_CHARSET: UTF8
      DB2CODEPAGE: 1208
      MATRIXHOME: "/opt/matrixone/3dvan/r2023x/3dspace"
      MATRIXINSTALL: "/opt/matrixone/3dvan/r2023x/3dspace"
      MX_FLASH_PATH: "/opt/matrixone/3dvan/r2023x/3dspace/mxcache"
      MX_ARCH: "linux_a64"
      TNS_ADMIN: "/opt/matrixone/3dvan/r2023x/bootstraps"
      ODBCSYSINI: "/etc"
      GALAXYHOME: "/opt/matrixone/3dvan/r2023x/3dspace/linux_a64/code/bin"
      COLORPATH: "/opt/matrixone/3dvan/r2023x/3dspace/linux_a64/code/lib"
      MX_BOS_ROOT: "/opt/matrixone/3dvan/r2023x/3dspace"
      MX_BOS_WORKSPACE: "workspace"
      MX_TRACE_FILE_PATH: "/opt/matrixone/3dvan/r2023x/3dspace/logs"
      MX_BOS_LOG_DIRECTORY: "/opt/matrixone/3dvan/r2023x/3dspace/logs"
      TCL_LIBRARY: "{{TCL_LIBRARY}}"
      TK_LIBRARY: "{{TK_LIBRARY}}"
      JDKPATH: "{{ JAVA_HOME }}"
      LD_LIBRARY_PATH: "/opt/matrixone/3dvan/r2023x/3dspace/linux_a64/code/bin:/usr/lib:/lib:/opt/matrixone/3dvan/r2023x/3dspace/linux_a64/code/lib:{{ TCL_LIBRARY }}/../"
      MX_CLASSPATH: "/opt/matrixone/3dvan/r2023x/3dspace/managed/properties:/opt/matrixone/3dvan/r2023x/3dspace/linux_a64/docs/javacommon:/opt/matrixone/3dvan/r2023x/3dspace/linux_a64/docs/javaserver:/opt/matrixone/3dvan/r2023x/3dspace/linux_a64/docs/custom:/opt/matrixone/3dvan/r2023x/3dspace/STAGING/ematrix/WEB-INF/classes"
      MX_ABORT_DANGLING_TRANSACTION: true
      MX_MEMORY_SYSTEM_LIMIT: 8192m
      MX_CONNECTION_POOL_SIZE: 30
      MX_SESSION_TIMEOUT: 60
      MX_BOS_ALLOW_SHARED_CONTEXT: false
      MX_JAVA_OPTIONS: "{{MX_JAVA_OPTIONS}}"
      #JAVA_VM_ISJ9: "echo -e  {{JDKPATH}}/bin/java -version 2>&1|grep J9"
      XMSO_OPT: "{{XMSO_OPT }}"
      MX_JAVA_OPTIONS: "{{XMSO_OPT}}  {{MX_JAVA_OPTIONS}}"
      JAVA_OPTIONS: "{{MX_JAVA_OPTIONS}}"
      JAVA_OPTS: "{{JAVA_OPTS}} {{MX_JAVA_OPTIONS}}"
      JDKPATH: "{{ JDKPATH }}"
      TMPPATH: "{{ TMPPATH }}"
      UMASK: "0022"
      MX_SMTP_HOST: "smtp.domain.com"
      MX_SMTP_SENDER: "pdl-enovia-enterprise-support@domain.com"
      PLATFORM_3DEXPERIENCE: "true"
      MX_MEMORY_KEEP_LIMIT: "1"
      MX_QUERY_PAGE_SIZE: "10000"
      MX_DECIMAL_SYMBOL: "."
      

      args:
      executable: /bin/sh
      register: script_output

    • name: Show script output
      ansible.builtin.debug:
      var: script_output.stdout

Is this application meant to stay running like a web server? If so, might I suggest crafting a systemd unit file for it and using ansible to start, stop, restart, etc the unit as required.

To elaborate, the command will try to capture stdout and stderr of the process and wait until the task timeout configuration setting. If it’s still running then it will interrupt the process. It’s possible with either command or shell, I’d have to test, to use nohup and sh -c while redirecting stdout and stderr away you might be able to get it to work. It’d definitely be a less preferable way over just configuring a systemd unit.

Even if you don’t have root you can use systemd user scoped units paired with lingering to get services that run regardless of a user being logged in.

3 Likes

I’ll second that a systemd unit file would seem to be the preferred way to go for this. The commands done in the Ansible shell module are tied to that shell process and die when the task is completed. Some users appear to have success with the β€œnohup” option, but, IMO, that is an unnecessary complication for something that a unit file is already designed to handle. You can also then use the Ansible systemd_service module to manage starting and stopping the app in the future which is far less code and provides some built in state checking.

3 Likes