puppet in lucid does not support upstart status
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
puppet (Ubuntu) |
Fix Released
|
High
|
Mathias Gug | ||
Lucid |
Fix Released
|
High
|
Mathias Gug |
Bug Description
Binary package hint: puppet
Puppet does not currently have an "upstart" provider for the service resource. As such, it relies on upstart's sysV compatability, which is somewhat limited.
The key problem here is that features such as "ensure => running" cannot rely on "hasstatus => true" for any service that has an upstart init script. Upstart's status command appears to consider the exit code to be an actual error status *for upstart itself*, and does not conform to the status-based exit codes specified by sysV init scripts.
The result is that the only way to know if a service is running or stopped in puppet on lucid is to set "hasstatus => false" and then define a regular expression for grepping the process table--this is far from optimal.
Compounding this, puppet's init.d provider considers it appropriate to run "update-rc.d" as though the sysV script were the preferred init script.
What needs to happen very soon is either an upstart provider is written for puppet's service resource (presumably one that falls back to the sysv script if no upstart script is found), or the sysV compatibility scripts need to interpret the "stop/waiting" output of the upstart status command and translate that to the standard exit code. Until then, lucid's puppet is somewhat crippled.
ProblemType: Bug
DistroRelease: Ubuntu 10.04
Package: puppet 0.25.4-2ubuntu4
ProcVersionSign
Uname: Linux 2.6.32-18-generic x86_64
Architecture: amd64
Date: Tue Mar 30 10:38:40 2010
EcryptfsInUse: Yes
PackageArchitec
ProcEnviron:
LC_COLLATE=C
PATH=(custom, user)
LANG=en_US.UTF-8
SHELL=/bin/bash
SourcePackage: puppet
Changed in puppet (Ubuntu): | |
importance: | Undecided → Medium |
status: | New → Confirmed |
Changed in puppet (Ubuntu Lucid): | |
importance: | Medium → High |
Changed in puppet (Ubuntu Lucid): | |
milestone: | none → ubuntu-10.04 |
Changed in puppet (Ubuntu Lucid): | |
assignee: | nobody → Mathias Gug (mathiaz) |
Changed in puppet (Ubuntu Lucid): | |
status: | Triaged → In Progress |
I'll try and find the bug in a second, but apparently the lack of any return codes from /etc/init.d/foo status when a service has been upstarted is a bug.
Ultimately I feel puppet needs an initctl based service provider.