diff --git a/manifests/agent.pp b/manifests/agent.pp index 8ad790c9..5b619f98 100644 --- a/manifests/agent.pp +++ b/manifests/agent.pp @@ -3,8 +3,9 @@ class puppet::agent { contain puppet::agent::install contain puppet::agent::config + contain puppet::agent::facter contain puppet::agent::service - Class['puppet::agent::install'] ~> Class['puppet::agent::config', 'puppet::agent::service'] + Class['puppet::agent::install'] ~> Class['puppet::agent::config', 'puppet::agent::facter', 'puppet::agent::service'] Class['puppet::config', 'puppet::agent::config'] ~> Class['puppet::agent::service'] } diff --git a/manifests/agent/facter.pp b/manifests/agent/facter.pp new file mode 100644 index 00000000..cd6db2c0 --- /dev/null +++ b/manifests/agent/facter.pp @@ -0,0 +1,73 @@ +# Puppet agent facter configuration +# @api private +class puppet::agent::facter ( + Optional[Array[String]] $blocklist = undef, + Optional[Array[String]] $cachelist = undef, + String $cache_ttl = '1 day', +) { + file { '/etc/puppetlabs/facter': + ensure => directory, + } + + hocon_setting { 'facter.conf': + path => '/etc/puppetlabs/facter/facter.conf', + require => File['/etc/puppetlabs/facter'], + setting => 'managed', + value => 'puppet', + } + + if $blocklist { + hocon_setting { 'blocklist facts group': + ensure => present, + path => '/etc/puppetlabs/facter/facter.conf', + setting => 'fact-groups.blocked-facts', + value => $blocklist, + type => 'array', + } + -> hocon_setting { 'blocklist facts': + ensure => present, + path => '/etc/puppetlabs/facter/facter.conf', + setting => 'facts.blocklist', + value => ['blocked-facts'], + type => 'array', + } + } else { + hocon_setting { 'blocklist facts group': + ensure => absent, + path => '/etc/puppetlabs/facter/facter.conf', + setting => 'fact-groups.blocked-facts', + } + hocon_setting { 'blocklist facts': + ensure => absent, + path => '/etc/puppetlabs/facter/facter.conf', + setting => 'facts.blocklist', + } + } + if $cachelist { + hocon_setting { 'cachelist facts group': + ensure => present, + path => '/etc/puppetlabs/facter/facter.conf', + setting => 'fact-groups.cached-facts', + value => $cachelist, + type => 'array', + } + -> hocon_setting { 'cachelist facts': + ensure => present, + path => '/etc/puppetlabs/facter/facter.conf', + setting => 'facts.ttls', + value => [{ 'cached-facts' => $cache_ttl }], + type => 'array', + } + } else { + hocon_setting { 'cachelist facts group': + ensure => absent, + path => '/etc/puppetlabs/facter/facter.conf', + setting => 'fact-groups.cached-facts', + } + hocon_setting { 'cachelist facts': + ensure => absent, + path => '/etc/puppetlabs/facter/facter.conf', + setting => 'facts.ttls', + } + } +} diff --git a/metadata.json b/metadata.json index d500b661..a7b6bd36 100644 --- a/metadata.json +++ b/metadata.json @@ -30,6 +30,10 @@ { "name": "puppet/systemd", "version_requirement": ">= 2.9.0 < 9.0.0" + }, + { + "name": "puppetlabs/hocon", + "version_requirement": ">= 1.1.0 < 2.0.0" } ], "requirements": [