[PKG-Openstack-devel] Bug#770706: Bug#770706: keystone.service does not start, /var/run/keystone not created

Mikaël Cluseau mcluseau at isi.nc
Tue Dec 2 07:21:32 UTC 2014


Hi,

On 12/02/2014 01:52 AM, Gaudenz Steinlin wrote:
> So only new changes which fix (RC) bugs are allowed and the changes 
> should be as minimal as possible to fix the bug.

Since I already posted patches for a minimal set of code changes with a 
minimal set of feature changes, I can now move on more radical changes. 
My policy is now to follow your comments as long as Thomas doesn't 
disagree (including this policy itself ;-)). That's why I've gone 
farther in my last reply.

> I wanted to comment on this already in my first reply but forgot. 
> What's the advantage of comparing with "x" prepended here?

I didn't change what existed here. AFAIK, it's a pratice to help have 
portable shell scripts.

>> I don't agree at all here. It's *not* a duplicate. With a 
>> configuration file, you can choose, globally, for a given service, 
>> where to log. You cannot select which daemon. [...] So we really need 
>> this as a feature to make it easy to configure for each service, and 
>> the configuration files just wont do it. 
> I don't care very much about this. I can see Thomas point [...]
>
> The variables are designed in a way which is a bit hard to support with
> systemd. It would be easier if the values in the /etc/default/ files
> already contained the command line arguments.

If we want to use these environment files, I can't see a way to keep the 
current logic without using a shell. As you say and as is suggested in 
https://wiki.debian.org/systemd/Packaging#overriding_options_and_.2Fetc.2Fdefault_handling, 
we could switch to an OPTIONS environment variable used in ExecStart. 
Supporting USE_SYSLOG and USE_LOGFILE seems hard to do while the OPTIONS 
solution improves the feature by allowing to specify globally any 
globally recognized daemon parameters. Thus, I think it's a reasonable 
choice that is easy to support in both init systems. As there's a 
consensus on keeping the same interface for the sysv-rc and systemd, we 
should change the init script accordingly.

My proposal is the following:

EnvironmentFile=-/etc/default/openstack
EnvironmentFile=-/etc/default/${NAME}
ExecStart=${DAEMON}--config-file=/etc/${PROJECT_NAME}/${PROJECT_NAME}.conf  \${OPTIONS}


We could even use the following environment files when $PROJECT_NAME != 
$NAME:

EnvironmentFile=-/etc/default/openstack
EnvironmentFile=-/etc/default/${PROJECT_NAME}
EnvironmentFile=-/etc/default/${NAME}


> I don't yet fully understand how the templates in openstack-pkg-tools
> work. How are service specific values filled in?

Every package has a debian/${DAEMON}.init.in with the variables defined. 
For instance for keystone:

[...]
DESC="OpenStack Identity service"
PROJECT_NAME=keystone
NAME=keystone
DAEMON=/usr/bin/keystone-all


> I agree that we should let the operator choose how he want's to do 
> logging. I don't think anyone want's to dispute that. But we need a 
> default configuration. Certainly we don't want debug logging by 
> default at all. Anyway the discussion was about creating /var/log and 
> /var/lib from the sysv init script. This is wrong in all cases 
> independently how logging is done. This just belongs to the package. 

I agree that someone switching where the log file are should create the 
log directories accordingly. As a consequence, if we default to 
/var/log/${PROJECT_NAME}, and if every other package is creating these 
at install time, we probably should do the same and create 
/var/log/${PROJECT_NAME} at install time (that whould even fix this bug 
without having to change a line in the unit and the sysv-rc script).

>> I do believe that the /var/lock/${PROJECT_NAME} is needed in some cases
>> for the internals of OpenStack. I would find it dangerous to remove
>> it.
> Then we have to find out which ones use it and create it for those
> services. At least IMO.

I prefer to avoid dangerous choices; its not expensive to have these 
created. But then, should they be created by systemd or at install time? 
(Thomas?)

> So we all agree on this. From here at least for me it follows that the
> non working unit files should be removed as soon as possible. If we can
> come up with a solution without relying on the sysv init script and that
> is acceptable for the Release team, then good. Otherwise the second best
> option IMO is to use the sysv support in systemd and not ship any unit
> files.

I think my previous work (keeping the init-script) can be accepted by 
the release team and is a significant step toward the systemd's way as 
it avoids start-stop-daemon. I will add the missing auto-created folders 
to keep closer to the original script.



More information about the Openstack-devel mailing list