Downloading a Universal Agent Docker Image
Images are based on RedHat Linux.
To download an image from the Docker Hub, run the following command:
Panel |
---|
docker pull stonebranch/universal-agent:latest |
To list the downloaded images from the Stonebranch repository, run the following command:
Panel |
---|
docker images -a stonebranch/universal-agent |
These images were created with the following
Expand |
---|
|
# Set the base image to RedHat UBI FROM redhat/ubi9:latest
# Install libcrypt-compat and procps (for pgrep and pkill) RUN yum -y install libxcrypt-compat procps
# create label LABEL name="universal-agent" LABEL vendor="Stonebranch" LABEL version="${local_ua_version}" LABEL release="GA" LABEL summary="Universal Agent installed in a UBI9 base Image" LABEL description="Universal Agent can be used for Scheduling and File Transfer" LABEL author="Stonebranch, Inc."
# create license directory and add product license RUN mkdir /licenses ADD /licenses/Terms_and_Conditions.pdf /licenses
# Install ua ARG ua_version ADD /ua_install/sb-${ua_version}-linux-3.10-x86_64.tar.Z /tmp RUN zcat /tmp/sb-${ua_version}-linux-3.10-x86_64.tar.Z | tar xvf - && ./unvinst --network_provider oms --oms_servers 7878@localhost --oms_port 7878 --security inherit --ubroker_start no && rm unvinst *.rpm *.tar upimerge.sh upimerge.log usrmode.inc install.log /tmp/sb-${ua_version}-linux-3.10-x86_64.tar.Z EXPOSE 7887 7878
# Set Permissions for Arbitrary ID Support RUN chgrp -R 0 /etc/universal && chmod -R g=u /etc/universal && chgrp -R 0 /opt/universal && chmod -R g=u /opt/universal && chgrp -R 0 /var/opt/universal && chmod -R g=u /var/opt/universal && chmod g=u /etc/passwd
# Setup UBI Python COPY ./ua_requirements / RUN mkdir /opt/universal/python3.6 && mkdir /opt/universal/python3.6/bin && ln -s /bin/python3 /opt/universal/python3.6/bin/python3 && yum -y update && yum -y install python3-pip RUN /bin/python3 -m pip install -r ua_requirements && rm ./ua_requirements
# Update path ENV PATH "$PATH:/opt/universal/bin"
# Set Default userid USER 10010
# Add entrypoint script COPY ./ua_entrypoint /
# Set entrypoint ENTRYPOINT [ "./ua_entrypoint" ] |
Expand |
---|
|
# Set the base image to Debian FROM debian:latest
# create label LABEL name="universal-agent" LABEL vendor="Stonebranch" LABEL version="${local_ua_version}" LABEL release="GA" LABEL summary="Universal Agent installed in a Debian based Image" LABEL description="Universal Agent can be used for Scheduling and File Transfer" LABEL author="Stonebranch, Inc."
# create license directory and add product license RUN mkdir /licenses ADD /licenses/Terms_and_Conditions.pdf /licenses # Install procps (for pgrep and pkill) RUN apt-get update && apt-get install -y procps # Install ua ARG ua_version ADD /ua_install/sb-${ua_version}-linux-3-x86_64-deb.tar.Z /tmp RUN zcat /tmp/sb-${ua_version}-linux-3-x86_64-deb.tar.Z | tar xvf - && ./unvinst --network_provider oms --oms_servers 7878@localhost --oms_port 7878 --security inherit --ubroker_start no && rm unvinst *.deb *.tar upimerge.sh upimerge.log usrmode.inc install.log /tmp/sb-${ua_version}-linux-3-x86_64-deb.tar.Z EXPOSE 7887 7878
# Set Permissions for Arbitrary ID Support RUN chgrp -R 0 /etc/universal && chmod -R g=u /etc/universal && chgrp -R 0 /opt/universal && chmod -R g=u /opt/universal && chgrp -R 0 /var/opt/universal && chmod -R g=u /var/opt/universal && chmod g=u /etc/passwd
# Setup Python COPY ./ua_requirements / RUN mkdir /opt/universal/python3.6 && mkdir /opt/universal/python3.6/bin && ln -s /usr/bin/python3 /opt/universal/python3.6/bin/python3 && apt-get install -y python3-pip RUN python3 -m pip install -r ua_requirements && rm ./ua_requirements
# Update path ENV PATH "$PATH:/opt/universal/bin"
# Set Default userid USER 10010
# Add entrypoint script COPY ./ua_entrypoint /
# Set entrypoint ENTRYPOINT [ "./ua_entrypoint" ] |
Expand |
---|
|
#!/bin/bash
echo "Entrypoint Version 1.8"
# Handle Docker Stop, Terminate any active Tasks, and Terminate Ubroker Cleanly shutdown() { pkill -P $(pgrep uagsrv) kill -TERM "$ubroker" wait "$ubroker" exit 0 } # Recognize Termination trap 'shutdown' SIGINT SIGTERM # Support Arbitrary User IDs if ! whoami &> /dev/null; then if [ -w /etc/passwd ]; then echo "${USER_NAME:-default}:x:$(id -u):0:${USER_NAME:-default} user:${HOME}:/sbin/nologin" >> /etc/passwd fi fi
# Set UBroker Message Level if [ ! -z "$UBRMSGLEVEL" ]; then sed -ri "s/^message_level.*/message_level $UBRMSGLEVEL/g" /etc/universal/ubroker.conf fi
# Set UAG Server Message Level if [ ! -z "$UAGMSGLEVEL" ]; then sed -ri "s/^message_level.*/message_level $UAGMSGLEVEL/g" /etc/universal/uags.conf fi
# Set UDM Server Message Level if [ ! -z "$UDMMSGLEVEL" ]; then sed -ri "s/^message_level.*/message_level $UDMMSGLEVEL/g" /etc/universal/udms.conf fi
# Set UCMD Server Message Level if [ ! -z "$UCMMSGLEVEL" ]; then sed -ri "s/^message_level.*/message_level $UCMMSGLEVEL/g" /etc/universal/ucmds.conf fi
# Set UAG Server Log Level if [ ! -z "$UAGLOGLEVEL" ]; then sed -ri "s/^loglvl.*/loglvl $UAGLOGLEVEL/g" /etc/universal/uags.conf fi
# Start the Agent /opt/universal/ubroker/bin/ubroker -dest stderr & ubroker=$! wait "$ubroker" |
Docker Environment Variables
When you create a Universal Agent container, you can configure the Universal Agent by specifying the following environment variables:
Environment Variable | Description | Example |
---|
OMSAUTOSTART | Specifies whether the Universal Broker starts an OMS server. Default = no | OMSAUTOSTART=yes |
UAGAGENTCLUSTERS | List of Universal Controller Agent Clusters to join automatically. Default = 'Opswise - Default Linux/Unix Cluster, Opswise - Default Windows Cluster' | UAGAGENTCLUSTERS='Agent Cluster 1,Agent Cluster 2' |
UAGAUTOSTART | Specifies whether the Universal Broker starts a UAG server. Default = yes | UAGAUTOSTART=no |
UAGBUSINESSSERVICES | Specify the list of UC Business Services that this Agent will join when registering with the Universal Controller. | UAGBUSINESSSERVICES:='Business Service 1,Business Service 2' |
UAGENABLESSL | Specifies whether the SSL/TLS protocol is used for network communication between UAG and OMS. Default = no | UAGENABLESSL=yes |
UAGNETNAME | Sets the Agent ID to be used when the Universal Agent registers / connects to a Universal Controller Instance. Default = OPSAUTOCONF | UAGNETNAME=UADKR001 |
UAGOMSSERVERS | Specifies one or more OMS server addresses. Default = 7878@localhost | UAGOMSSERVERS=7878\@omsserver1,7878\@omsserver2 |
UAGTRANSIENT | Specifies whether the Agent is Transient and will be deleted or decommissioned when the Agent shuts down or goes offline. Transient Agents are suspended from any Agent Clusters that they may belong to. Note |
---|
| If the Agent is referenced in any task definitions, the dynamic delete will fail. It should be understood that Transient Agents should never be specified directly in any task definition. They are designed to accept work via an Agent Cluster, so when configuring a Universal Agent to operate in a containerized environment, you should ensure that the Agent registers with one or more Agent Clusters via the agent_cluster uags.conf configuration option. |
Valid values are: - yes
Agent is registered as a transient Agent. - no
Agent is registered as a regular, persistent Agent.
Default = no. | UAGTRANSIENT=yes |
UEMAUTOSTART | Specifies whether the Universal Broker starts a UEM server. Default = yes | UEMAUTOSTART=no |
UBRMSGLEVEL | Specify the Universal Broker message level. Default = INFO | UBRMSGLEVEL=TRACE |
UAGMSGLEVEL | Specify the UAG Server message level. Default = INFO | UAGMSGLEVEL=TRACE |
UDMMSGLEVEL | Specify the UDM Server message level. Default = INFO | UDMMSGLEVEL=TRACE |
UCMMSGLEVEL | Specify the UCMD Server message level. Default = INFO | UCMMSGLEVEL=TRACE |
UAGLOGLEVEL | Specify the UAG Server Log Level. Default = I | UAGLOGLEVEL=T |
Docker Container Ports
The following ports may need to be mapped when running containers from the Universal Agent image.
Port | Description |
---|
7887 | Universal Broker listening port |
7878 | OMS Server listening port |
Universal Agent Logs
The Universal Agent image configures the Universal Broker service to start in console mode, which writes all log data (unv.log and agent.log) to stdout. To view the log of a specific container, run the following command:
Panel |
---|
docker logs container-name |
Anchor |
---|
| Running Universal Agent Docker Container Examples |
---|
| Running Universal Agent Docker Container Examples |
---|
|
Running Universal Agent Docker Container Examples
To run a Universal Agent latest version container that connects to Universal Controller (via an OMS server) with SSL/TLS enabled and registers with an Agent ID of UA001, run the following command:
Panel |
---|
docker run --detach --env UAGNETNAME=UA001 --env UAGOMSSERVERS=7878@uchost --name ua-test stonebranch/universal-agent:latest |