We're entertaining the idea of switching from Cobbler over to Foreman. Not
because of any big issues we've had with Cobbler, but more of a future
proofing, as Cobbler development has slowed dramatically. Before we do
that though, I have some questions about how to translate certain functions
from Cobbler to Foreman.
First off - our infrastructure:
- We have a largish infrastructure ( 30k+ systems ) and most of our Cobbler
provisioning deals with bare metal systems. We do some VM installs, but we
treat then pretty much exactly the same as BMs.
- For each hosting zone, it has a dedicated, non-routed provisioning VLAN
that has no access to the internet or even other services within our DC
- Each of our Cobbler servers ( we have 9, for the different hosting zones
), is dual-homed, with one NIC on the run network for that zone, and the
other on the provisioning vlan.
- We provision a mix of OEL, RHEL, CentOS and Windows via Cobbler.
- We're a Salt/Chef shop - no Puppet
So, onto some questions:
1 - Cobbler's ks_meta - This seems to translate directly over to Foreman's
Parameters - is that correct? We can set various key/value pairs and use
those in the templates/snippets to direct the build?
2 - Do foreman parameters accept more complication structures than just
k=v, like dicts, lists, nested versions of those, etc?
3 - This feels like a dumb one, but where the heck do you host your OS
media? In Cobbler, we host the media on each individual Cobbler server and
sync it from a central source. I could only find options to point at an
NFS mount or some URL. Cobbler generally handles loading the media into
it's tree for you, does Foreman have something like that?
4 - How do you deal with dual-homed installations? I've gone over some of
the documentation and I'm unsure if it's just using smart proxies, or
subnets, or even the Locations feature
5 - Windows provisioning - anyone played with this? We use iPXE's wimboot
in Cobbler to boot into WinPE and install from there
6 - Can you call arbitrary URLs from a provisioning host to the Foreman
server ( or whatever we'd be using, smart proxies? ) to get a generic
template that's rendered for the host? For instance, during a Windows
installation, we'll call up to Cobbler's
/cblr/svc/op/script/system/acme.example.com?script=somescript.cmd and it'll
return a templated version of the script for that host.
7 - Foreman's hooks. We tried to use Cobbler's triggers, but they were too
generic. We have orchestration in our builds where we call a URL on the
Cobbler server and have it execute a script for us on the Cobbler server
itself. We use this for sending events up to our Salt master. We ended
up just writing our own WSGI app to do this and the provisioning host calls
it and sends the event.
8 - Log shipping. We use Cobbler's anamon process to ship over logs from
the provisioning host, during the provision, back to the Cobbler host and
upload those into Splunk, so we can watch a provision run remotely.
Anything like this in Foreman?
I could probably come up with alot more, but that's probably too many as is.
Any help with some general guidelines or pointers at specific points of the
documentation that speak on how to do these would be appreciated.