voxpupuli / puppet-collectd

Collectd module for Puppet
https://forge.puppet.com/puppet/collectd
Apache License 2.0
69 stars 273 forks source link

service.pp incorrectly references static service name #877

Open fnoop opened 5 years ago

fnoop commented 5 years ago

Affected Puppet, Ruby, OS and module versions/distributions

How to reproduce (e.g Puppet code you use)

class { "collectd":
        manage_service  => true,
        service_ensure  => $service_ensure,
        service_enable  => $service_enable,
        service_name    => 'maverick-collectd',
    } ->
    service_wrapper { "collectd":
        ensure          => stopped,
        enable          => false,
    }

What are you seeing

Error: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Resource Statement, Duplicate declaration: Service[collectd] is already declared at (file: /srv/maverick/software/maverick/manifests/puppet-modules/collectd/manifests/service.pp, line: 7); cannot redeclare (file: /srv/maverick/software/maverick/manifests/init.pp, line: 232) (file: /srv/maverick/software/maverick/manifests/init.pp, line: 232, column: 13) (file: /srv/maverick/software/maverick/manifests/maverick-modules/maverick_analysis/manifests/collect.pp, line: 122) on node maverick-ubuntuvm.lan

What behaviour did you expect instead

Not to have conflicting resource

Any additional information you'd like to impart

As per #688 and #771 , $collectd::service_name should be used instead of Service['collectd']. service.pp controls the service with a static name: service { 'collectd': This should be: service { $collectd::service_name:

PR to follow

fnoop commented 3 years ago

This still isn't fixed, it's because manifests/service.pp references: service { 'collectd':

This then doesn't allow us to reference Service['collectd'] elsewhere:

Error: Evaluation Error: Error while evaluating a Resource Statement, Cannot alias Service[system-collectd] to ["collectd"] at (file: /srv/maverick/software/maverick/manifests/maverick-modules/maverick_analysis/manifests/collect.pp, line: 140); resource ["Service", "collectd"] already declared (file: /srv/maverick/software/maverick/manifests/puppet-modules/collectd/manifests/service.pp, line: 6) (file: /srv/maverick/software/maverick/manifests/maverick-modules/maverick_analysis/manifests/collect.pp, line: 140, column: 5) on node mvrk.org

If the code was changed to something like: service { 'managed_collectd':, then it wouldn't clash.