Red Hat
May 5, 2015
by Christina Lin
If you take a look at few of my startup script in my demo from "jbossdemocentral", you will see that I have automated the process of creating JBoss Fuse Fabric, deploying profiles into fabric, creating containers and install these profiles on top of the containers. 

In normal production environment, you will probably startup the JBoss fuse in the background. Under JBoss Fuse installation directory, under bin, you will find several executable scripts or batch, to start JBoss Fuse in the background, simply run the "start" or "start.bat" depending what  your operating system is. And to stop the background process, simply run the "stop" or "stop.bat".  
To access the command line console when it's running in the background, we can run the "client" or "client.bat" in the bin folder. It'll will take you to the command line console, where you normally see when running fuse. 

To automate and managing JBoss Fuse using CLI in script, we will call this "client" executable script with the command we want to run. This is the basic idea of this tip. 

Creating Fabric

If you take a look at my script, first you will see this, this set up the Fabric in JBoss Fuse. 

sh $FUSE_SERVER_BIN/client -r 3 -d 10 -u admin -p admin 'fabric:create --wait-for-provisioning'

In my demos and example, I am starting from scratch, which installed the JBoss Fuse, but I need fuse fabric installed, that's why you will find this in my script. In normal production, Fuse Fabric should be there to manage the entire fuse environment, so you will probably leave this out. 

There are few parameters in client that might be useful to you, 

  -u [user]     specify the user name
  -r [attempts] retry connection establishment (up to attempts times)
  -d [delay]    intra-retry delay (defaults to 2 seconds)

I added the retry attempts because sometime the karaf is not fully started when it's creating fabric in script, so retry running the command is a really useful feature to me. And then fabric:create --wait-for-provisioning is just normal command line for you to create and setup Fabric in JBoss Fuse. 

Build and Deploy

The next part of my script will go on and start building and deploying my project, here I am taking advantage of a great maven plugin feature in Fabric. Basically what is does, is it will start of building your application, and then create a profile in fabric with all the feature and bundle you specify in pom.xml. (Please see my previous post on this plugin for more details)

mvn fabric8:deploy

After running this part of the script, you will find your application profile in the wiki menu. 

Now we have application ready to go, my next part of the script will start creating new containers, and deploy the profile onto container. 

sh $FUSE_SERVER_BIN/client -r 2 -d 5 'container-create-child --profile demo-travelagency-webendpoint root wsflightcon'

In this sample, it creates a container called "wsflightcon" it inherits from the root container, and we also added a profile name "demo-travelagency-webendpoint". In the console, under runtime, you should see all the container you have created. 

Last thing I want to mention is the checking script. 

echo Testing containers startd,retry when not ready
while true; do
    if [ $(sh $FUSE_SERVER_BIN/client 'container-list'| grep "success" | wc -l ) -ge 7 ]; then
    sleep 2

Here it checks if all the 7 containers are successfully created and application are deployed. By calling the "container-list" it will list all the container and it's status. 

That's all for now. 

Original Post