Date: Sun, 8 May 2011 13:13:12 -0700 From: Garrett Cooper <yanegomi@gmail.com> To: jhell <jhell@dataix.net> Cc: freebsd-rc@freebsd.org Subject: Re: [RFC][Change-Request] Create usefulness in rc.subr etc/rc.conf.d/*.conf namespace. Message-ID: <C7EC90A2-936C-44E1-BC5E-E249399AF9AB@gmail.com> In-Reply-To: <20110508191336.GC3527@DataIX.net> References: <20110508191336.GC3527@DataIX.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On May 8, 2011, at 12:13 PM, Jason Hellenthal wrote: > > List, - Please reply-to freebsd-rc@freebsd.org > > Recently I have been going over some changes in the configurations that > are possible with the rc subsystem and to my dismay I have found some > inconsistencies with in particular the way rc.conf.d directory is > processed and the arguments that are supplied to load_rc_config so I have > patched it up... > > Let me explain: As determined by rc.subr load_rc_config, config's from > rc.conf.d are loaded by the scripts $name as an argument to load_rc_config > and thus only the name being parsed is is available to be used in the > rc.conf.d directory. Why is this bad ? Its not! but it is inconvenient as > the user has no direct way to know that a variable used by nfsd is also > needed by mountd or the same for various other scripts in the rc.d > directory. At this time these config's are explained to be available for > the user to utilize by rc.conf(5) but yet without much knowledge of the > inner workings of the rc subsystem it would be quite the feat to do. > > > The attachment[1] keeps this functionality the same while introducing a > more convenient approach for the user to modularize their configuration > however they see fit within a couple constraints that work very well. > > > What does it do ?: As stated above, current functionality is undisturbed > while allowing the user to create config's by any name they so desire as > long as it has an extension of ".conf", also introducing the ability to > turn a configuration file off by using chmod(1). You can turn nfsc1.conf > off/on by simply chmod [-/+]x etc/rc.conf.d/nfs1.conf > > > Why ? Simple. How many times have you been bitten by disabling something > in the rc.conf file and left to discover what you just disabled was also > used by another daemon but that daemon is now not starting ? This is a way > to virtualize your configuration allowing you to add multiple _enable= > lines to different configurations for different roles. For instance > rpcbind is used by both samba and nfs*. With this you can add > rpcbind_enable to both a configuration for samba and nfs and when you > disable one service you know that you have not disabled a dependent for > another. > > > This is a small addition that fixes currently broken undesirable aspects > of the configuration system that deals with the rc.conf.d directory with a > SysV style init approach that is just as flexible. This should apply > cleanly to current and stable/8 & 8.2-RELEASE systems. Once more feedback > has been received Ill update the manual page with any suggestions > regenerate the patch to accommodate and file a PR. > > > 1). http://patches.jhell.googlecode.com/hg/rc.subr_modular_conf.patch Doing: find /etc/rc.conf.d/ -type f -name '*.conf' -mindepth 1 -maxdepth 1 -perm +111 | while read _modular_conf; do debug "Sourcing $_modular_conf" . "$_modular_conf" done might be better. There's some more magic that could ultimately be done to make this more secure/robust using "-print0" | xargs, but it's up to you how you might want to go about solving that problem. Also, I don't know if depending on a .conf file to be executable is necessarily the best course of action. Cheers! -Garrett
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?C7EC90A2-936C-44E1-BC5E-E249399AF9AB>
