Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jjethwa/rundeck
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 3.0.13
Choose a base ref
...
head repository: jjethwa/rundeck
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Loading
27 changes: 27 additions & 0 deletions .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Docker Image CI

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

jobs:
push_to_registry:
name: Push Docker image to Docker Hub
runs-on: ubuntu-latest
steps:
- name: Check out the repo
uses: actions/checkout@v4

- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{secrets.DOCKER_USER}}
password: ${{secrets.DOCKER_PASSWORD}}

- name: Build the Docker image
run: docker build . --file Dockerfile --tag jordan/rundeck:latest

- name: Docker Push
run: docker push jordan/rundeck:latest
29 changes: 12 additions & 17 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
# Dockerfile for rundeck
# https://github.com/jjethwa/rundeck

FROM debian:stretch
FROM debian:bullseye

MAINTAINER Jordan Jethwa

ENV SERVER_URL=https://localhost:4443 \
RUNDECK_STORAGE_PROVIDER=file \
RUNDECK_PROJECT_STORAGE_TYPE=file \
RUNDECK_STORAGE_PROVIDER=db \
NO_LOCAL_MYSQL=false \
LOGIN_MODULE=RDpropertyfilelogin \
JAAS_CONF_FILE=jaas-loginmodule.conf \
@@ -16,24 +15,20 @@ ENV SERVER_URL=https://localhost:4443 \
CLUSTER_MODE=false

RUN export DEBIAN_FRONTEND=noninteractive && \
echo "deb http://ftp.debian.org/debian stretch-backports main" >> /etc/apt/sources.list && \
echo "deb http://ftp.debian.org/debian bullseye-backports main" >> /etc/apt/sources.list && \
apt-get -qq update && \
apt-get -qqy install -t stretch-backports --no-install-recommends bash openjdk-8-jre-headless ca-certificates-java supervisor procps sudo ca-certificates openssh-client mysql-server mysql-client postgresql-9.6 postgresql-client-9.6 pwgen curl git uuid-runtime parallel jq && \
cd /tmp/ && \
curl -Lo /tmp/rundeck.deb https://dl.bintray.com/rundeck/rundeck-deb/rundeck_3.0.13.20190123-1.201901240147_all.deb && \
echo '83e6c937b9e7fc4f17fdf32c35778617723e3b031648442845255412eacb480e rundeck.deb' > /tmp/rundeck.sig && \
shasum -a256 -c /tmp/rundeck.sig && \
curl -Lo /tmp/rundeck-cli.deb https://github.com/rundeck/rundeck-cli/releases/download/v1.1.1/rundeck-cli_1.1.1-1_all.deb && \
echo 'c861a8ad7e8629cb9b22674a6d24bfe8d796f0e8ae84f47faba07742fa942302 rundeck-cli.deb' > /tmp/rundeck-cli.sig && \
shasum -a256 -c /tmp/rundeck-cli.sig && \
cd - && \
dpkg -i /tmp/rundeck*.deb && rm /tmp/rundeck*.deb && \
apt-get -qqy install -t bullseye-backports --no-install-recommends apt-transport-https curl ca-certificates && \
curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash -s -- --mariadb-server-version=10.5 && \
apt-get -qqy install -t bullseye-backports --no-install-recommends bash openjdk-11-jre-headless ca-certificates-java supervisor procps sudo openssh-client mariadb-server mariadb-client postgresql postgresql-client pwgen git uuid-runtime parallel jq libxml2-utils html2text unzip && \
curl -s https://packagecloud.io/install/repositories/pagerduty/rundeck/script.deb.sh | os=any dist=any bash && \
apt-get -qqy install rundeck rundeck-cli && \
mkdir -p /tmp/rundeck && \
chown rundeck:rundeck /tmp/rundeck && \
mkdir -p /var/lib/rundeck/.ssh && \
chown rundeck:rundeck /var/lib/rundeck/.ssh && \
sed -i "s/export RDECK_JVM=\"/export RDECK_JVM=\"\${RDECK_JVM} /" /etc/rundeck/profile && \
curl -Lo /var/lib/rundeck/libext/rundeck-slack-incoming-webhook-plugin-0.6.jar https://github.com/higanworks/rundeck-slack-incoming-webhook-plugin/releases/download/v0.6.dev/rundeck-slack-incoming-webhook-plugin-0.6.jar && \
echo 'd23b31ec4791dff1a7051f1f012725f20a1e3e9f85f64a874115e46df77e00b5 rundeck-slack-incoming-webhook-plugin-0.6.jar' > /tmp/rundeck-slack-plugin.sig && \
curl -Lo /var/lib/rundeck/libext/slack-incoming-webhook-plugin-1.2.5.jar https://github.com/rundeck-plugins/slack-incoming-webhook-plugin/releases/download/v1.2.5/slack-incoming-webhook-plugin-1.2.5.jar && \
echo 'e386b8cf06678ffee2c1282160efbdb5d51283e4d7c72f6fd0feb1f69f128532 slack-incoming-webhook-plugin-1.2.5.jar' > /tmp/rundeck-slack-plugin.sig && \
cd /var/lib/rundeck/libext/ && \
shasum -a256 -c /tmp/rundeck-slack-plugin.sig && \
cd - && \
@@ -43,7 +38,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
ADD content/ /
RUN chmod u+x /opt/run && \
mkdir -p /var/log/supervisor && mkdir -p /opt/supervisor && \
chmod u+x /opt/supervisor/rundeck && chmod u+x /opt/supervisor/mysql_supervisor && chmod u+x /opt/supervisor/fatalservicelistener
chmod u+x /opt/supervisor/rundeck && chmod u+x /opt/supervisor/mariadb_supervisor && chmod u+x /opt/supervisor/fatalservicelistener

EXPOSE 4440 4443

32 changes: 24 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
[![Docker Image CI](https://github.com/jjethwa/rundeck/actions/workflows/docker-image.yml/badge.svg)](https://github.com/jjethwa/rundeck/actions/workflows/docker-image.yml)

rundeck
==============

This repository contains the source for the [Rundeck](http://rundeck.org/) [docker](https://docker.io) image.

Latest version: 5.9.0

# Image details

1. Based on debian:stretch
1. Based on debian:bullseye
1. Supervisor, MariaDB, and rundeck
1. It can take anywhere from 30 seconds to a few minutes for Rundeck to start depending on the available resources for the container (and host VM).
1. No SSH. Use docker exec or [nsenter](https://github.com/jpetazzo/nsenter)
@@ -16,7 +20,7 @@ This repository contains the source for the [Rundeck](http://rundeck.org/) [dock


# Automated build

Images are built using GitHub Actions and pushed automatically to Docker Hub
```
docker pull jordan/rundeck
```
@@ -60,15 +64,19 @@ RUNDECK_GID - The unix group ID to be used for the rundeck account when rundeck
RUNDECK_WITH_SSL - Enable SSL
RUNDECK_USER - MySQL 'rundeck' username
RUNDECK_PASSWORD - MySQL 'rundeck' user password
RUNDECK_ADMIN_PASSWORD - The rundeck server admin password
RUNDECK_STORAGE_PROVIDER - Options file (default) or db. See: http://rundeck.org/docs/plugins-user-guide/configuring.html#storage-plugins
RUNDECK_SERVER_UUID - The UUID of the server (set in framework.properties)
RUNDECK_STORAGE_PASSWORD - The password used for project and key encryption (set in rundeck-config.properties)
RUNDECK_PROJECT_STORAGE_TYPE - Options file (default) or db. See: http://rundeck.org/docs/administration/setting-up-an-rdb-datasource.html
RUNDECK_STORAGE_PROVIDER - Options db (default) or file. Note: file storage looks like it will be deprecated in future releases
RUNDECK_THREAD_COUNT = Number of threads that are available for concurrent execution of jobs. see: http://www.quartz-scheduler.org/documentation/quartz-2.x/configuration/ConfigThreadPool.html
RUNDECK_THREAD_COUNT = Number of threads that are available for concurrent execution of jobs. see: https://docs.rundeck.com/docs/administration/maintenance/tuning-rundeck.html#quartz-job-threadcount
GUI_BRAND_HTML - HTML to show as title in app header. See: https://rundeck.org/docs/administration/configuration/gui-customization.html. Useful to show Rundeck environment where multiple Rundeck instances are deployed, e.g. GUI_BRAND_HTML='<span class="title">QA Environment</span>'
@@ -105,6 +113,7 @@ SKIP_DATABASE_SETUP - Set to true if database is already setup and/or database a
/opt/rundeck-plugins - For adding external plugins
/var/lib/rundeck/logs
/var/lib/rundeck/var/storage
/var/lib/rundeck/projects
```

# Working behind a web proxy
@@ -126,8 +135,7 @@ OPTION 1: First time setup of external database, you must follow the steps below
- Set the following environment variables
```
NO_LOCAL_MYSQL=true
RUNDECK_STORAGE_PROVIDER=<db_OR_file>
RUNDECK_PROJECT_STORAGE_TYPE=<db_OR_file>
RUNDECK_STORAGE_PASSWORD=<STORAGE_PASSWORD>
DATABASE_URL=<MYSQL_OR_POSTGRES_JDBC_URL>
DATABASE_ADMIN_USER=<DATABASE_ADMIN_USER>
DATABASE_ADMIN_PASSWORD=<DATABASE_ADMIN_PASSWORD>
@@ -140,11 +148,19 @@ from OPTION 1:
SKIP_DATABASE_SETUP=true
```

# Preserve SCM setting across restarts
If your SCM settings are getting lost after each restart as mentioned here: https://github.com/rundeck/rundeck/issues/6646 and https://github.com/rundeck/rundeck/issues/6651

Add `rundeck.server.uuid` to your framework.properties using the `RUNDECK_SERVER_UUID` environment variable. You can get your server UUID from the System Report page.
```
rundeck.server.uuid = <YOUR_CURRENT_RUNDECK_UUID>
```

# Using an SSL Terminated Proxy
See: http://rundeck.org/docs/administration/configuring-ssl.html#using-an-ssl-terminated-proxy

# Upgrading
See: http://rundeck.org/docs/upgrading/index.html

# Default credentials
admin/admin
```admin/admin```
4 changes: 2 additions & 2 deletions content/opt/mysql.conf → content/opt/mariadb.conf
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[program:mysql]
command=/bin/bash -c "/opt/supervisor/mysql_supervisor"
[program:mariadb]
command=/bin/bash -c "/opt/supervisor/mariadb_supervisor"
redirect_stderr=true
autorestart=true
stdout_logfile=/dev/stdout
68 changes: 43 additions & 25 deletions content/opt/run
Original file line number Diff line number Diff line change
@@ -57,14 +57,17 @@ if [ ! -f "${initfile}" ]; then
if [ -f /run/secrets/RUNDECK_ADMIN_PASSWORD ]; then
RUNDECK_ADMIN_PASSWORD=$(< /run/secrets/RUNDECK_ADMIN_PASSWORD)
fi
if [ -f /run/secrets/RUNDECK_STORAGE_PASSWORD ]; then
RUNDECK_STORAGE_PASSWORD=$(< /run/secrets/RUNDECK_STORAGE_PASSWORD)
fi

DATABASE_URL=${DATABASE_URL:-"jdbc:mysql://localhost/rundeckdb?autoReconnect=true"}
DATABASE_DRIVER=${DATABASE_DRIVER:-"com.mysql.jdbc.Driver"}
DATABASE_DRIVER=${DATABASE_DRIVER:-"org.mariadb.jdbc.Driver"}
RUNDECK_USER=${RUNDECK_USER:-"rundeck"}
RUNDECK_PASSWORD=${RUNDECK_PASSWORD:-$(pwgen -s 15 1)}
DATABASE_ADMIN_PASSWORD=${DATABASE_ADMIN_PASSWORD:-${RUNDECK_PASSWORD}}
DATABASE_ADMIN_USER=${DATABASE_ADMIN_USER:-rundeck}
RUNDECK_STORAGE_PROVIDER=${RUNDECK_STORAGE_PROVIDER:-"file"}
RUNDECK_PROJECT_STORAGE_TYPE=${RUNDECK_PROJECT_STORAGE_TYPE:-"file"}
RUNDECK_STORAGE_PROVIDER=${RUNDECK_STORAGE_PROVIDER:-"db"}
NO_LOCAL_MYSQL=${NO_LOCAL_MYSQL:-"false"}
SKIP_DATABASE_SETUP=${SKIP_DATABASE_SETUP:-"false"}
LOGIN_MODULE=${LOGIN_MODULE:-"RDpropertyfilelogin"}
@@ -90,7 +93,7 @@ if [ ! -f "${initfile}" ]; then


# copy rundeck defaults
if [ ! "$(ls -A /etc/rundeck)" ]; then
if [ ! "$(ls -1A /etc/rundeck|grep -v lost+found)" ]; then
cp -R /opt/rundeck-defaults/* /etc/rundeck
chown -R rundeck:rundeck /etc/rundeck
fi
@@ -107,24 +110,24 @@ if [ ! -f "${initfile}" ]; then

if [ "${NO_LOCAL_MYSQL}" == "false" ]; then
echo "=>Initializing local MySQL..."
if [ "$(ls -A /var/lib/mysql)" ]; then
/etc/init.d/mysql start
if [ "$(ls -A1 /var/lib/mysql|grep -v lost+found)" ]; then
service mariadb start
else
echo "=>MySQL datadir is empty...initializing"
/usr/bin/mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
/etc/init.d/mysql start
service mariadb start
fi

(
echo "CREATE DATABASE IF NOT EXISTS rundeckdb;"
echo "GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE, CREATE VIEW, ALTER, INDEX, EXECUTE ON rundeckdb.* TO 'rundeck'@'localhost' IDENTIFIED BY '${RUNDECK_PASSWORD}';"
echo "GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE, CREATE VIEW, ALTER, INDEX, EXECUTE ON rundeckdb.* TO '${RUNDECK_USER}'@'localhost' IDENTIFIED BY '${RUNDECK_PASSWORD}';"
echo "quit"
) |
mysql
sleep 5
/etc/init.d/mysql stop
service mariadb stop
# Add MySQL to supervisord conf
cat /opt/mysql.conf >> /etc/supervisor/conf.d/rundeck.conf
cat /opt/mariadb.conf >> /etc/supervisor/conf.d/rundeck.conf
else
echo "=>NO_LOCAL_MYSQL set to true. Skipping local MySQL setup"
if [[ "${DATABASE_URL}" == *"mysql"* && "${SKIP_DATABASE_SETUP}" != "true" ]]; then
@@ -138,7 +141,7 @@ if [ ! -f "${initfile}" ]; then
echo "=>Initializing remote MySQL setup"
(
echo "CREATE DATABASE IF NOT EXISTS rundeckdb;"
echo "GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE, CREATE VIEW, ALTER, INDEX, EXECUTE ON rundeckdb.* TO 'rundeck'@'%' IDENTIFIED BY '${RUNDECK_PASSWORD}';"
echo "GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE, CREATE VIEW, ALTER, INDEX, EXECUTE ON rundeckdb.* TO '${RUNDECK_USER}'@'%' IDENTIFIED BY '${RUNDECK_PASSWORD}';"
echo "quit"
) |
mysql --host=${MYSQL_SERVER_NODE} --port=${MYSQL_SERVER_PORT} --user=${DATABASE_ADMIN_USER} --password=${DATABASE_ADMIN_PASSWORD}
@@ -176,7 +179,7 @@ if [ ! -f "${initfile}" ]; then
fi

sed -i 's,dataSource.dbCreate.*,,g' /etc/rundeck/rundeck-config.properties
sed -i 's,dataSource.url = .*,dataSource.url = '${DATABASE_URL}',g' /etc/rundeck/rundeck-config.properties
sed -i 's,dataSource.url = .*,dataSource.url = '${DATABASE_URL//\&/\\\&}',g' /etc/rundeck/rundeck-config.properties
if grep -q dataSource.driverClassName /etc/rundeck/rundeck-config.properties ; then
sed -i 's,dataSource.driverClassName = .*,dataSource.driverClassName = '${DATABASE_DRIVER}',g' /etc/rundeck/rundeck-config.properties
else
@@ -185,7 +188,7 @@ if [ ! -f "${initfile}" ]; then
if grep -q dataSource.username /etc/rundeck/rundeck-config.properties ; then
:
else
echo -e "\ndataSource.username = rundeck" >> /etc/rundeck/rundeck-config.properties
echo -e "\ndataSource.username = ${RUNDECK_USER}" >> /etc/rundeck/rundeck-config.properties
fi
if grep -q dataSource.password /etc/rundeck/rundeck-config.properties ; then
sed -i 's,dataSource.password = .*,dataSource.password = '${RUNDECK_PASSWORD}',g' /etc/rundeck/rundeck-config.properties
@@ -261,6 +264,13 @@ if [ ! -f "${initfile}" ]; then
sed -i 's,framework.server.hostname\ \=.*,framework.server.hostname\ \=\ '${SERVER_HOSTNAME}',g' /etc/rundeck/framework.properties
sed -i 's,framework.server.port\ \=.*,framework.server.port\ \=\ '${SERVER_PORT}',g' /etc/rundeck/framework.properties
sed -i 's,framework.server.url\ \=.*,framework.server.url\ \=\ '${SERVER_URL}',g' /etc/rundeck/framework.properties
if [ -n "${RUNDECK_SERVER_UUID}" ]; then
if grep -q rundeck.server.uuid /etc/rundeck/framework.properties ; then
sed -i 's/rundeck\.server\.uuid.*$/rundeck\.server\.uuid = '${RUNDECK_SERVER_UUID}'/g' /etc/rundeck/framework.properties
else
echo "quartz.threadPool.threadCount = ${RUNDECK_THREAD_COUNT}" >> /etc/rundeck/rundeck-config.properties
fi
fi

# if the admin pwd is still the default password and RUNDECK_ADMIN_PASSWORD is defined
if $(grep --silent '^admin:admin,' /etc/rundeck/realm.properties) && [[ -n "${RUNDECK_ADMIN_PASSWORD}" ]]; then
@@ -287,24 +297,36 @@ if [ ! -f "${initfile}" ]; then
else
echo "rundeck.storage.provider.1.type=db" >> /etc/rundeck/rundeck-config.properties
fi
if grep -q rundeck.storage.provider.1.path /etc/rundeck/rundeck-config.properties ; then
if grep -q rundeck.config.storage.converter.1.path /etc/rundeck/rundeck-config.properties ; then
:
else
echo "rundeck.storage.provider.1.path=/" >> /etc/rundeck/rundeck-config.properties
echo "rundeck.config.storage.converter.1.path=/" >> /etc/rundeck/rundeck-config.properties
fi
if ! [ -z "${RUNDECK_STORAGE_PASSWORD}" ]; then
if grep -q rundeck.storage.converter.1.config.password /etc/rundeck/rundeck-config.properties ; then
sed -i 's/rundeck\.storage\.converter\.1\.config\.password.*$/rundeck\.storage\.converter\.1\.config\.password='${RUNDECK_STORAGE_PASSWORD}'/g' /etc/rundeck/rundeck-config.properties
else
echo "rundeck.storage.converter.1.config.password=${RUNDECK_STORAGE_PASSWORD}" >> /etc/rundeck/rundeck-config.properties
fi
if grep -q rundeck.config.storage.converter.1.config.password /etc/rundeck/rundeck-config.properties ; then
sed -i 's/rundeck\.config\.storage\.converter\.1\.config\.password.*$/rundeck\.config\.storage\.converter\.1\.config\.password='${RUNDECK_STORAGE_PASSWORD}'/g' /etc/rundeck/rundeck-config.properties
else
echo "rundeck.config.storage.converter.1.config.password=${RUNDECK_STORAGE_PASSWORD}" >> /etc/rundeck/rundeck-config.properties
fi
fi
fi

if [ "${RUNDECK_PROJECT_STORAGE_TYPE}" == "db" ]; then
if grep -q rundeck.projectsStorageType /etc/rundeck/rundeck-config.properties ; then
sed -i 's/rundeck\.projectsStorageType.*$/rundeck\.projectsStorageType='${RUNDECK_PROJECT_STORAGE_TYPE}'/g' /etc/rundeck/rundeck-config.properties
if [ -n "${RUNDECK_SERVER_UUID}" ]; then
if grep -q rundeck.server.uuid /etc/rundeck/framework.properties ; then
sed -i 's,rundeck.server.uuid \=.*,rundeck.server.uuid \= '${RUNDECK_SERVER_UUID}',g' /etc/rundeck/framework.properties
else
echo "rundeck.projectsStorageType=db" >> /etc/rundeck/rundeck-config.properties
echo "rundeck.server.uuid = ${RUNDECK_SERVER_UUID}" >> /etc/rundeck/framework.properties
fi
fi

if [ "${CLUSTER_MODE}" == "true" ]; then
echo "rundeck.clusterMode.enabled=true" >> /etc/rundeck/rundeck-config.properties
sed -i 's,rundeck.server.uuid \=.*,rundeck.server.uuid \= '$(uuidgen)',g' /etc/rundeck/framework.properties
sed -i 's,rundeck.server.uuid \=.*,rundeck.server.uuid \= '$(uuidgen)',g' /etc/rundeck/framework.properties
fi

sed -i 's,JAAS_CONF\=.*,JAAS_CONF\="/etc/rundeck/'${JAAS_CONF_FILE}'",' /etc/rundeck/profile
@@ -315,9 +337,6 @@ if [ ! -f "${initfile}" ]; then

# Generate the system wide locales in the background.
# It may take a long time, depending on the mounted /etc/locale.gen.
# The only part, where locale processing is known to be necessary, is
# the Icingaweb2 translation plugin and locale-gen should be finished
# until the first webpage is started.
locale-gen &

echo -e "\n\n\n"
@@ -327,8 +346,7 @@ if [ ! -f "${initfile}" ]; then
else
echo "MySQL user 'root' has no password but only allows local connections"
fi
echo "MySQL user 'rundeck' password set to ${RUNDECK_PASSWORD}"
echo "Rundeck project storage type set to ${RUNDECK_PROJECT_STORAGE_TYPE}"
echo "MySQL user '${RUNDECK_USER}' password set to ${RUNDECK_PASSWORD}"
echo "Rundeck Storage provider set to ${RUNDECK_STORAGE_PROVIDER}"
echo "Rundeck public key:"
cat /var/lib/rundeck/.ssh/id_rsa.pub
7 changes: 7 additions & 0 deletions content/opt/rundeck-defaults/artifact-repositories.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
repositories:
- repositoryName: Official
enabled: true
type: HTTP
owner: RUNDECK
- repositoryName: private
type: STORAGE_TREE
7 changes: 6 additions & 1 deletion content/opt/rundeck-defaults/framework.properties
Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@ framework.server.url = https://localhost:4443

rdeck.base=/var/lib/rundeck

framework.projects.dir=/var/rundeck/projects
framework.projects.dir=/var/lib/rundeck/projects
framework.etc.dir=/etc/rundeck
framework.var.dir=/var/lib/rundeck/var
framework.tmp.dir=/var/lib/rundeck/var/tmp
@@ -33,3 +33,8 @@ framework.ssh.user = rundeck
# ssh connection timeout after a specified number of milliseconds.
# "0" value means wait forever.
framework.ssh.timeout = 0

# ----------------------------------------------------------------
# Auto generated server UUID: f5bbccf8-1f25-4d44-8e16-9c1231c4e80d
# ----------------------------------------------------------------
rundeck.server.uuid = f5bbccf8-1f25-4d44-8e16-9c1231c4e80d
Loading