6. It is just vendoring!
Gather your dependencies & bus them out
7. The conceptual workflow
1.
2.
3.
4.
Decide on a build prefix, maybe /opt/some_app
Build in all the dependencies, runtimes, etc
Build the app - only linking in stuff from /opt/some_app
Wrap /opt/some_app into deb or rpm using fpm
8. But is it juuuust
vendoring?
There is certainly more to be said
20. Move over Twitter, why do
YOU use it?
I like to use packages as my CI/CD artifact
I promote omnibus packages as testable change sets
Omnibus lets me worry (a bit) less about managing repos
Less deps to resolve at provisioning == less trouble
21. JeOS + omnibus-packages gives me ... SPEED
Same process for Kickstarts, cloud images or
containers
fpm -s rpm -t dir ...
Config management tool has a lot less to worry about
Little need to master multi-deps packaging
22.
23. Dreaming of a different
world
What if distros contained THEIR Pythons and Rubies and
whatever they needed?
What if distros and upstream made friends <3 and
together grew a toolset for rapid provisioning of full
stacks?
What if we had a generic, sharable packaging DSL?
24. Not a dream after all?
Pleaserun abstracts init scripts (Jordan Sissel is my hero)
The concept of a OS is changing
26. Tools of the trade
omnibus-ruby
fpm-cookery
A lot of others like bunchr, pkgr ...
27. omnibus-ruby
A Ruby DSL/gem first and foremost created for making
Chef packages
Uses Ohai to gather knowledge about a system
Very usable also for generic packaging - it uses fpm after all
Tooling around it is tied to Chef
28. omnibus-ruby gotchas!
No mechanism for providing packages as build-time deps
You could probably work around that
Complains if you link to anything outside the sandbox
It is not straigthforward to host your own software library
29. fpm-cookery
A gem that adds a generic packaging DSL on top of fpm
Uses Puppet and Facter for abstractions
Andy Sykes @supersheep contributed code to get
omnibus-like features
DSL contains definition of both build- and deploytime
package dependencies
30. fpm-cookery gotchas!
Omnibus-enabled builds must be done as root
No easy way of structuring internally dependent
definitions; each project must have a copy of the Ruby
definition file
Ehm.. little or no documentation. Use teh source! :-O
33. I believe The Foreman as a
project would benefit from
having readily-available
omnibus-style packages
available for end users
34. Use cases
vagrant up really up before you've finished your
morning coffee?
Installing an omnibus package is easier than -enablerepo=x?
We get an easy - dare I say correct - way of supporting
Foreman within containers? Unpack, done.
Foreman or Foreman proxy alongside other stuff on
SmartOS? FreeBSD?
35. I'm doing it, please stop
me! (or try to help)
Come chat with me after this in the hack room or ping me
on Twitter
Lets try and have something usable quickly
Vagrant build lab?
Binaries/repos at bintray?
38. The Vagrant-based
Foreman bootstrap
process
Provision Foreman all-in-one with Vagrant on VirtualBox
Create an extra network on the instance
Bridge that network to a 'real' physical network
Use e.g PXE with Foreman in Vagrant to provision ...
Foreman
39. References
John E. Vincent: Omnibus'ing your way to
happiness
Chef mailing list discussion
Eat the Whole Bowl - Seth Chisamore and Christopher
Maier
Paul Czarkowski: Logstash + Opscode Omnibus
Packaging Puppet using fpm-cookery, omnibus-style
Various people on Foodfightshow on omnibus and concepts
around it
40. I'm for hire (remotely)
Current availability: October
no.linkedin.com/in/beddari