Contents
License BACK TO TOP
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:
Status BACK TO TOP
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}' ) wget https://raw.githubusercontent.com/mclarkson/obdi-docker/master/examples/setupobdi.sh wget https://raw.githubusercontent.com/mclarkson/obdi-docker/master/examples/setupdefworker.sh bash setupobdi.sh $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 setupdefworker.sh $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.
Source: https://github.com/mclarkson/obdi-docker
Plugins BACK TO TOP
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 saltconfigserver saltjobviewer saltkeymanager saltregexmanager saltupdategit |
Dev Plugins | Plugin templates for developing plugins. | helloworld helloworld-minimal helloworld-runscript helloworld-localdb |
Net Tools | General network tools. | nettools rsyncbackup |
AWS Tools | Tools for working with Amazon AWS. | aws-p2ec2 aws-ec2lib |
See also: Plugins Document
Architecture BACK TO TOP
Obdi was written using the following tools:
- Google Go for the back end REST interface.
- Angular JS and Bootstrap for the front end.
- Sqlite3 used for data storage.
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!