OpsWise Controller Docker Install

1. About

  • This document assumes the following:

2. Prep

2.1. MySQL Prep

  1. Update DB Server info

    1. In the docker-compose.yml file update entries for:

      1. MARIADB_ROOT_PASSWORD

2.2. Install Prep

2.2.1. Downloads

  1. Download the latest docker controller file and place it in the uac-installation-files directory.

    Example file name
    universal-controller-7.9.1.0-docker-rhel-ubi9-x86_64.tar.bz2
  2. Download the latest Redhat based docker agent file and place it in the uac-installation-files directory.

2.2.2. Convert Image File

  1. cd into the folder

    cd uac-installation-files
  2. Run the following to decompress the image and load into Podman’s local image storage.

    bunzip2 -c universal-controller-7.9.1.0-docker-rhel-ubi9-x86_64.tar.bz2 | podman load
    Example output
    Getting image source signatures
    Copying blob 004d2c90a656 done   |
    ...
    Writing manifest to image destination
    Loaded image: docker.io/library/universal-controller:7.9.1.0    (1)
    1 This is the UAC Controller image file name.
  3. Confirm image has been loaded into the Podman’s local image storage.

    Run this command
    podman images
    Sample output
    REPOSITORY                              TAG         IMAGE ID      CREATED       SIZE
    docker.io/library/universal-controller  7.9.1.0     05b8ccad7615  5 weeks ago   943 MB (1)
    1 This is the UAC Controller image file
    The name is different from the imported file name.

2.2.3. Configs

3. Launch GUI

  1. Open FW Ports:

    Add port 8085 for OpsWise interface
    sudo firewall-cmd --add-port=8085/tcp --permanent
    Add port 7878 for OpsWise OMS
    sudo firewall-cmd --add-port=7878/tcp --permanent
    Restart FW daemon
    sudo firewall-cmd --reload
  2. Browse to:

    http://<ip address>:8085/uc/
  3. Log in with user=ops.admin with no password

    You will need to change the password immediately upon initial login.

4. Setup

4.1. Preliminary

  1. Configure LDAP

  2. Rename Agents

    1. Rename the initial Linux agent to AGNT0001

    2. Rename the P-Ubuntu-Norco* Linux agent to P-Ubuntu-NORCO

    3. Rename the P-Ubuntu-NAS* Linux agent to P-Ubuntu-NAS

    4. Rename the Norco* Windows agent to norco

  3. Set system property for Resolvable Credentials Permitted to True.

  4. Create a user (not a credential) that can access the Web API

    1. Create a user with the following properties:

      1. user Id = web-api-user

      2. First Name = Web Api User

      3. Web Browser Access = No

      4. Command Line Access = No

      5. Web Service Access = Yes

    2. Grant this user the ops_admin role.

4.2. Import Universal Templates

  1. Import Jobs as Code

    \\norco\Stuff\Appz\_Schedulers\Stonebranch\Integrations\JaC\unv_tmplt_jobs_as_code-1.0.0+414.zip
  2. Import LAZ-Win-UAG-Upgrade

    \\norco\Stuff\Appz\_Schedulers\Stonebranch\Integrations\LAZ\unv_tmplt_laz_win_uag_upgrade.zip
  3. Import SSH

    \\norco\Stuff\Appz\_Schedulers\Stonebranch\Integrations\UAC\Remote SSH Server\unv-templ-ut-remote-ssh-server-json-1.0.1.zip
  4. Import XS-RoboCopy

    \\norco\Stuff\Appz\_Schedulers\Stonebranch\Integrations\XS\unv_tmplt_xs_robocopy.zip
  5. Import XS-RSync

    \\norco\Stuff\Appz\_Schedulers\Stonebranch\Integrations\XS\unv_tmplt_xs_rsync.zip

4.3. Restore Definitions for Tasks, etc

  1. Restore Credentials

    1. Goto Credentials

    2. Upload all credential files

      Source folder
      \\norco\Stuff\Appz\_Schedulers\Stonebranch\Bootstrap\Credentials\
  2. Fix Credentials

    1. For the mattosd cred, fix the password.

    2. For the linux-mattosd cred, fix the password.

    3. For the linux-root cred, fix the password.

    4. For the gitlab cred, re-input the Token value.

      If unknown, goto GitLab, open the Repo-UAC project, and generate a new access token
    5. For the cred: Web-Api-User update the password from the user account created earlier.

  3. Restore All Tasks

    1. Restore from the single All Tasks file.

      This file will need to be imported twice!
      The 2nd import will link sub-workflow with workflows.
  4. Alter Jobs as Code task.

    1. For the JaC: Import from GitLab task, update the Universal Controller URL field

      Example
      http://192.168.1.10:8085/uc/
  5. Restore Triggers

    1. Restore

      Source folder
      \\norco\Stuff\Appz\_Schedulers\Stonebranch\Bootstrap\Triggers
    2. Enable Triggers

5. Misc

5.1. Log files

5.1.1. OpsWise Controller

  • OpsWise log file will be in /usr/local/tomcat/uc_logs

    Example
    podman exec -it UAC-Server tail -f /usr/local/tomcat/uc_logs/uc.log

5.1.2. OpsWise Agent

5.2. DB

5.2.1. Dump the DB

  1. Run the dump-db.bash script
    This will create a dump file in MariaDB-data/backups

    sudo dump-db.bash

5.2.2. Restore from DB

Confirm you have a DB restore file to restore from before proceeding!
  1. Stop the pod-uac-server pod

    podman-compose down
  2. Delete the MariaDB-data/ folder contents

    sudo find ./MariaDB-data/ -mindepth 1 \
      ! -path './MariaDB-data/restores' \
      ! -path './MariaDB-data/restores/*' \
      ! -path './MariaDB-data/backups' \
      ! -path './MariaDB-data/backups/*' \
      -exec rm -rf {} +
  3. Set ownership on the ./MariaDB-data folder

    sudo chwon -R 525286:525286 ./MariaDB-data
  4. Start the pod-uac-server pod

    podman-compose up -d
  5. Run the restore-db.bash script with the name of the db restore file

    example
    sudo ./restore-db.bash ../opswiseDB_2025-08-16-09_04_54.sql
  6. Now continue by following the the Bootstrap section of this doc.

5.2.3. Connect to DB

  • Connect to the MariaDB server using the mysql client

    Connect as root directly from the UAC-MariaDB container
    podman exec -it UAC-MariaDB mysql -u root -p
    you’l need to provide the MariaDB root password that’s set in the compose.yml file.
    Connect as opswise_db_admin directly from the UAC-Server container
    podman exec -it UAC-Server mysql -h uac-db -u opswise_db_admin -p
    you’l need to provide the opswise_db_admin password that’s set in the db\1-setup.sql file.

6. Uninstall Containers

This will destroy all data!
Do this when the license expires.
  • Run the destroy uac script:

    sudo ./detroy-uac.bash

7. Upgrade the Controller

  1. Download the latest controller file and place it in the uac-installation-files directory.

    Example file name
    universal-controller-7.4.1.7.zip
  2. Connect to the UAC container

    sudo docker exec -it UAC-Server bash
  3. Extract the war File

    1. Go to the installation folder

      cd /tmp/uac-installation-files
    2. Unzip the insall file

      unzip universal-controller-7.4.1.7.zip
    3. Rename the war file

      mv universal-controller-7.4.1.7-build.36.war uc.war
  4. Shutdown the Controller

    the $CATALINA_HOME var should already be set but if not, then set with:
    export $CATALINA_HOME=/usr/local/tomcat
    cd $CATALINA_HOME/bin
    ./shutdown
  5. Delete deployment folder and war file

    cd $CATALINA_HOME/webapps
    rm -r uc uc.war
  6. Copy the new war file

    mv /tmp/uac-installation-files/uc.war .
  7. Restart the UAC Controller

    cd $CATALINA_HOME/bin
    ./startup.sh
  8. Restart the OMS

    /etc/init.d/ubrokerd start