Public bug reported:

Running Puppet on Ubuntu 15.04 Vivid:

        $ lsb_release -d
        Description:    Ubuntu 15.04

        $ apt-cache policy puppet-common
        puppet-common:
                Installed: 3.7.2-1ubuntu2

Using the bird package as an example:

        $ dpkg -L bird | vgrep service unit files
        /lib/systemd/system/bird.service
        /lib/systemd/system/bird6.service
        /etc/init.d/bird6
        /etc/init.d/bird
        /etc/init/bird.conf
        /etc/init/bird6.conf

Puppet appears to choose the debian provider for the bird service, over
the systemd provider:

        $ sudo puppet resource --debug --param provider --param enable service 
bird
        Debug: Runtime environment: puppet_version=3.7.2, ruby_version=2.1.2, 
run_mode=user, default_encoding=UTF-8
        ...
        Debug: /Service[bird]: Provider debian does not support features 
flaggable; not managing attribute flags
        ...
        Debug: Service bird found in both debian and init; skipping the init 
version
        ...
        Debug: /Service[bird.service]: Provider systemd does not support 
features flaggable; not managing attribute flags
        ...
        Debug: Executing '/etc/init.d/bird status'
        service { 'bird':
          ensure   => 'stopped',
          enable   => 'true',
          provider => 'debian',
        }

This means that while `ensure => running/stopped` works:

        $ sudo puppet resource --debug --param provider service bird 
ensure=stopped
        Debug: Executing '/etc/init.d/bird status'
        Debug: Executing '/etc/init.d/bird stop'
        Notice: /Service[bird]/ensure: ensure changed 'running' to 'stopped'
        Debug: Finishing transaction 3255100
        Debug: Storing state
        Debug: Stored state in 0.13 seconds
        Debug: Executing '/etc/init.d/bird status'
        service { 'bird':
          ensure   => 'stopped',
          provider => 'debian',
        }

The service `enabled => true/false` state does not:

        $ sudo puppet resource --debug --param provider service bird 
enable=false
        Debug: Executing '/etc/init.d/bird status'
        Debug: Executing '/usr/sbin/update-rc.d bird disable'
        Notice: /Service[bird]/enable: enable changed 'true' to 'false'
        Debug: Finishing transaction 23676980
        Debug: Storing state
        Debug: Stored state in 0.12 seconds
        Debug: Executing '/etc/init.d/bird status'
        service { 'bird':
          ensure   => 'stopped',
          enable   => 'false',
          provider => 'debian',
        }
        $ sudo puppet resource --debug --param provider service bird enable=true
        Debug: Executing '/etc/init.d/bird status'
        Debug: Executing '/usr/sbin/update-rc.d -f bird remove'
        Debug: Executing '/usr/sbin/update-rc.d bird defaults'
        Notice: /Service[bird]/enable: enable changed 'false' to 'true'
        Debug: Finishing transaction 12984740
        Debug: Storing state
        Debug: Stored state in 0.14 seconds
        Debug: Executing '/etc/init.d/bird status'
        service { 'bird':
          ensure   => 'stopped',
          enable   => 'true',
          provider => 'debian',
        }
        $ ls /etc/rc?.d/*bird*
        /etc/rc0.d/K01bird   /etc/rc1.d/K01bird6  /etc/rc3.d/K01bird6  
/etc/rc4.d/S02bird   /etc/rc6.d/K01bird
        /etc/rc0.d/K01bird6  /etc/rc2.d/K01bird6  /etc/rc3.d/S02bird   
/etc/rc5.d/K01bird6  /etc/rc6.d/K01bird6
        /etc/rc1.d/K01bird   /etc/rc2.d/S02bird   /etc/rc4.d/K01bird6  
/etc/rc5.d/S02bird
        $ sudo systemctl is-enabled bird
        disabled

I presume that systemd ignores any sysvinit configuration (/etc/rc?.d/*)
for services that have a native systemd unit, and is thus blind to any
state inspected/changed by puppet's debian service provider.

Workaround is to explcitly use the systemd provider for the service
shipping a native systemd service unit:

        $ sudo puppet resource --debug --param provider --param enable service 
bird provider=systemd enable=true
        Warning: Setting manifest is deprecated in puppet.conf. See 
http://links.puppetlabs.com/env-settings-deprecations
        Debug: Executing '/bin/systemctl is-active bird'
        Debug: Executing '/bin/systemctl is-enabled bird'
        Debug: Executing '/bin/systemctl enable bird'
        Notice: /Service[bird]/enable: enable changed 'false' to 'true'
        Debug: Finishing transaction 14759420
        Debug: Storing state
        Debug: Stored state in 0.20 seconds
        Debug: Executing '/bin/systemctl is-active bird'
        Debug: Executing '/bin/systemctl is-enabled bird'
        service { 'bird':
          ensure   => 'stopped',
          enable   => 'true',
          provider => 'systemd',
        }
        $ sudo systemctl is-enabled bird
        enabled

** Affects: puppet (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1495853

Title:
  puppet service enable broken on ubuntu vivid for services shipping
  sysvinit and systemd support

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/puppet/+bug/1495853/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to