Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
titleExample for Environment File env.sh
linenumberstrue
#!/bin/sh

SCRIPT_HOME=${HOME}/js7.deploy

DEP_ARCHIVE="${DEP_ARCHIVE:-$SCRIPT_HOME/archive}"
DEP_BIN="${DEP_BIN:-$SCRIPT_HOME/bin}"
DEP_CA="${DEP_CA:-$SCRIPT_HOME/ca}"
DEP_CONFIG="${DEP_CONFIG:-$SCRIPT_HOME/config}"
DEP_DESC="${DEP_DESC:-$SCRIPT_HOME/desc}"
DEP_RELEASE="${DEP_RELEASE:-$SCRIPT_HOME/release}"
DEP_WORK="${DEP_WORK:-$SCRIPT_HOME/work}"

JAVA_HOME="/usr/lib/jvm/jdk-11.0.2"
PATH=${DEP_BIN}:${JAVA_HOME}/bin:${PATH}

export JAVA_HOME PATH DEP_ARCHIVE DEP_BIN DEP_CA DEP_CONFIG DEP_DESC DEP_RELEASE DEP_WORK

...

Code Block
titleExample for Installer Wrapper Script run_install_agent.sh
linenumberstrue
collapsetrue
#!/bin/sh

set -e

DEP_CONFIG="/home/sos/js7.deploy/config"
DEP_BIN="/home/sos/js7.deploy/bin"
DEP_WORK_TEMP="/home/sos/js7.deploy/work/agents/agent_001"

mkdir -p "${DEP_WORK_TEMP}"

"${DEP_BIN}"/js7_install_agent.sh \
    --real-path-prefix="${DEP_WORK_TEMP}" \
    --release="2.5.0" \
    --tarball="/mnt/releases/scheduler_setups/2.5.0/js7_agent_unix.2.5.0.tar.gz" \
    --home="${DEP_WORK_TEMP}/opt/sos-berlin.com/js7/agent-primary" \
    --data="${DEP_WORK_TEMP}/var/sos-berlin.com/js7/agent-primary" \
    --http-port="localhost:31443" \
    --https-port="centostest-primary.sos:31443" \
    --controller-id="cluster" \
    --controller-primary-cert="${DEP_CONFIG}/controllers/instances/cluster.primary/config/centostest-primary.crt" \
    --controller-secondary-cert="${DEP_CONFIG}/controllers/instances/cluster.secondary/config/private/centostest-secondary.crt" \
    --keystore="${DEP_CONFIG}/agents/instances/agent_001/config/private/https-keystore.p12" \
    --keystore-password="jobscheduler" \
    --truststore="${DEP_CONFIG}/agents/instances/agent_001/config/private/https-truststore.p12" \
    --truststore-password="jobscheduler" \
    --deploy-dir="${DEP_CONFIG}/agents/templates/https/config" \
    --make-dirs

...

Anchor
deployment_scripts
deployment_scripts
Deployment Scripts: run_deploy_agent.sh, run_deploy_controller.sh, run_deploy_joc.sh

The Deployment Scripts perform transfer of deployment tarballs to target machines and extracts are called by Rollout Scripts on target hosts to extract the respective tarballs. The parameterization is created from the Deployment Descriptor.

Code Block
titleExample for Deployment Script run_deploy_agent.sh
linenumberstrue
collapsetrue
#!/bin/sh

set -e

scp -i "/home/sos/.ssh/sos_rsa" -P 22 "/home/sos/js7.dep/archive/standalone-agent-http-2022-12-04/agents/agent_001/js7_deploy_agent_unix.agent_001.2.5.0.install.tar.gz" sos@centostest-primary:"/tmp"
ssh -i "/home/sos/.ssh/sos_rsa" -p 22 -t -t -o LogLevel=QUIET sos@centostest-primary << 'EOF'
if [ $(id -u) -eq 0 ]
then
    use_sudo=""
else
    use_sudo="sudo"
fi

systemd_service_dir="/usr/lib/systemd/system"
systemd_service_name="js7_agent_31445.service"

...

mkdir -pif [ $(id -u) -eq 0 ]
then
    use_sudo=""
else
    use_sudo="sudo"
fi

systemd_service_dir="/usr/lib/systemd/system"
systemd_service_name="js7_agent_31445.service"

...

Log ".. executing pre-extraction command: StopService"
StopService

if [ -d "/opt/sos-berlin.com/js7/agent-primary" ]
then
    Log ".. removing home directory: /opt/sos-berlin.com/js7/agent-primary"
    if [ -w "/opt/sos-berlin.com/js7/agent-primary" ]
    then
        rm -f -r "/opt/sos-berlin.com/js7/agent-primary"
    else
        ${use_sudo} rm -f -r "/opt/sos-berlin.com/js7/agent-primary"
cd     fi
fi

if [ ! -d "/opt/sos-berlin.com/js7" ]
then
 > /dev/null
test -e "/tmp/js7_deploy_agent_unix.agent_001.2.5.0.install.tar.gz" && gzip -c -d < "/tmp/js7_deploy_agent_unix.agent_001.2.5.0.install.tar.gz" | tar -xf -
rc=$?
cd - > /dev/null

exit $rc
EOF


scp -i "/home/sos/.ssh/sos_rsa" -P 22 "/home/sos/js7.dep/archive/standalone-agent-http-2022-12-04/agents/agent_001/js7_deploy_agent_unix.agent_001.2.5.0.config.tar.gz" sos@centostest-primary:"/tmp"
ssh -i "/home/sos/.ssh/sos_rsa" -p 22 -t -t -o LogLevel=QUIET sos@centostest-primary << 'EOF'
if [ $(id -u) -eq 0 ]
then
    use_sudo=""
else
    use_sudo="sudo"
fi

mkdir -p "/var   Log ".. creating parent home directory: /opt/sos-berlin.com/js7"
    if [ -w "/opt/sos-berlin.com" ]
    then
        mkdir -p "/opt/sos-berlin.com/js7"
    else
        ${use_sudo} mkdir -p "/opt/sos-berlin.com/js7"
    fi

    if [ ! -w "/opt/sos-berlin.com" ]
    then
        Log ".. owning parent home directory to: sos"
        ${use_sudo} chown -R sos "/opt/sos-berlin.com/js7"
cd "/var    fi
fi

Log ".. extracting tarball in home directory: /opt/sos-berlin.com/js7"
cd "/opt/sos-berlin.com/js7" > /dev/null
test -e "/tmp/
Log ".. extracting tarball: js7_deploy_agent_unix.agent_001.2.5.01.configinstall.tar.gz"
test && gzip -ce -d < "/tmp/js7_deploy_agent_unix.agent_001.2.5.0.config1.install.tar.gz" && gzip -c -d < "/tmp/js7_deploy_agent_unix.agent_001.2.5.1.install.tar.gz" | tar -xf -
rc=$?
cd - > /dev/null

systemd_service_dir="/usr/lib/systemd/system"
systemd_service_name="js7_agent_31445.service"

...

if [ "${rc}" -eq 0 ]
then
    MakeService "/optif [ ! -d "/var/sos-berlin.com/js7" ]
then
    Log ".. creating parent data directory: /var/sos-berlin.com/js7/agent-standalone/bin/agent_31445.service"
    rc=$?
fi

if [ "${rc}" -eq 0 ]
then 
	StartService
fi

exit $rc
EOF

Explanation:

...

-w "/var/sos-berlin.com" ]
    then
        mkdir -p "/var/sos-berlin.com/js7"
    else
        ${use_sudo} mkdir -p "/var/sos-berlin.com/js7"
    fi

    if [ ! -w "/var/sos-berlin.com" ]
    then
        Log ".. owning parent data directory to: sos"
        ${use_sudo} chown -R sos "/var/sos-berlin.com/js7"
    fi
else
    if [ -d "/var/sos-berlin.com/js7/agent-primary" ]
    then
        if [ ! -w "/var/sos-berlin.com/js7/agent-primary" ]
        then
            Log ".. owning data directory to: sos"
            ${use_sudo} chown -R sos "/var/sos-berlin.com/js7/agent-primary"
        fi
    fi
fi

Log ".. extracting tarball in data directory: /var/sos-berlin.com/js7"
cd "/var/sos-berlin.com/js7" > /dev/null

Log ".. extracting tarball: js7_deploy_agent_unix.agent_001.2.5.1.config.tar.gz"
test -e "/tmp/js7_deploy_agent_unix.agent_001.2.5.1.config.tar.gz" && gzip -c -d < "/tmp/js7_deploy_agent_unix.agent_001.2.5.1.config.tar.gz" | tar -xf -
rc=$?
cd - > /dev/null

if [ "${rc}" -eq 0 ]
then
    Log ".. owning home directory to: sos1:sos1"
    ${use_sudo} chown -R sos1:sos1 "/opt/sos-berlin.com/js7/agent-primary"
    rc=$?
fi

if [ "${rc}" -eq 0 ]
then
    Log ".. owning data directory to: sos2:sos2"
    ${use_sudo} chown -R sos2:sos2 "/var/sos-berlin.com/js7/agent-primary"
    rc=$?
fi

if [ "${rc}" -eq 0 ]
then
    Log ".. creating systemd service: js7_agent_31445.service"
    MakeService "/opt/sos-berlin.com/js7/agent-primary/bin/agent_31445.service"
    rc=$?
fi

Log ".. executing post-extraction command: StartService"
StartService

Log ".. deployment completed, return code: ${rc}"
exit ${rc}


Explanation:

  • Authentication is performed by use of private/public key.
  • For each deployed tarball transfer and extraction are individually applied.
  • The example includes commands for pre- and post-processing to stop and to start an Agent from iJS7 - systemd Service Files for automated Startup and Shutdown with Unix Systems.
  • The example leaves out (...) a number of shell functions that are created to implement the MakeService, StopService and StartService operations.

Anchor
rollout_scripts
rollout_scripts
Rollout Scripts: run_rollout_agent.sh, run_rollout_controller.sh, run_rollout_joc.sh

The Rollout Scripts perform transfer of deployment tarballs to target hosts and extract the respective tarballs by invoking the Deployment Script. The parameterization is created from the Deployment Descriptor.

Code Block
titleExample for Rollout Script run_rollout_agent.sh
linenumberstrue
collapsetrue
#!/bin/sh

set -e

scp -i "/home/sos/.ssh/sos_rsa" -P 22 "/home/sos/js7.deploy/archive/user-joc-controller-agent-https-2022-12-04/agents/agent_001/js7_deploy_agent_unix.agent_001.2.5.1.install.tar.gz" sos@centostest-primary:"/tmp"
scp -i "/home/sos/.ssh/sos_rsa" -P 22 "/home/sos/js7.deploy/archive/user-joc-controller-agent-https-2022-12-04/agents/agent_001/js7_deploy_agent_unix.agent_001.2.5.1.config.tar.gz" sos@centostest-primary:"/tmp"
scp -i "/home/sos/.ssh/sos_rsa" -P 22 "/home/sos/js7.deploy/archive/user-joc-controller-agent-https-2022-12-04/agents/agent_001/run_deploy_agent.sh" sos@centostest-primary:"/tmp"
ssh -i "/home/sos/.ssh/sos_rsa" -p 22 -t -t -o LogLevel=QUIET sos@centostest-primary 'chmod u+x /tmp/run_deploy_agent.sh && /tmp/run_deploy_agent.sh'

Resources

...