Bahmni Custom Deploy Via Puppet

Hello all–

First off, thanks for being so responsive to Christian’s multiple questions re: Bahmni. It has been really helpful as we explore using Bahmni as a solution in Sierra Leone.

I’ll add another question to the mix, this one re: deployment.

We (PIH) have been exploring different options for deploying Bahmni. One potential option would be to instead of deploying Bahmni using the out-of-the-box installer, for consistency we deploy Bahmni in our standard environment/setup we use for our other OpenMRS implementations. That is, on Ubuntu, with specific versions of apache, tomcat, and mysql installed in specific locations, and a standard set of utilities (crashplan, new relic, etc).

Currently, we do all this via puppet, and so I’ve been spiking on adding a puppet module to our puppet deployment that installs all the components of Bahmni (Openmrs.war, modules, bahmniapps, and config) in the appropriate locations. This has been fairly straightforward so far, but in term of installing a specific Bahmni release, I was wondering if the different components that make up a release are available (or could be available) individually. Here’s how I’m seeing things so far:

  1. OpenMRS war + modules: assuming we know the version numbers of core and associated modules that make up a release, we can download these via a puppet maven plugin from the OpenMRS Maven repo. The only issue would be if there were ever snapshot versions of modules in a release? Does this ever happen? If so, the particular timestamped snapshot would need to be available.

  2. Default-config: if the “released” version is tagged in github, we should be able to easily install that config via the puppet git plug-in

  3. bahmniapps: if a released version of bahmni apps is tagged in github, we could check it out and build it, but, ideally the “dist” component would be bundled up and deployed somewhere for each release. Does this currently exist at all?

Thanks! Look forward to discussing this further.

For each release, we have a branch in github for default-config & bahmniapps. Maybe you can download the particulcar branch.

Here are the release links for default-config repo:

And for bahmniapps ui

But, the advantage with the github release will be that one can download the package with a single url. Maybe Bahmni team should consider creating a github release as part of the branch-cut process.

1 Like

Thanks! One thing though, these are branches, not tags, and are therefore evolving. Is there a point that each release branch is “locked” as the actual commit that goes into that release?

In addition, I see there are release branches for the openmrs-distro-bahmni project as well. I assume I can get the versions of each OpenMRS module included in the release by looking at the main pom in the that project? But is there any way to determine the actual version of a SNAPSHOT that goes into a release?

Hello Mark… I spoke to Bharat from our team who is working on the RPM installs. He mentioned that we are using Nebula plugins for generating RPMs. These plugins also support generating .Deb files. The scripts that Bahmni team wrote for Bahmni rpm post installation should equally work for Ubuntu as well.

Since PIH is Ubuntu focussed, it would be really good if the same packaging scheme used by Bahmni for rpms (bahmni-emr, bahmni-lab, etc with embedded tomcat) could also be used for Ubuntu installs via .deb. This will help in consistency of Bahmni install paths and documentation.

Can someone from PIH help by using our Nebula plugins, and generate (and test) .debs for Ubuntu?

Sure, I’d definitely be willing to test, just point me in the right direction.

Thanks, Mark

Very cool - yes we would definitely be willing to try this out. Thanks!

Hi @mseaton @mogoodrich As @gsluthra pointed out, we are working on creating rpms for bahmni. You can have a look at the repo here. We will write a detailed wiki once we are in a decent shape on development. As it is currently in development, you can expect the scripts changing very fast and having bugs… It will be great, if you can wait for a couple of more weeks and start contributing, so that the scripts will be more mature.

The RPMs are available in this yum repo. Please note that we have not done anything for debs at this point in time, but the nebula-os-plugin supports creation of debs using the same scripts. Please feel free to try it out and give use feedback.

Once the RPMs are ready, the Bahmni installation will be as easy as “yum install bahmni”. Please find the installation script on a centos minimal box with all the prerequisites here and a vagrant box built using the rpms here