Puppet Client - Could not evaluate: undefined method `[]' for nil:NilClass
Auf einem neu installierten Ubuntu System Version 16.04.1 LTS zeigt Puppet bei jedem Durchlauf einen Fehler der in etwa so aussieht:Aug 39 09:24:58 satyr puppet-agent[15820]: Starting Puppet client version 3.8.5
Aug 39 09:25:05 satyr puppet-agent[15825]: (/Stage[main]/Common_unix/Service[ssh]) Could not evaluate: undefined method `[]' for nil:NilClass
Aug 39 09:25:06 satyr puppet-agent[15825]: Finished catalog run in 1.71 seconds
oder auch:
Could not evaluate: Execution of '/sbin/status ssh' returned 1: status: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
auf dem Puppet Server ist hierbei z.B. folgendes Manifest definiert:
...
# restart sshd for changes to become effective
service { 'ssh':
ensure => 'running',
enable => true,
}
...
Laut offizieller Dokumentation sollte eigentlich systemd als Provider für Ubuntu 16.04 gewählt werden. Offenbar liegt hier der Grund für das Problem. Puppet wählt "upstart" als Provider.
Um das mit einem Quick and dirty Workaround zu beheben kann man obiges Snippet gegen das folgende im Puppet Manifest ersetzen:
Um das mit einem Quick and dirty Workaround zu beheben kann man obiges Snippet gegen das folgende im Puppet Manifest ersetzen:
# restart sshd for changes to become effective
if $::operatingsystem == 'Ubuntu' {
case $::operatingsystemmajrelease {
'14.04': { $serviceprovider = 'upstart' }
'16.04': { $serviceprovider = 'systemd' }
}
}
service { 'ssh':
ensure => 'running',
enable => true,
provide => $serviceprovider,
}