[RFC][Change-Request] Create usefulness in rc.subr
etc/rc.conf.d/*.conf namespace.
Jason Hellenthal
jhell at DataIX.net
Tue May 10 05:15:19 UTC 2011
Devin,
On Mon, May 09, 2011 at 08:39:25PM -0700, Devin Teske wrote:
>
> On May 9, 2011, at 8:07 PM, Jason Hellenthal wrote:
>
> >
> > Devin,
> >
> > On Mon, May 09, 2011 at 06:53:43PM -0700, Devin Teske wrote:
> >> Jason,
> >>
> >>> rc.conf or rc.conf.local override. What do you think ? everyone else ? Doug ?
> >>
> >> I talked about this with our lead developers and we think we came up with
> >> something that has real significant potential.
> >>
> >> We suggest that your source the rc.cond.d/*.conf files:
> >>
> >> a. After /etc/rc.conf
> >> b. Before /etc/rc.conf.local
> >>
> >> Half our developers said that it would be nice if /etc/rc.conf.d/product.conf
> >> could override rc.conf(5) and the other half said it would be nice if it was the
> >> other way around. Then we thought about it for a moment, and we realized that if
> >> you sourced them in-between the two files, that you could accommodate both
> >> parties.
> >>
> >> In this setup, we'd have /etc/rc.conf be the initial override file that
> >> overrides /etc/defaults/rc.conf. Then /etc/rc.conf.d/product.conf would override
> >> that. And finally, /etc/rc.conf.local would be end-all-be-all of overrides.
> >> Nothing would be capable of overriding /etc/rc.conf.local (which seems to suit
> >> the name -- "local" should indicate that the "non-local" can be inherited from a
> >> master configuration, perhaps site-wide or pod-specific).
> >>
> >> What do you think? I think it would be the "happy median."
> >>
> >
> > I am somewhat sketchy of putting it between the two. Reason being is I
> > know quite a few people that already place anything that has to do with
> > ports(7) into rc.conf.local just to keep it seperate from the systems
> > rc.conf.
> >
> > I can see that raising a few eyebrows. As of right now its thought of that
> > rc.conf and rc.conf.local get processed consecutively and would have to be
> > explained quite rigorously how they actually fall in order. Only my
> > opinion though, its up for grabs.
> >
> > 1). If its sourced before then it can be considered user pre-defined
> > defaults.
>
> This sounds the most reasonable/desirable. In our hypothetical scenario where the customer controls both rc.conf and rc.conf.local, we'd eventually come across the request from a customer to disable a product-wide feature on a per-customer basis. In this case, adding something to their sup(1)/cvsup(1)-distributed rc.conf(5) would override the default. Support folks could go home and the override is in-place, problem solved.
>
> Conversely for either of the below scenarios, adding an override would then become more difficult. Ultimately in our scenario, the ifconfig_* elements are in /etc/rc.conf.local (and therefore cannot be distributed) and the site-wide specifics (NTP server specifics, etc.) are in the global /etc/rc.conf (distributed to all hosts in the site). So unless you source before the rc_conf_files, the customer would be frustrated and end up throwing an /etc/rc.conf.d/zzz.conf into their sup(1)/cvsup(1) distributed directory to override our /etc/rc.conf.d/product.conf files.
>
> Since we want to satisfy the customer, #1 becomes the only sensible approach. Sourcing /etc/rc.conf.d/*.conf before rc_conf_files. It then becomes a sort of shim to override /etc/defaults/rc.conf (but again, only if the directory /etc/rc.conf.d exists, which it shouldn't by-default in any installed distribution unless the owner/operator/developer adds one).
>
> I can then envision a package containing a /etc/rc.conf.d/product.conf -- perhaps to be used sparingly and only when the package is for a product that takes control of a machine, IMHO
>
>
>
> >
> > 2). If its sourced after then it becomes user defined overrides for
> > anything in rc.conf or rc.conf.local
> >
> > 3). If placed between then I feel it becomes an extension of rc.conf
> > leaving rc.conf.local to be the final say on all configs. This is
> > intentionally what rc.conf.local was meant for anyway.
> >
> >
> > Really I personally do not object to either of the three listed above and
> > can see a point of view from all three sides but if I was forced to vote
> > for one of them I would probably have to go with 3. User feedback for this
> > type of thing is greatly needed & appreciated.
>
> It was upon second thought that I actually have to change my vote to be #1 as the best option.
>
> That would make /etc/rc.conf.d two things:
>
> 1. /etc/rc.conf.d/NAME where NAME is /etc/rc.d/NAME or /usr/local/etc/rc.d/NAME
>
> NAME files in /etc/rc.conf.d would be sourced anytime NAME RCNG script is utilized (and these files override both rc.conf and rc.conf.local if they exist).
>
> 2. /etc/rc.conf.d/CUSTOM.conf where CUSTOM is anything you want.
>
> CUSTOM.conf files in /etc/rc.conf.d would be sourced before rc_conf_files (which include /etc/rc.conf and /etc/rc.conf.local) in source_rc_confs of /etc/defaults/rc.conf. This would allow the files to similarly be sourced anytime NAME RCNG script is utilized (and these files override the defaults in /etc/defaults/rc.conf).
>
> Is that a correct approximation of your proposed final implementation?
Not to break existing behavior the way they stand:
[...]
/etc/defaults/rc.conf
/etc/rc.conf.d/CUSTOM
/etc/rc.conf
/etc/rc.conf.local
/etc/rc.conf.d/NAME
If I understood that correctly then yes.
--
Regards, (jhell)
Jason Hellenthal
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 522 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-rc/attachments/20110510/71415222/attachment.pgp
More information about the freebsd-rc
mailing list