Hi Ewoud,
By removing the environment from hostgroup, we do not want to remove the
puppet classes. I see the hostgroup as a template of defaults for a host.
We could add a default environment to a hostgroup, but I thought it would
be better to have each host created explicity assigned an environment.
Based on the environment, the correct puppetclass is installed. For
example, development environment has xyzclass-1.5-beta whereas production
environment has 1.4-stable but it’s the “same puppetclass” as defined in
the hostgroup, just not environment specific. It’s just an idea, but maybe
it wont work, since we need an environment to know the available
puppetclasses
Regarding hardware profile, the plan is to enter the minimum requirements,
so when when running discovery it can find the bare metal servers that are
appropriate for provisioning a particular server for hostgroup / HW profile.
Regards,
Joseph
----- Original Message -----
From: “Ewoud Kohl van Wijngaarden” ewoud@kohlvanwijngaarden.nl
To: “foreman-dev” foreman-dev@googlegroups.com
Sent: Sunday, September 29, 2013 6:16:39 PM
Subject: Re: [foreman-dev] Hostgroup re-design
On Sun, Sep 29, 2013 at 09:16:04AM -0400, Joseph Magen wrote:
Amos and I are working on the hostgroup re-design. Here are the
attributes that were are removing from hostgroups:
I’m not against refactoring hostgroups, but I do see some problems with
the proposal as-is. Please read my comments as constructive criticism
because that’s how I intend it.
- environment - determined by host environment
-1 because puppet classes are linked to an environment (and IMHO not
strong enough). Removing the environment would imply removing the puppet
classes as well, which would make configuring a bunch of hosts as a
group of webservers from foreman much harder. I can imagine people will
stop using the puppet class parameters and move to hiera to achieve the
role/profile pattern.
To give a better picture, let me describe how we now use host groups.
- Make one per environment
** Select a set of defaults for environment, puppet master, puppet ca,
often subnet, domain, OS, architecture, partition table as well
(since we’re pretty standardized on that).
** Add some base classes (base profile, such as SSH, nrpe, munin)
- Create a sub-hostgroup per role
** Add the role specific classes (think database, webserver, application
server, load balancer).
One option would be to add conditional puppet classes so that if you
select production, you get the production classes where in staging you
get the staging classes, but I am wondering if that wouldn’t make it
very complicated.
Maybe the roles/profiles should be explicit. A puppet profile would be
tied to an environment, include puppet classes with optional parameter
defaults. Then a puppet role would be tied to an environment, include
some of the puppet profiles from that environment with some optional
parameter defaults. The role should also solve conflicts in the defaults
since multiple profile may include the same puppet classes with
different overrides.
Still, if you want to have a hostgroup per role, you either need to
include environment in the hostgroup, or make a puppet role group which
maps an environment to the environment specific classes with their
parameters.
- media - determined by host location
- domain - determined by host location
- subnet - determined by host location
This assumes locations are enabled. What if one location has many
subnets and domains? Can a subnet belong to multiple locations?
- architecture - determined by hardware profile
- partition table - determined by OS template ???
Can you have multiple OS templates per OS? Such as LVM vs non-LVM or
ext4 vs xfs. Mutliple drives for your gluster fileserver etc. Maybe it
should be named OS profile?
- root password - determined by OS template ???
Do you agree that partition table and root password can removed from
hostgroup and put in OS template?
Hardware profile will include:
How will this work for bare metal servers? They do have an architecture,
but the others are hard to change.
Some virtualisation allows you to select the number of cores per socket
and the amount of sockets. How will you deal with this?
- memory disk
I assume you meant memory size.
- disk size ???
I assume you meant disks with their respective sizes.
- architecture
I’d add NICs with their respective names as well.
We will add hardware profile to hostgroup. Do you agree?
Then, in order to provision a new host, you need to select:
- hostgroup & environment (WHAT)
- location & compute resource (WHERE)
As should be clear by the length of questions, I highly value role as a
selection as well.
–
You received this message because you are subscribed to the Google Groups
"foreman-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to foreman-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
–
You received this message because you are subscribed to the Google Groups
"foreman-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to foreman-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.