diff --git a/.sync.yml b/.sync.yml index 2c9f265..cc8979c 100644 --- a/.sync.yml +++ b/.sync.yml @@ -1,13 +1,14 @@ --- .travis.yml: beaker_sets: - centos6-64 - debian9-64 - debian10-64 + - fedora31-64 - ubuntu1804-64 env: global: - PARALLEL_TEST_PROCESSORS=8 beaker_puppet_collections: - puppet5 - puppet6 diff --git a/.travis.yml b/.travis.yml index bfbacec..afbea27 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,93 +1,115 @@ --- # This file is managed centrally by modulesync # https://github.com/theforeman/foreman-installer-modulesync env: global: - PARALLEL_TEST_PROCESSORS=8 matrix: fast_finish: true include: - rvm: 2.4.1 env: PUPPET_VERSION=5.0 - rvm: 2.5.1 env: PUPPET_VERSION=6.0 # Acceptance tests - rvm: 2.5.1 env: - BEAKER_PUPPET_COLLECTION=puppet5 - BEAKER_setfile=centos6-64{hostname=centos6-64.example.com} script: bundle exec rake beaker services: docker bundler_args: --without development before_install: - echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json - sudo service docker restart - rvm: 2.5.1 env: - BEAKER_PUPPET_COLLECTION=puppet6 - BEAKER_setfile=centos6-64{hostname=centos6-64.example.com} script: bundle exec rake beaker services: docker bundler_args: --without development before_install: - echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json - sudo service docker restart - rvm: 2.5.1 env: - BEAKER_PUPPET_COLLECTION=puppet5 - BEAKER_setfile=debian9-64{hostname=debian9-64.example.com} script: bundle exec rake beaker services: docker bundler_args: --without development before_install: - echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json - sudo service docker restart - rvm: 2.5.1 env: - BEAKER_PUPPET_COLLECTION=puppet6 - BEAKER_setfile=debian9-64{hostname=debian9-64.example.com} script: bundle exec rake beaker services: docker bundler_args: --without development before_install: - echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json - sudo service docker restart - rvm: 2.5.1 env: - BEAKER_PUPPET_COLLECTION=puppet6 - BEAKER_setfile=debian10-64{hostname=debian10-64.example.com} script: bundle exec rake beaker services: docker bundler_args: --without development before_install: - echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json - sudo service docker restart + - rvm: 2.5.1 + env: + - BEAKER_PUPPET_COLLECTION=puppet5 + - BEAKER_setfile=fedora31-64{hostname=fedora31-64.example.com} + script: bundle exec rake beaker + services: docker + bundler_args: --without development + before_install: + - echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json + - sudo service docker restart + + - rvm: 2.5.1 + env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - BEAKER_setfile=fedora31-64{hostname=fedora31-64.example.com} + script: bundle exec rake beaker + services: docker + bundler_args: --without development + before_install: + - echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json + - sudo service docker restart + - rvm: 2.5.1 env: - BEAKER_PUPPET_COLLECTION=puppet5 - BEAKER_setfile=ubuntu1804-64{hostname=ubuntu1804-64.example.com} script: bundle exec rake beaker services: docker bundler_args: --without development before_install: - echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json - sudo service docker restart - rvm: 2.5.1 env: - BEAKER_PUPPET_COLLECTION=puppet6 - BEAKER_setfile=ubuntu1804-64{hostname=ubuntu1804-64.example.com} script: bundle exec rake beaker services: docker bundler_args: --without development before_install: - echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json - sudo service docker restart bundler_args: --without system_tests development dist: xenial diff --git a/metadata.json b/metadata.json index ab6f49d..f5029b8 100644 --- a/metadata.json +++ b/metadata.json @@ -1,117 +1,117 @@ { "name": "theforeman-puppet", "version": "13.0.0", "author": "theforeman", "summary": "Puppet agent and server configuration", "license": "GPL-3.0+", "source": "git://github.com/theforeman/puppet-puppet", "project_page": "https://github.com/theforeman/puppet-puppet", "issues_url": "https://github.com/theforeman/puppet-puppet/issues", "description": "Module for installing the Puppet agent and Puppet server", "tags": [ "foreman", "puppet", "puppetmaster", "puppet-server" ], "dependencies": [ { "name": "puppetlabs/concat", "version_requirement": ">= 4.1.0 < 7.0.0" }, { "name": "puppetlabs/stdlib", "version_requirement": ">= 4.18.0 < 7.0.0" }, { "name": "puppet/extlib", "version_requirement": ">= 3.0.0 < 6.0.0" }, { "name": "camptocamp/systemd", "version_requirement": ">= 2.9.0 < 3.0.0" } ], "requirements": [ { "name": "puppet", "version_requirement": ">= 5.5.8 < 7.0.0" } ], "operatingsystem_support": [ { "operatingsystem": "RedHat", "operatingsystemrelease": [ "6", "7", "8" ] }, { "operatingsystem": "CentOS", "operatingsystemrelease": [ "6", "7", "8" ] }, { "operatingsystem": "Scientific", "operatingsystemrelease": [ "6", "7" ] }, { "operatingsystem": "Fedora", "operatingsystemrelease": [ - "26" + "31" ] }, { "operatingsystem": "Debian", "operatingsystemrelease": [ "9", "10" ] }, { "operatingsystem": "Ubuntu", "operatingsystemrelease": [ "16.04", "18.04" ] }, { "operatingsystem": "FreeBSD", "operatingsystemrelease": [ "11", "12" ] }, { "operatingsystem": "DragonFly", "operatingsystemrelease": [ "4" ] }, { "operatingsystem": "Archlinux" }, { "operatingsystem": "SLES", "operatingsystemrelease": [ "11", "12" ] }, { "operatingsystem": "windows", "operatingsystemrelease": [ "8", "2012", "2012 R2" ] } ] } diff --git a/spec/acceptance/puppet_spec.rb b/spec/acceptance/puppet_spec.rb new file mode 100644 index 0000000..a07d026 --- /dev/null +++ b/spec/acceptance/puppet_spec.rb @@ -0,0 +1,16 @@ +require 'spec_helper_acceptance' + +describe 'Scenario: install puppet' do + before(:context) do + on default, puppet('resource', 'service', 'puppet', 'ensure=stopped', 'enable=false') + end + + let(:pp) { 'include puppet' } + + it_behaves_like 'a idempotent resource' + + describe service('puppet') do + it { is_expected.to be_running } + it { is_expected.to be_enabled } + end +end diff --git a/spec/acceptance/puppetserver_config_spec.rb b/spec/acceptance/puppetserver_config_spec.rb index 8c85ecd..c9b537d 100644 --- a/spec/acceptance/puppetserver_config_spec.rb +++ b/spec/acceptance/puppetserver_config_spec.rb @@ -1,41 +1,41 @@ require 'spec_helper_acceptance' -describe 'Puppetserver config options' do +describe 'Puppetserver config options', unless: unsupported_puppetserver do before(:context) do if check_for_package(default, 'puppetserver') on default, puppet('resource package puppetserver ensure=purged') on default, 'rm -rf /etc/sysconfig/puppetserver /etc/puppetlabs/puppetserver' on default, 'find /etc/puppetlabs/puppet/ssl/ -type f -delete' end # puppetserver won't start with lower than 2GB memory memoryfree_mb = fact('memoryfree_mb').to_i raise 'At least 2048MB free memory required' if memoryfree_mb < 256 end describe 'server_max_open_files' do let(:pp) do <<-MANIFEST class { '::puppet': server => true, server_foreman => false, server_reports => 'store', server_external_nodes => '', # only for install test - don't think to use this in production! # https://docs.puppet.com/puppetserver/latest/tuning_guide.html server_jvm_max_heap_size => '256m', server_jvm_min_heap_size => '256m', server_max_open_files => 32143, } MANIFEST end it_behaves_like 'a idempotent resource' # pgrep -f java.*puppetserver would be better. But i cannot get it to work. Shellwords.escape() seems to break something describe command("grep '^Max open files' /proc/`cat /var/run/puppetlabs/puppetserver/puppetserver.pid`/limits"), :sudo => true do its(:exit_status) { is_expected.to eq 0 } its(:stdout) { is_expected.to match %r{^Max open files\s+32143\s+32143\s+files\s*$} } end end end diff --git a/spec/acceptance/puppetserver_latest_spec.rb b/spec/acceptance/puppetserver_latest_spec.rb index 0c56af0..fc393fe 100644 --- a/spec/acceptance/puppetserver_latest_spec.rb +++ b/spec/acceptance/puppetserver_latest_spec.rb @@ -1,32 +1,32 @@ require 'spec_helper_acceptance' -describe 'Scenario: install puppetserver (latest):' do +describe 'Scenario: install puppetserver (latest):', unless: unsupported_puppetserver do before(:context) do if check_for_package(default, 'puppetserver') on default, puppet('resource package puppetserver ensure=purged') on default, 'rm -rf /etc/sysconfig/puppetserver /etc/puppetlabs/puppetserver' on default, 'find /etc/puppetlabs/puppet/ssl/ -type f -delete' end # puppetserver won't start with lower than 2GB memory memoryfree_mb = fact('memoryfree_mb').to_i raise 'At least 2048MB free memory required' if memoryfree_mb < 256 end let(:pp) do <<-EOS class { '::puppet': server => true, server_foreman => false, server_reports => 'store', server_external_nodes => '', # only for install test - don't think to use this in production! # https://docs.puppet.com/puppetserver/latest/tuning_guide.html server_jvm_max_heap_size => '256m', server_jvm_min_heap_size => '256m', } EOS end it_behaves_like 'a idempotent resource' end diff --git a/spec/acceptance/puppetserver_upgrade_5_3_6_to_5_3_7_spec.rb b/spec/acceptance/puppetserver_upgrade_5_3_6_to_5_3_7_spec.rb index e450a3e..9acf03d 100644 --- a/spec/acceptance/puppetserver_upgrade_5_3_6_to_5_3_7_spec.rb +++ b/spec/acceptance/puppetserver_upgrade_5_3_6_to_5_3_7_spec.rb @@ -1,90 +1,90 @@ require 'spec_helper_acceptance' -describe 'Scenario: 5.3.6 to 5.3.7 upgrade:', if: ENV['BEAKER_PUPPET_COLLECTION'] == 'puppet5' do +describe 'Scenario: 5.3.6 to 5.3.7 upgrade:', if: ENV['BEAKER_PUPPET_COLLECTION'] == 'puppet5', unless: unsupported_puppetserver do before(:context) do if check_for_package(default, 'puppetserver') on default, puppet('resource package puppetserver ensure=purged') on default, 'rm -rf /etc/sysconfig/puppetserver /etc/puppetlabs/puppetserver' on default, 'rm -rf /etc/puppetlabs/puppet/ssl' end # puppetserver won't start with low memory memoryfree_mb = fact('memoryfree_mb').to_i raise 'At least 256MB free memory required' if memoryfree_mb < 256 end case fact('osfamily') when 'Debian' from_version = "5.3.6-1#{fact('lsbdistcodename')}" to_version = "5.3.7-1#{fact('lsbdistcodename')}" else from_version = '5.3.6' to_version = '5.3.7' end context 'install 5.3.6' do let(:pp) do <<-EOS class { '::puppet': server => true, server_foreman => false, server_reports => 'store', server_external_nodes => '', server_version => '#{from_version}', # only for install test - don't think to use this in production! # https://docs.puppet.com/puppetserver/latest/tuning_guide.html server_jvm_max_heap_size => '256m', server_jvm_min_heap_size => '256m', } EOS end it_behaves_like 'a idempotent resource' describe command('puppetserver --version') do its(:stdout) { is_expected.to match("puppetserver version: 5.3.6\n") } end describe service('puppetserver') do it { is_expected.to be_enabled } it { is_expected.to be_running } end describe port('8140') do it { is_expected.to be_listening } end end context 'upgrade to 5.3.7' do let(:pp) do <<-EOS class { '::puppet': server => true, server_foreman => false, server_reports => 'store', server_external_nodes => '', server_version => '#{to_version}', # only for install test - don't think to use this in production! # https://docs.puppet.com/puppetserver/latest/tuning_guide.html server_jvm_max_heap_size => '256m', server_jvm_min_heap_size => '256m', } EOS end it_behaves_like 'a idempotent resource' describe command('puppetserver --version') do its(:stdout) { is_expected.to match("puppetserver version: 5.3.7\n") } end describe service('puppetserver') do it { is_expected.to be_enabled } it { is_expected.to be_running } end describe port('8140') do it { is_expected.to be_listening } end end end diff --git a/spec/acceptance/puppetserver_upgrade_6_7_0_to_6_7_2_spec.rb b/spec/acceptance/puppetserver_upgrade_6_7_0_to_6_7_2_spec.rb index 8a046f5..a5ba248 100644 --- a/spec/acceptance/puppetserver_upgrade_6_7_0_to_6_7_2_spec.rb +++ b/spec/acceptance/puppetserver_upgrade_6_7_0_to_6_7_2_spec.rb @@ -1,90 +1,90 @@ require 'spec_helper_acceptance' -describe 'Scenario: 6.7.0 to 6.7.2 upgrade:', if: ENV['BEAKER_PUPPET_COLLECTION'] == 'puppet6' do +describe 'Scenario: 6.7.0 to 6.7.2 upgrade:', if: ENV['BEAKER_PUPPET_COLLECTION'] == 'puppet6', unless: unsupported_puppetserver do before(:context) do if check_for_package(default, 'puppetserver') on default, puppet('resource package puppetserver ensure=purged') on default, 'rm -rf /etc/sysconfig/puppetserver /etc/puppetlabs/puppetserver' on default, 'rm -rf /etc/puppetlabs/puppet/ssl' end # puppetserver won't start with low memory memoryfree_mb = fact('memoryfree_mb').to_i raise 'At least 256MB free memory required' if memoryfree_mb < 256 end case fact('osfamily') when 'Debian' from_version = "6.7.0-1#{fact('lsbdistcodename')}" to_version = "6.7.2-1#{fact('lsbdistcodename')}" else from_version = '6.7.0' to_version = '6.7.2' end context 'install 6.7.0' do let(:pp) do <<-EOS class { '::puppet': server => true, server_foreman => false, server_reports => 'store', server_external_nodes => '', server_version => '#{from_version}', # only for install test - don't think to use this in production! # https://docs.puppet.com/puppetserver/latest/tuning_guide.html server_jvm_max_heap_size => '256m', server_jvm_min_heap_size => '256m', } EOS end it_behaves_like 'a idempotent resource' describe command('puppetserver --version') do its(:stdout) { is_expected.to match("puppetserver version: 6.7.0\n") } end describe service('puppetserver') do it { is_expected.to be_enabled } it { is_expected.to be_running } end describe port('8140') do it { is_expected.to be_listening } end end context 'upgrade to 6.7.2' do let(:pp) do <<-EOS class { '::puppet': server => true, server_foreman => false, server_reports => 'store', server_external_nodes => '', server_version => '#{to_version}', # only for install test - don't think to use this in production! # https://docs.puppet.com/puppetserver/latest/tuning_guide.html server_jvm_max_heap_size => '256m', server_jvm_min_heap_size => '256m', } EOS end it_behaves_like 'a idempotent resource' describe command('puppetserver --version') do its(:stdout) { is_expected.to match("puppetserver version: 6.7.2\n") } end describe service('puppetserver') do it { is_expected.to be_enabled } it { is_expected.to be_running } end describe port('8140') do it { is_expected.to be_listening } end end end diff --git a/spec/setup_acceptance_node.pp b/spec/setup_acceptance_node.pp index d09056f..82239c5 100644 --- a/spec/setup_acceptance_node.pp +++ b/spec/setup_acceptance_node.pp @@ -1,5 +1,9 @@ -if $facts['os']['name'] == 'Ubuntu' { - package { 'cron': - ensure => installed, - } +$packages = $facts['os']['name'] ? { + 'Fedora' => ['cronie'], + 'Ubuntu' => ['cron'], + default => [], +} + +package { $packages: + ensure => installed, } diff --git a/spec/support/acceptance/puppetserver.rb b/spec/support/acceptance/puppetserver.rb new file mode 100644 index 0000000..172da6f --- /dev/null +++ b/spec/support/acceptance/puppetserver.rb @@ -0,0 +1,3 @@ +def unsupported_puppetserver + host_inventory['facter']['os']['name'] == 'Fedora' +end