Modify ↓
Ticket #551 (closed defect: worksforme)
Failed to bind service
Reported by: | [email protected]… | Owned by: | desai |
---|---|---|---|
Priority: | critical | Milestone: | Bcfg2 0.9.6 Release |
Component: | bcfg2-server | Version: | 0.9.x |
Keywords: | Cc: |
Description
I just upgraded to 0.9.6pre1 on a client and a server. I followed the Debian Package building instructions to create packages.
I ran bcfg2 on the client and was told that all of my services were incorrect. The server log shows a line like the following for every single service.
Failed to bind entry: Service hal
Here are all of my service definitions extracted from my Bundles. There is an error in the server log for each one of them. There are no Service entries that do not get the above error.
<Service name="bcfg2" status="off"/> <Service name="rsync" status="off"/> <Service name="gdm" status="off"/> <Service name="laptop-mode" status="off"/> <Service name="stop-readahead" status="on"/> <Service name="xserver-xorg-input-wacom" status="on"/> <Service name="kde-guidance" status="off"/> <Service name="fetchmail" status="off"/> <Service name="policykit" status="on"/> <Service name="libnss-ldap" status="on"/> <Service name="nscd" status="on"/> <Service name="portmap" status="on" sequence="17"/> <Service name="autofs" status="on" sequence="50"/> <Service name="nfs-common" status="on" sequence="20"/> <Service name="ntp" status="on" sequence="23"/> <Service name="tables" status="on"/> <Service name="ssh" status="on" sequence="16"/> <Service name="exim4" status="on"/> <Service name="wdm" status="off"/> <Service name="kdm" status="on" sequence="90" reload="reload"/> <Service name="cupsys" status="off" sequence="19"/> <Service name="killprocs" status="on" reload="stop"/> <Service name="rc.local" status="on" reload="stop"/> <Service name="rmnologin" status="on" reload="stop"/> <Service name="single" status="on" reload="stop"/> <Service name="nvidia-kernel" status="on" reload="stop"/> <Service name="anacron" status="off"/> <Service name="cron" status="on" sequence="89"/> <Service name="usplash" status="on" reload="start"/> <Service name="ubiquity" status="off"/> <Service name="acpi-support" status="on"/> <Service name="vbesave" status="on"/> <Service name="acpid" status="on"/> <Service name="apmd" status="on"/> <Service name="apport" status="on"/> <Service name="atd" status="on"/> <Service name="binfmt-support" status="on"/> <Service name="bluetooth" status="on"/> <Service name="hal" status="on"/> <Service name="dbus" status="on"/> <Service name="dhcdbd" status="on"/> <Service name="avahi-daemon" status="on"/> <Service name="hotkey-setup" status="on"/> <Service name="klogd" status="on"/> <Service name="sysklogd" status="on"/> <Service name="powernowd" status="on"/> <Service name="powernowd.early" status="on"/> <Service name="pulseaudio" status="on"/>
Attachments
Change History
Note: See
TracTickets for help on using
tickets.
I am pretty sure that this isn't a bug. Here is the issue. You can deal with service entries in two ways. The default mechanism (and the only one supported prior to 0.9.6pre) is to define the service entry (including name, but not type or status) in the bundle, with the rule definitions (including status and type) in the Rules plugin. This is needed if you want to have a service enabled on some hosts and disabled on others, while using the same bundle.
The other option (new in 0.9.6pre) is to use Bound entries. You can include Service entries inside of bundles with the name BoundService? (instead of Service). This causes the server to bypass the second stage binding (ie getting Service information from Rules) and instead just changes the name from Bound$x to $x. You can accomplish exactly what you're trying to do here by using that method.
I have two comments about that approach though. First, you probably need to add a type attribute on your services, so that the client knows how to handle them (if your clients are debian as well, type='debinit'). Second, Bound entries are (absolutely) needed in certain cases. In this case, it is more of a shortcut. It makes things easier for what you're doing here, but you may need to pull services out (and put them into Rules) if you need more differences between hosts.
The client probably also emitted a warning about being unable to verify your service entries as well (owing to the lack of a type attribute)