Building the IoT Smart Gateway with Docker, Raspberry Pi and JBoss for the “lazy” ones – Ansible rules!

January 23, 2016

If you have followed my earlier posts, then you know, that I’m in the process of building an IoT Demo, with a Raspberry Pi2  as the Smart Gateway.

During this process, I had to re-install my Raspberry multiple times, but after the second time I got a bit tired of doing the same steps over and over again, so I decided to automate this deployment with Ansible.

If you are unfamiliar with Ansible, it’s a “radically simple IT automation engine that automates cloud provisioning,configuration management, application deployment, intra-service orchestration, and many other IT needs.”

These are the steps to perform, if you do not feel like doing the installation and configuration by yourself.

Step 1: Exchange ssh-key

Ansible does communicate with it’s hosts via ssh, so you will need to copy the ssh-key from your local system to the Raspberry Pi.
I’m running a Macbook and previously installed ssh-copy-id as a convenience script. So all I had to do to copy my existing key was

MacBook-Pro:files psteiner$ ssh-copy-id /Users/psteiner/.ssh/id_rsa pi@<ip to your rpi>

You will, of course, have to alter this command to your system.

Step 2: Enable password-less sudo on RPi

Again for convenience and simplicity I changed the behaviour of sudo on my RPi, so that members of a certain group are able to issue the command sudo without the need of entering a password.

In my case, any member of the group ‘sudo’ should become this privilege. The only thing required to do so is to alter on line in the file ‘/etc/sudoers’  from

# Allow members of group sudo to execute any command


# Allow members of group sudo to execute any command

Step 3: Clone git repository

All required code is on, so all you need to do is to run

MacBook-Pro:files psteiner$ git clone

Step 4: Add Red Hat JBoss Products

For the Smart Gateway to run, you will have to download the following Red Hat JBoss Products and place them into the directory IoT_Demo_Gateway/Ansible/files

For background information on what those products will do, please refer to Building a Raspberry Pi based Smart Gateway for IoT

Step 5: Adapting Ansible to your environment

Due to the simplicity of Ansible, there is not a lot to do, just edit the file IoT_Demo_Gateway/Ansible/hosts and replace the IP-Address of my RPi with yours.


Step 6: Running Ansible

Let’s fire it up, or in Ansible terminology “run the playbook”.

MacBook-Pro:Demos psteiner$ cd IoT_Demo_Gateway/Ansible/
MacBook-Pro:Ansible psteiner$ ansible-playbook gateway.yml

PLAY [Configure a Pi to be a smart gateway for IoT] ***************************

GATHERING FACTS ***************************************************************
ok: []

TASK: [Install various pre-requisites] ****************************************
ok: []

TASK: [Download Hypriot] ******************************************************
ok: []

TASK: [Install Hypriot] *******************************************************
changed: []

TASK: [Start Hypriot] *********************************************************
ok: []

TASK: [Enable Hypriot to run after reboots] ***********************************
ok: []

TASK: [Add user pi to docker group] *******************************************
ok: []

TASK: [Download Docker-Compose] ***********************************************
changed: []

TASK: [Install Docker-Compose] ************************************************
changed: []

TASK: [Clone Smart Gateway code from github] **********************************
ok: []

TASK: [Upload JBoss A-MQ] *****************************************************
ok: []

TASK: [Upload JBoss EAP] ******************************************************
ok: []

TASK: [Upload JBoss Fuse Integration for JBoss EAP] ***************************
ok: []

TASK: [Build Docker base image] ***********************************************
ok: []

TASK: [Building the other images with docker-compose] *************************
changed: []

PLAY RECAP ******************************************************************** : ok=15 changed=4 unreachable=0 failed=0

Please note that your output can look at bit different, as this was not the first time that I ran this Ansible playbook. Important is, that it will finish with ‘failed=0’

Details on how to run the Smart Gateway are already documented in Step 5 in Building a Raspberry Pi based Smart Gateway for IoT

Have fun and stay tuned for more to come!

Leave a Reply


Subscribe to our newsletter.

Please select all the ways you would like to hear from Open Sourcerers:

You can unsubscribe at any time by clicking the link in the footer of our emails. For information about our privacy practices, please visit our website.

We use Mailchimp as our newsletter platform. By clicking below to subscribe, you acknowledge that your information will be transferred to Mailchimp for processing. Learn more about Mailchimp's privacy practices here.