Skip to content

Commit

Permalink
Add service to publish facts to foreman
Browse files Browse the repository at this point in the history
  • Loading branch information
bastelfreak committed Oct 25, 2024
1 parent 9b0ac1e commit a81c7aa
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 0 deletions.
1 change: 1 addition & 0 deletions .fixtures.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
fixtures:
repositories:
stdlib: 'https://github.com/puppetlabs/puppetlabs-stdlib'
systemd: 'https://github.com/voxpupuli/puppet-systemd'
10 changes: 10 additions & 0 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@
# The directory used to install the report processor to
# @param use_client_tls_certs
# Enable client TLS authentication to foreman
# @param watch_for_facts_and_publish_them
# Sets up a simple systemd unit that watches for new fact files and publishes them to foreman. Not required when foreman is the ENC
class puppetserver_foreman (
Stdlib::HTTPUrl $foreman_url = $puppetserver_foreman::params::foreman_url,
Boolean $enc = true,
Expand All @@ -58,6 +60,7 @@
Variant[Enum[''], Stdlib::Absolutepath] $ssl_cert = $puppetserver_foreman::params::client_ssl_cert,
Variant[Enum[''], Stdlib::Absolutepath] $ssl_key = $puppetserver_foreman::params::client_ssl_key,
Boolean $use_client_tls_certs = true,
Boolean $watch_for_facts_and_publish_them = false,
) inherits puppetserver_foreman::params {
case $facts['os']['family'] {
'Debian': { $json_package = 'ruby-json' }
Expand Down Expand Up @@ -126,5 +129,12 @@
group => $puppet_group,
mode => '0750',
}
if $watch_for_facts_and_publish_them {
systemd::unit_file { 'facts.service':
enable => true,
active => true,
content => epp('puppetserver_foreman/facts.service.epp', { 'user' => $puppet_user }),
}
}
}
}
4 changes: 4 additions & 0 deletions metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@
{
"name": "puppetlabs/stdlib",
"version_requirement": ">= 9.0.0 < 10.0.0"
},
{
"name": "puppet/systemd",
"version_requirement": ">= 7.1.0 < 8.0.0"
}
],
"requirements": [
Expand Down
8 changes: 8 additions & 0 deletions spec/classes/init_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@
.with_owner('puppet')
.with_group('puppet')
.with_content(%r{foreman\.yaml})

should.not contain_systemd__unit_file('facts.service')
end

it 'should set up directories for the ENC' do
Expand Down Expand Up @@ -168,6 +170,12 @@

it { should contain_class('puppetserver_foreman').with_foreman_url('https://hiera-foreman.example.com') }
end
describe 'setup service to pubish facts' do
let :params do
{watch_for_facts_and_publish_them: true}
end
it { is_expected.to contain_systemd__unit_file('facts.service') }
end
end
end
end
12 changes: 12 additions & 0 deletions templates/facts.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<%- | String[1] $user | -%>
# THIS FILE IS MANAGED BY PUPPET
[Unit]
Description=publish facts to foreman

[Service]
Type=simple
User=<%= $user %>
ExecStart=/etc/puppetlabs/puppet/node.rb --watch-facts

[Install]
WantedBy=multi-user.target

0 comments on commit a81c7aa

Please sign in to comment.