Apache License 2.0

What is it? BACK TO TOP

Obdi is a script wrapper. So, you've written a great script that's a few hundred lines long. Obdi can wrap around that script, providing a pretty user interface, and it can run it for you on local or remote servers.

Obdi provides some basic services. There are some things you would rather not write every time because a) it's boring to do, b) it's error prone. So Obdi provides the boring stuff, such as user management and permissions or token generation, so you don't have to.

Obdi glues different systems together. In Linux just about every task can be completed by using a script. Obdi can be used to collect the scripts in one place, and then they can be 'glued' together, probably by using more scripts and the REST APIs, to make larger more complex systems.

Obdi makes scripts automatable. REST is a big part of Obdi, and this is what makes Obdi so versatile. After a while you will notice that anything that can be done using the user interface can also be automated from the command line.

Obdi encourages code reuse. After installing a plugin it will probably be viewable in the user interface. Not all plugins will be viewable in the user interface however, as some are library plugins which only provide one or more REST end points and no user interface at all, for example obdi-aws-ec2lib works this way. There are other plugins that do have a user interface but their UI is only accessible from other plugins, for example obdi-aws-p2ec2. The following graphic shows how some existing Obdi plugins are reused:



Development has slowed down on the main Obdi repository and development effort has shifted to writing plugins. Obdi is actively maintained but there is no 'stable' production-ready version yet.

Installation BACK TO TOP

Using docker containers:

docker run -d -p 4443:443 --name obdi-master mclarkson/obdi-master

masterip=$(docker inspect obdi-master | \
  sed -n '/"Networks":/,/}/{s/.*IPAddress[^0-9]*\([0-9.]*\).*/\1/p}' )


bash $masterip

docker run -d --name obdi-worker-1 --env-file envfile mclarkson/obdi-worker

workerip=$(docker inspect obdi-worker-1 | \
  sed -n '/"Networks":/,/}/{s/.*IPAddress[^0-9]*\([0-9.]*\).*/\1/p}')

bash $masterip $workerip

With the above setup:

Obdi admin interface is at https://localhost:4443/manager/admin.
The default admin password is, admin.
Obdi run interface is at https://localhost:4443/manager/run.
The nomen.nescio password is, nomen.



Plugins need to be installed before Obdi can do anything useful. To install a plugin the repository URL, where the plugin is listed, is added to Obdi, then all available plugins for that repository will be shown.

Repository URL Description Plugins
Obdi Core Plugins Plugins that will probably always be installed. systemjobs
Salt Stack Plugins Plugins to manage Salt Stack. salt
Dev Plugins Plugin templates for developing plugins. helloworld
Net Tools General network tools. nettools
AWS Tools Tools for working with Amazon AWS. aws-p2ec2

See also: Plugins Document

Architecture BACK TO TOP

Obdi was written using the following tools:

Writing Plugins BACK TO TOP

A plugin writer needs to know some Go, Angular JS, Bootstrap, Javascript and a scripting language. That's quite a lot to learn! - but don't worry because it's fun, there are lots of examples, and coding style is not hugely important. Every plugin is self contained and if, like me, you're coding skills aren't guru level, just stick to the basics of each language and write chunks of procedural code that Obdi looks after. This actually works very well and you are encouraged to jump in and start hacking away!