Skip to content

Commit

Permalink
Merge pull request #369 from jmtd/jars-in-rpms-take2
Browse files Browse the repository at this point in the history
Revamp Jolokia module, add version 8
  • Loading branch information
jmtd authored Mar 18, 2020
2 parents 9e9eebb + 5aff509 commit a17af63
Show file tree
Hide file tree
Showing 19 changed files with 244 additions and 311 deletions.
67 changes: 0 additions & 67 deletions jboss/container/java/s2i/bash/README.adoc

This file was deleted.

2 changes: 1 addition & 1 deletion jboss/container/java/s2i/bash/module.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@ modules:
install:
- name: jboss.container.maven.s2i.bash
- name: jboss.container.java.run.bash
- name: jboss.container.jolokia.bash
- name: jboss.container.jolokia
- name: jboss.container.prometheus
- name: jboss.container.util.logging.bash
Original file line number Diff line number Diff line change
Expand Up @@ -88,5 +88,5 @@ if [ -z "${AB_JOLOKIA_OFF+x}" ]; then
AB_JOLOKIA_CONFIG="${JBOSS_CONTAINER_JOLOKIA_MODULE}/etc/jolokia.properties"
write_jolokia_properties "$AB_JOLOKIA_CONFIG"
fi
echo "-javaagent:${JBOSS_CONTAINER_JOLOKIA_MODULE}/jolokia.jar=config=${AB_JOLOKIA_CONFIG}"
echo "-javaagent:/usr/share/java/jolokia-jvm-agent/jolokia-jvm.jar=config=${AB_JOLOKIA_CONFIG}"
fi
11 changes: 11 additions & 0 deletions jboss/container/jolokia/7/backward_compatibility.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/bash
# Set up jolokia for java s2i builder image
set -euo pipefail

# Legacy locations

ln -s /opt/jboss/container/jolokia /opt/jolokia
chown -h jboss:root /opt/jolokia

ln -s /usr/share/java/jolokia-jvm-agent/jolokia-jvm.jar \
$JBOSS_CONTAINER_JOLOKIA_MODULE/jolokia.jar
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ set -e
SCRIPT_DIR=$(dirname $0)
ARTIFACTS_DIR=${SCRIPT_DIR}/artifacts

mv /tmp/artifacts/jolokia-jvm-*-agent.jar ${ARTIFACTS_DIR}/opt/jboss/container/jolokia
mkdir -p /usr/share/java/jolokia-jvm-agent
mv /tmp/artifacts/jolokia-jvm-*-agent.jar \
/usr/share/java/jolokia-jvm-agent/jolokia-jvm.jar
chown -h jboss:root \
/usr/share/java/jolokia-jvm-agent/jolokia-jvm.jar

chown -R jboss:root $SCRIPT_DIR
chmod -R ug+rwX $SCRIPT_DIR
Expand All @@ -18,6 +22,3 @@ popd
mkdir -p /opt/jboss/container/jolokia/etc
chmod 775 /opt/jboss/container/jolokia/etc
chown -R jboss:root /opt/jboss/container/jolokia/etc

ln -s /opt/jboss/container/jolokia/jolokia-jvm-*-agent.jar /opt/jboss/container/jolokia/jolokia.jar
chown -h jboss:root /opt/jboss/container/jolokia/jolokia.jar
66 changes: 66 additions & 0 deletions jboss/container/jolokia/7/module.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
schema_version: 1

name: jboss.container.jolokia
version: '7'
description: ^
Provides support for configuring Jolokia. Basic usage is
opts="$JBOSS_CONTAINER_JOLOKIA_MODULE/jolokia-opts"

labels:
- name: io.fabric8.s2i.version.jolokia
value: "1.6.2-redhat-00002"

envs:
- name: JOLOKIA_VERSION
description: Version of Jolokia being used.
value: "1.6.2"
- name: AB_JOLOKIA_PASSWORD_RANDOM
description: Determines if a random AB_JOLOKIA_PASSWORD be generated. Set to **true** to generate random password. Generated value will be written to `/opt/jolokia/etc/jolokia.pw`.
value: "true"
- name: AB_JOLOKIA_AUTH_OPENSHIFT
description: Switch on client authentication for OpenShift TLS communication. The value of this parameter can be a relative distinguished name which must be contained in a presented client's certificate. Enabling this parameter will automatically switch Jolokia into https communication mode. The default CA cert is set to `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt`.
value: "true"
- name: AB_JOLOKIA_HTTPS
description: Switch on secure communication with https. By default self signed server certificates are generated if no `serverCert` configuration is given in **AB_JOLOKIA_OPTS**.
value: "true"
- name: AB_JOLOKIA_OFF
description: If set disables activation of Joloka (i.e. echos an empty value). By default, Jolokia is enabled.
example: "true"
- name: AB_JOLOKIA_CONFIG
description: If set uses this file (including path) as Jolokia JVM agent properties (as described in Jolokia's link:https://www.jolokia.org/reference/html/agents.html#agents-jvm[reference manual]). If not set, the `/opt/jolokia/etc/jolokia.properties` will be created using the settings as defined in the manual. Otherwise the rest of the settings in this document are ignored.
example: "/opt/jolokia/custom.properties"
- name: AB_JOLOKIA_HOST
description: Host address to bind to. Defaults to **0.0.0.0**.
example: "127.0.0.1"
- name: AB_JOLOKIA_PORT
description: Port to listen to. Defaults to **8778**.
example: "5432"
- name: AB_JOLOKIA_USER
description: User for basic authentication. Defaults to **jolokia**.
example: "myusername"
- name: AB_JOLOKIA_PASSWORD
description: Password for basic authentication. By default authentication is switched off.
example: "mypassword"
- name: AB_JOLOKIA_ID
description: Agent ID to use (`$HOSTNAME` by default, which is the container id).
example: "openjdk-app-1-xqlsj"
- name: AB_JOLOKIA_DISCOVERY_ENABLED
description: Enable Jolokia discovery. Defaults to **false**.
example: "true"
- name: AB_JOLOKIA_OPTS
description: Additional options to be appended to the agent configuration. They should be given in the format `key=value,key=value,...`.
example: "backlog=20"
- name: JBOSS_CONTAINER_JOLOKIA_MODULE
value: /opt/jboss/container/jolokia

ports:
- value: 8778

execute:
- script: configure.sh
- script: backward_compatibility.sh

artifacts:
- name: jolokia-jvm
target: jolokia-jvm-1.6.2.redhat-00002-agent.jar
md5: 760f2fbaf6b142192f3cee2c99bfcbf8
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
#!/bin/sh

# Check whether a given config is contained in AB_JOLOKIA_OPTS
is_in_jolokia_opts() {
local prop=$1
if [ -n "${AB_JOLOKIA_OPTS}" ] && [ x"${AB_JOLOKIA_OPTS}" != x"${AB_JOLOKIA_OPTS/${prop}/}" ]; then
echo "yes"
else
echo "no"
fi
}

get_jolokia_properties() {

echo "host=${AB_JOLOKIA_HOST:-*}"
echo "port=${AB_JOLOKIA_PORT:-8778}"
echo "discoveryEnabled=${AB_JOLOKIA_DISCOVERY_ENABLED:=false}"

if [ -n "$AB_JOLOKIA_PASSWORD" ]; then
echo "user=${AB_JOLOKIA_USER:-jolokia}"
echo "password=${AB_JOLOKIA_PASSWORD}"
fi
if [ -n "$AB_JOLOKIA_HTTPS" ]; then
echo "protocol=https"
use_https=1
fi

# Integration with OpenShift client cert auth is enabled
# by default if not explicitly turned off by setting to 'false'
if [ "x${AB_JOLOKIA_AUTH_OPENSHIFT}" != "xfalse" ] && [ -f "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" ]; then
echo "useSslClientAuthentication=true"
echo "extraClientCheck=true"

if [ -z ${use_https+x} ]; then
echo "protocol=https"
fi
if [ $(is_in_jolokia_opts "caCert") != "yes" ]; then
echo "caCert=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"
fi

if [ $(is_in_jolokia_opts "clientPrincipal") != "yes" ]; then
if [ x"${AB_JOLOKIA_AUTH_OPENSHIFT}" != x"${AB_JOLOKIA_AUTH_OPENSHIFT/=/}" ]; then
# Supposed to contain a principal name to check
echo "clientPrincipal=`echo ${AB_JOLOKIA_AUTH_OPENSHIFT} | sed -e 's/ /\\\\ /g'`"
else
echo "clientPrincipal=cn=system:master-proxy"
fi
fi
fi

# Add extra opts
if [ -n "${AB_JOLOKIA_OPTS}" ]; then
echo "${AB_JOLOKIA_OPTS}" | tr "," "\n"
fi

}

write_jolokia_properties() {
local jolokia_property_file="$1"

# Setup Jolokia to accept basic auth, using a randomly generated password that is stored
# in the container in the ${DEPLOYMENTS_DIR}/jolokia.pw file.
if [ "$AB_JOLOKIA_PASSWORD_RANDOM" == "true" ]; then
pw_file="${JBOSS_CONTAINER_JOLOKIA_MODULE}/etc/jolokia.pw"
if [ -f "${pw_file}" ] ; then
AB_JOLOKIA_PASSWORD=`cat "${pw_file}"`
else
AB_JOLOKIA_PASSWORD=`tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1`
touch "${pw_file}"
chmod 660 "${pw_file}"
cat > "${pw_file}" <<EOF
$AB_JOLOKIA_PASSWORD
EOF
fi
export AB_JOLOKIA_PASSWORD
fi

touch "${jolokia_property_file}"
chmod 660 "${jolokia_property_file}"
cat > "${jolokia_property_file}" <<EOF
$(get_jolokia_properties)
EOF

}

if [ -z "${AB_JOLOKIA_OFF+x}" ]; then
if [ -z "${AB_JOLOKIA_CONFIG}" ]; then
AB_JOLOKIA_CONFIG="${JBOSS_CONTAINER_JOLOKIA_MODULE}/etc/jolokia.properties"
write_jolokia_properties "$AB_JOLOKIA_CONFIG"
fi
echo "-javaagent:/usr/share/java/jolokia-jvm-agent/jolokia-jvm.jar=config=${AB_JOLOKIA_CONFIG}"
fi
6 changes: 6 additions & 0 deletions jboss/container/jolokia/8.2/backward_compatibility.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/bash
set -euo pipefail

# Legacy (pre-RPM) location
ln -s /usr/share/java/jolokia-jvm-agent/jolokia-jvm.jar \
$JBOSS_CONTAINER_JOLOKIA_MODULE/jolokia.jar
18 changes: 18 additions & 0 deletions jboss/container/jolokia/8.2/configure.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/sh
# Configure module
set -e

SCRIPT_DIR=$(dirname $0)
ARTIFACTS_DIR=${SCRIPT_DIR}/artifacts

chown -R jboss:root $SCRIPT_DIR
chmod -R ug+rwX $SCRIPT_DIR
chmod ug+x ${ARTIFACTS_DIR}/opt/jboss/container/jolokia/*

pushd ${ARTIFACTS_DIR}
cp -pr * /
popd

mkdir -p /opt/jboss/container/jolokia/etc
chmod 775 /opt/jboss/container/jolokia/etc
chown -R jboss:root /opt/jboss/container/jolokia/etc
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
schema_version: 1

name: jboss.container.jolokia.api
version: '1.0'
name: jboss.container.jolokia
version: '8.2'
description: ^
Defines environment variables used for configuring Jolokia. Modules
providing support for configuring Jolokia should use the variables listed
within this module to configure Jolokia appropriately.
Provides support for configuring Jolokia. Basic usage is
opts="$JBOSS_CONTAINER_JOLOKIA_MODULE/jolokia-opts"

labels:
- name: io.fabric8.s2i.version.jolokia
value: "1.6.2-redhat-00002"

envs:
- name: JOLOKIA_VERSION
description: Version of Jolokia being used.
example: "1.5.0"
value: "1.6.2"
- name: AB_JOLOKIA_PASSWORD_RANDOM
description: Determines if a random AB_JOLOKIA_PASSWORD be generated. Set to **true** to generate random password. Generated value will be written to `/opt/jolokia/etc/jolokia.pw`.
value: "true"
Expand Down Expand Up @@ -47,4 +50,16 @@ envs:
- name: AB_JOLOKIA_OPTS
description: Additional options to be appended to the agent configuration. They should be given in the format `key=value,key=value,...`.
example: "backlog=20"
- name: JBOSS_CONTAINER_JOLOKIA_MODULE
value: /opt/jboss/container/jolokia

ports:
- value: 8778

execute:
- script: configure.sh
- script: backward_compatibility.sh

packages:
install:
- jolokia-jvm-agent
Loading

0 comments on commit a17af63

Please sign in to comment.