WildFly Isolated Self-Contained Domain Profile
Relevance
EAP 6.4.
Internal
Overview
This article contains step-by-step instructions to create isolated domain JBoss Multiple domains can be stood up following the same procedure, on a single host, provided that appropriate port offsets are provided. The procedure also applies to EAP. The only place where the name of the profile is externalized is the $JBOSS_HOME/profiles's sub-directory that actually contains the profile. For this procedure to work, the name of the sub-directory must be the name of the profile. All files, directories and configuration under that sub-directory should be name agnostic, so profiles can be copied across without need for reconfiguration.
Create a new profile sub-directory in $JBOSS_HOME/profiles
cd $JBOSS_HOME/profiles mkdir domain01
This is the only place where the domain profile name is externalized.
Create the directory structure
cd $JBOSS_HOME/profiles/domain01 mkdir ./configuration
Copy necessary artifacts
Maintain the name of the server configuration files, this way we know what they are.
cd $JBOSS_HOME/domain/configuration cp application-* default-server-logging.properties domain.xml host.xml logging.properties mgmt-* ../../profiles/domain01/configuration
The authentication credentials copied as part of the application-* and mgmt-* file transfer could be further modified in place by a custom add-user.sh script, described below:
Custom add-user.sh Script
Create a custom profiles/domain01/add-user.sh shell wrapper to allow modification of this profile's authentication credential files. Note that both -sc (the location the server config directory) and -dc (the location of the domain config directory) must point to the same profiles/domain01/configuration directory, otherwise undesired effects such as modifying the standalone files will happen.
#!/bin/bash
reldir=$(dirname $0)
unset JBOSS_HOME
${reldir}/../../bin/add-user.sh -sc ${reldir}/configuration -dc ${reldir}/configuration
then:
chmod a+x add-user.sh
When attempting to add users to an isolated self-contained domain profile, make sure you use the script provided with the profile, and NOT the $JBOSS_HOME/bin script, because is you use the $JBOSS_HOME/bin script, the users won't be added to the profile's user files, but to the default user files. For more details see: Adding a User to an Isolated Self-Contained Standalone Profile.
Copy the initial version of the .conf file
Copy $JBOSS_HOME/bin/domain.conf as $JBOSS_HOME/profiles/domain01/profile.conf.
cp $JBOSS_HOME/bin/domain.conf $JBOSS_HOME/profiles/domain01/profile.conf
Use the standard name "profile.conf".
Create the run file
Create the run file in $JBOSS_HOME/profiles/domain01. Use the standard name "run".
#!/bin/bash
domain_config_file=domain.xml
reldir=$(dirname $0)
profile_dir=${reldir##*/}
[ "${profile_dir}" = "." ] && profile_dir=$(pwd)
export DOMAIN_CONF=${reldir}/profile.conf
#
# Use ${PROFILE_DIR} in ${DOMAIN_CONF} definitions
#
export PROFILE_DIR=$(dirname $0)
unset JBOSS_HOME
${reldir}/../../bin/domain.sh \
--domain-config=${domain_config_file} \
-Djboss.domain.base.dir=${reldir}
then:
chmod a+x run
jboss-cli Support
Simply use $JBOSS_HOME/bin/jboss-cli.sh. This is possible because the CLI wrapper queries (or needs to be provided explicitly) the address of the node to connect to. For more details on CLI see WildFly CLI.
Start-up
If the instance was configured correctly, data, log, servers and tmp will be created in $JBOSS_HOME/profiles/domain01.