[389-devel] Regarding changing instance specific scripts to be "global/generic"

Rich Megginson rmeggins at redhat.com
Mon Feb 4 19:12:26 UTC 2013


On 02/04/2013 11:39 AM, Mark Reynolds wrote:
>
>
> On 02/04/2013 12:16 PM, Rich Megginson wrote:
>> On 02/04/2013 09:42 AM, Mark Reynolds wrote:
>>> There has been a request to remove instance specific scripts, and 
>>> make them generic and placed in /usr/sbin/
>>>
>>> https://fedorahosted.org/389/ticket/528
>>>
>>>
>>> Should we remove all the scripts from /usr/lib64/dirsrv/slapd-INSTANCE:
>>>
>>> bak2db          db2index     dn2rdn ldif2ldap ns-newpwpolicy.pl  
>>> start-slapd usn-tombstone-cleanup.pl
>>> bak2db.pl       db2index.pl  fixup-linkedattrs.pl 
>>> monitor              restart-slapd      stop-slapd verify-db.pl
>>> cleanallruv.pl  db2ldif      fixup-memberof.pl ns-accountstatus.pl  
>>> restoreconfig      suffix2instance vlvindex
>>> db2bak          db2ldif.pl   ldif2db ns-activate.pl 
>>> saveconfig         syntax-validate.pl
>>> db2bak.pl       dbverify     ldif2db.pl ns-inactivate.pl 
>>> schema-reload.pl   upgradednformat
>>>
>>> It appears almost of these are all instance specific.  Do we want to 
>>> make all of these "generic" and stick them in /usr/sbin?
>>
>> Yes.
> Works for me.
>>>
>>> However, I think it makes sense to keep some instance specific 
>>> scripts: monitor, stop/start/restart, maybe the "task" scripts too 
>>> (like schema reload, cleanallruv, fix-memberof, etc). Then only make 
>>> the database scripts generic: db2ldif db2index, ldif2db, db2bak, 
>>> bak2db, etc.
>>
>> One of the goals is to get any "dynamic" files out of /usr. Most 
>> installations want to mount /usr read-only.  They do not want to 
>> mount /usr read-write in order to create or update a 389 instance.
>>
>> IPA works around this by putting the instance specific scripts in 
>> /var/lib/dirsrv/scripts-INSTANCE - but most people aren't looking for 
>> 389 maintenance commands under /var.
>>
>> I don't think we need any instance specific scripts, but if we do, 
>> they should not be in /usr or /var.
> Ok,  I don't think we need them, but if someone really wants them, 
> they could go in a new directory under /etc/dirsrv/*

Ok.

One more thing - we will need to have some period of time when we still 
have the /usr/lib instance specific scripts in addition to the /usr/sbin 
scripts to allow for a period of transition.  We could just make the 
instance specific scripts in /usr/lib symlinks to /usr/sbin or wrappers 
or something similar.

>>
>> We have already started to do this with the 
>> start-dirsrv/stop-dirsrv/restart-dirsrv scripts in /usr/sbin. With no 
>> argument, they work on all instances, or accept the instance name as 
>> an argument.  This is fine for start/stop/restart, but might be a bit 
>> surprising for something like db2ldif, if it then does an export of 
>> all instances.  For all scripts other than start/stop/restart, I 
>> think the command should fail if the instance is not specified e.g.
>> # db2ldif ...
>> Error: More than one instance - specify the instance name as one of: 
>> foo bar ...other instance names...
> One request was to check if there is only a single instance and then 
> use that one by default, otherwise error out.  I think this makes 
> sense, and should be easy to do.
>>
>> The other nice thing about the start-dirsrv etc. scripts is that they 
>> use the instance information from /etc/sysconfig/dirsrv-* to look for 
>> the dse.ldif, log files, etc.  That removes the need for an instance 
>> specific script created during instance creation time with 
>> "hardcoded" instance specific values.
> Yup, sounds like a plan.
>
> Thanks for your input Rich!
>
> Mark
>>
>>
>>> Just curious what everyone thinks about this.
>>>
>>> Thanks,
>>> Mark
>>>
>>
>



More information about the 389-devel mailing list