ethrbunny
ethrbunny

Reputation: 10469

puppet / facter: "created(corrective)"

I use puppet to update / maintain itself (among other things). For some reason every time the client runs I get these two actions:

Notice: /Stage[main]/Servers::Packages::Puppet/Package[facter]/ensure: created (corrective)
Notice: /Stage[main]/Servers::Packages::Puppet/Package[puppet]/ensure: created (corrective)

The definitions in question look like this:

    package { 'puppet' :
            ensure => 'latest',
            require => Package['facter'];
    }

    package { 'facter' :
            ensure => 'latest',
    }

    file { '/etc/default/puppet' :
            ensure => 'file',
            mode => '644',
            source => 'puppet:///modules/servers/packages/puppet/default';
    }

    file{ '/etc/puppetlabs/puppet/puppet.conf' :
            mode => '644',
            content => template("servers/packages/puppet/puppet_conf.erb"),
            require => Package[ 'puppet' ];
    }

    service{ 'puppet' :
            ensure => 'running',
            enable => true,
            require => Package[ 'puppet' ],
            subscribe => [
                    File[ '/etc/default/puppet'],
                    File[ '/etc/puppetlabs/puppet/puppet.conf'],
            ];
    }

What's wrong with my definition(s)? Why do puppet / facter appear to be reinstalled with every run?

Upvotes: 1

Views: 1157

Answers (1)

John Bollinger
John Bollinger

Reputation: 180103

Since Puppet 4, Puppet, Inc. has provided only all-in-one packages of client-side components, not named either 'puppet' or 'facter'. The package for Puppet 6 is named puppet-agent -- this is what you should be managing, not packages named 'puppet' or 'facter'.

The messages you report indicate that Puppet does not see up-to-date 'puppet' or 'facter' packages, which is natural because these do not exist. They also indicate that puppet thinks it has corrected the problem -- which it will have attempted to do by installing / updating packages with those names, and which apparently succeeded. This seeming incongruity will have arisen because the puppet-agent packages declare that they provide features named "puppet" and "facter", which your package manager is using to associate those package names with the puppet-agent package. As a result, the installation / update succeeds without actually installing anything new, leaving the system primed to do the same thing over again on the next run.

I suspect that the "(corrective)" marks on the log output reflect package-manager exit statuses indicating success without doing anything.

Upvotes: 2

Related Questions