Editing Karaf configuration using Fabric profiles
When you run JBoss Fuse in a Fabric, the configuration of each Karaf container can be managed using profiles.
Profiles are useful, because they allow you to make a configuration setting just once, and have that setting applied across all containers in your Fabric that share the same profile. This saves you having to copy files between containers yourself.
Here are some other fun facts about profiles:
- A container can have one or more profiles assigned to it.
- Profiles are arranged in a hierarchy. That is, a child profile will inherit settings from its parent.
- The profile that defines all the main stuff for Fabric to run is called default.
To edit configuration values in a profile, use the fabric:profile-edit
command, which you type into the Karaf console.
When you change a configuration value in a profile, it will then be applied to all containers that have that profile.
To list all of your containers, and see the profiles assigned to each, use the command fabric:container-list
.
Setting OSGi Config Admin Persistent ID (PID) properties
OSGi Config Admin Persistent ID (PID) properties are the properties that you normally see in etc/
. These include things like the org.ops4j...
sets of properties, which control things like logging, the Jetty web server, and so on.
These OSGi PIDs can be set using the fabric:profile-edit
command, with the --pid
argument:
fabric:profile-edit --pid <PID>/<Property>=<Value> <Profile> [<Version>]
Where PID
is the OSGi Persistent ID to edit (e.g. org.ops4j.pax.logging
).
For example, to increase the logging on your class com.example.myclass
, you can use:
fabric:profile-edit --pid org.ops4j.pax.logging/log4j.logger.com.example.myclass=DEBUG karaf
Setting Java properties (config.properties and system.properties)
You can also use Fabric to change settings in your config.properties
and system.properties
files, too. These files are also under the control of Fabric.
To make changes to these files, you can still use fabric:profile-edit
, but the syntax is a little different.
For settings in config.properties
, you use the --system
argument:
fabric:profile-edit --system <Property>=<Value> <Profile> [<Version>]
And for settings in config.properties
, you use the --config
argument:
fabric:profile-edit --config <Property>=<Value> <Profile> [<Version>]
For example, to set a system property and then a config property, you would do something like the following (see how I’m applying these settings to the karaf profile):
fabric:profile-edit --system my.config.parameter=1234 karaf
fabric:profile-edit --config another.config.parameter=1234 karaf
Then, these values will be added into the system.properties
and config.properties
files respectively.
Don’t forget, first check out profile-list
to see the available profiles that you can edit.
For more information check out the fabric8 docs!