From dc4968fa942a3de39762e895f1275b5cd53b9e7a Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Wed, 11 Apr 2018 14:41:03 +0200 Subject: [PATCH] Ensure foreman-telemetry is installed if needed --- manifests/install.pp | 6 ++ spec/acceptance/foreman_basic_spec.rb | 4 ++ spec/acceptance/foreman_prometheus_spec.rb | 75 ++++++++++++++++++++++ spec/acceptance/foreman_statsd_spec.rb | 75 ++++++++++++++++++++++ 4 files changed, 160 insertions(+) create mode 100644 spec/acceptance/foreman_prometheus_spec.rb create mode 100644 spec/acceptance/foreman_statsd_spec.rb diff --git a/manifests/install.pp b/manifests/install.pp index eae1ad196..7d3277ddd 100644 --- a/manifests/install.pp +++ b/manifests/install.pp @@ -42,4 +42,10 @@ ensure => installed, } } + + if $::foreman::telemetry_statsd_enabled or $::foreman::telemetry_prometheus_enabled { + package { 'foreman-telemetry': + ensure => installed, + } + } } diff --git a/spec/acceptance/foreman_basic_spec.rb b/spec/acceptance/foreman_basic_spec.rb index 3948f1a02..e35822f76 100644 --- a/spec/acceptance/foreman_basic_spec.rb +++ b/spec/acceptance/foreman_basic_spec.rb @@ -58,6 +58,10 @@ class { '::foreman': it { is_expected.to be_running } end + describe package('foreman-telemetry') do + it { is_expected.not_to be_installed } + end + describe port(80) do it { is_expected.to be_listening } end diff --git a/spec/acceptance/foreman_prometheus_spec.rb b/spec/acceptance/foreman_prometheus_spec.rb new file mode 100644 index 000000000..6fc0bd4e6 --- /dev/null +++ b/spec/acceptance/foreman_prometheus_spec.rb @@ -0,0 +1,75 @@ +require 'spec_helper_acceptance' + +describe 'Scenario: install foreman' do + before(:context) do + case os[:family] + when /redhat|fedora/ + on default, 'yum -y remove foreman* tfm-* && rm -rf /etc/yum.repos.d/foreman*.repo' + when /debian|ubuntu/ + on default, 'apt-get purge -y foreman*', { :acceptable_exit_codes => [0, 100] } + on default, 'apt-get purge -y ruby-hammer-cli-*', { :acceptable_exit_codes => [0, 100] } + on default, 'rm -rf /etc/apt/sources.list.d/foreman*' + end + end + + let(:pp) do + configure = os[:family] == 'redhat' && os[:family] != 'fedora' + <<-EOS + # Workarounds + + ## Ensure repos are present before installing + Yumrepo <| |> -> Package <| |> + + ## We want passenger from EPEL + class { '::apache::mod::passenger': + manage_repo => false, + } + + # Get a certificate from puppet + exec { 'puppet_server_config-generate_ca_cert': + creates => '/etc/puppetlabs/puppet/ssl/certs/#{host_inventory['fqdn']}.pem', + command => '/opt/puppetlabs/bin/puppet ca generate #{host_inventory['fqdn']}', + umask => '0022', + } + + # Actual test + class { '::foreman': + custom_repo => false, + repo => 'nightly', + gpgcheck => true, + configure_epel_repo => #{configure}, + configure_scl_repo => #{configure}, + user_groups => [], + admin_username => 'admin', + admin_password => 'changeme', + telemetry_prometheus_enabled => true, + } + EOS + end + + it_behaves_like 'a idempotent resource' + + describe service(os[:family] == 'debian' ? 'apache2' : 'httpd') do + it { is_expected.to be_enabled } + it { is_expected.to be_running } + end + + describe service('dynflowd') do + it { is_expected.to be_enabled } + it { is_expected.to be_running } + end + + describe package('foreman-telemetry') do + it { is_expected.to be_installed } + end + + describe port(80) do + it { is_expected.to be_listening } + end + + describe port(443) do + it { is_expected.to be_listening } + end + + # TODO: actually verify prometheus functionality +end diff --git a/spec/acceptance/foreman_statsd_spec.rb b/spec/acceptance/foreman_statsd_spec.rb new file mode 100644 index 000000000..704338726 --- /dev/null +++ b/spec/acceptance/foreman_statsd_spec.rb @@ -0,0 +1,75 @@ +require 'spec_helper_acceptance' + +describe 'Scenario: install foreman' do + before(:context) do + case os[:family] + when /redhat|fedora/ + on default, 'yum -y remove foreman* tfm-* && rm -rf /etc/yum.repos.d/foreman*.repo' + when /debian|ubuntu/ + on default, 'apt-get purge -y foreman*', { :acceptable_exit_codes => [0, 100] } + on default, 'apt-get purge -y ruby-hammer-cli-*', { :acceptable_exit_codes => [0, 100] } + on default, 'rm -rf /etc/apt/sources.list.d/foreman*' + end + end + + let(:pp) do + configure = os[:family] == 'redhat' && os[:family] != 'fedora' + <<-EOS + # Workarounds + + ## Ensure repos are present before installing + Yumrepo <| |> -> Package <| |> + + ## We want passenger from EPEL + class { '::apache::mod::passenger': + manage_repo => false, + } + + # Get a certificate from puppet + exec { 'puppet_server_config-generate_ca_cert': + creates => '/etc/puppetlabs/puppet/ssl/certs/#{host_inventory['fqdn']}.pem', + command => '/opt/puppetlabs/bin/puppet ca generate #{host_inventory['fqdn']}', + umask => '0022', + } + + # Actual test + class { '::foreman': + custom_repo => false, + repo => 'nightly', + gpgcheck => true, + configure_epel_repo => #{configure}, + configure_scl_repo => #{configure}, + user_groups => [], + admin_username => 'admin', + admin_password => 'changeme', + telemetry_statsd_enabled => true, + } + EOS + end + + it_behaves_like 'a idempotent resource' + + describe service(os[:family] == 'debian' ? 'apache2' : 'httpd') do + it { is_expected.to be_enabled } + it { is_expected.to be_running } + end + + describe service('dynflowd') do + it { is_expected.to be_enabled } + it { is_expected.to be_running } + end + + describe package('foreman-telemetry') do + it { is_expected.to be_installed } + end + + describe port(80) do + it { is_expected.to be_listening } + end + + describe port(443) do + it { is_expected.to be_listening } + end + + # TODO: actually verify statsd functionality +end