diff --git a/.fixtures.yml b/.fixtures.yml index 214e11c01..10195f2d0 100644 --- a/.fixtures.yml +++ b/.fixtures.yml @@ -3,7 +3,7 @@ fixtures: stdlib: 'https://github.com/puppetlabs/puppetlabs-stdlib' apt: 'https://github.com/puppetlabs/puppetlabs-apt' archive: 'https://github.com/voxpupuli/puppet-archive' - erlang: 'https://github.com/garethr/garethr-erlang' + erlang: 'https://github.com/voxpupuli/puppet-erlang' systemd: 'https://github.com/camptocamp/puppet-systemd' yumrepo_core: repo: 'https://github.com/puppetlabs/puppetlabs-yumrepo_core' diff --git a/data/common.yaml b/data/common.yaml index ce9887fc3..14bdd8ac7 100644 --- a/data/common.yaml +++ b/data/common.yaml @@ -29,7 +29,7 @@ rabbitmq::package_gpg_key: ~ rabbitmq::package_name: 'rabbitmq' rabbitmq::package_source: ~ rabbitmq::package_provider: ~ -rabbitmq::repos_ensure: false +rabbitmq::repos_ensure: true rabbitmq::manage_python: true rabbitmq::python_package: 'python' rabbitmq::rabbitmq_user: 'rabbitmq' diff --git a/manifests/init.pp b/manifests/init.pp index 72f08f7d0..851491275 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -202,7 +202,7 @@ # Name of the package required by rabbitmqadmin. # @param repos_ensure # Ensure that a repo with the official (and newer) RabbitMQ package is configured, along with its signing key. -# Defaults to false (use system packages). This does not ensure that soft dependencies (like EPEL on RHEL systems) are present. +# Defaults to true (use RabbitMQ repos). This does not ensure that soft dependencies (like EPEL on RHEL systems) are present. # It also does not solve the erlang dependency. See https://www.rabbitmq.com/which-erlang.html for a good breakdown of the # different ways of handling the erlang deps. See also https://github.com/voxpupuli/puppet-rabbitmq/issues/788 # @param service_ensure @@ -329,7 +329,7 @@ Variant[String, Array] $package_name = 'rabbitmq', Optional[String] $package_source = undef, Optional[String] $package_provider = undef, - Boolean $repos_ensure = false, + Boolean $repos_ensure = true, Boolean $manage_python = true, String $python_package = 'python', String $rabbitmq_user = 'rabbitmq', diff --git a/spec/acceptance/class_spec.rb b/spec/acceptance/class_spec.rb index 80e352a7e..5daef90ce 100644 --- a/spec/acceptance/class_spec.rb +++ b/spec/acceptance/class_spec.rb @@ -19,11 +19,13 @@ context 'default class inclusion' do let(:pp) do <<-EOS - class { 'rabbitmq': } - if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true} + class { 'erlang': } Class['erlang'] -> Class['rabbitmq'] - } + if $facts['os']['family'] == 'RedHat' { + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] + } + class { 'rabbitmq': } EOS end @@ -55,13 +57,13 @@ class { 'erlang': epel_enable => true} context 'disable and stop service' do let(:pp) do <<-EOS - class { 'rabbitmq': - service_ensure => 'stopped', - } + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true} - Class['erlang'] -> Class['rabbitmq'] + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] } + class { 'rabbitmq': } EOS end @@ -76,22 +78,26 @@ class { 'erlang': epel_enable => true} context 'service is unmanaged' do it 'runs successfully' do pp_pre = <<-EOS - class { 'rabbitmq': } + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true} - Class['erlang'] -> Class['rabbitmq'] + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] } + class { 'rabbitmq': } EOS pp = <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] + if $facts['os']['family'] == 'RedHat' { + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] + } class { 'rabbitmq': service_manage => false, service_ensure => 'stopped', } - if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true} - Class['erlang'] -> Class['rabbitmq'] - } EOS apply_manifest(pp_pre, catch_failures: true) @@ -107,6 +113,12 @@ class { 'erlang': epel_enable => true} context 'binding on all interfaces' do let(:pp) do <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] + if $facts['os']['family'] == 'RedHat' { + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] + } class { 'rabbitmq': service_manage => true, port => 5672, @@ -137,6 +149,12 @@ class { 'rabbitmq': context 'binding to localhost only' do let(:pp) do <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] + if $facts['os']['family'] == 'RedHat' { + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] + } class { 'rabbitmq': service_manage => true, port => 5672, @@ -168,6 +186,12 @@ class { 'rabbitmq': context 'ssl enabled' do let(:pp) do <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] + if $facts['os']['family'] == 'RedHat' { + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] + } class { 'rabbitmq': service_manage => true, admin_enable => true, @@ -197,6 +221,12 @@ class { 'rabbitmq': context 'different management_ip_address and node_ip_address' do let(:pp) do <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] + if $facts['os']['family'] == 'RedHat' { + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] + } class { 'rabbitmq': service_manage => true, port => 5672, diff --git a/spec/acceptance/clustering_spec.rb b/spec/acceptance/clustering_spec.rb index 204eef052..9f284d742 100644 --- a/spec/acceptance/clustering_spec.rb +++ b/spec/acceptance/clustering_spec.rb @@ -4,6 +4,12 @@ context 'rabbitmq::wipe_db_on_cookie_change => false' do it 'runs successfully' do pp = <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] + if $facts['os']['family'] == 'RedHat' { + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] + } class { 'rabbitmq': config_cluster => true, cluster_nodes => ['rabbit1', 'rabbit2'], @@ -11,10 +17,6 @@ class { 'rabbitmq': erlang_cookie => 'TESTCOOKIE', wipe_db_on_cookie_change => false, } - if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true} - Class['erlang'] -> Class['rabbitmq'] - } EOS apply_manifest(pp, expect_failures: true) @@ -27,6 +29,12 @@ class { 'erlang': epel_enable => true} context 'rabbitmq::wipe_db_on_cookie_change => true' do it 'runs successfully' do pp = <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] + if $facts['os']['family'] == 'RedHat' { + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] + } class { 'rabbitmq': config_cluster => true, cluster_nodes => ['rabbit1', 'rabbit2'], @@ -34,10 +42,6 @@ class { 'rabbitmq': erlang_cookie => 'TESTCOOKIE', wipe_db_on_cookie_change => true, } - if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true} - Class['erlang'] -> Class['rabbitmq'] - } EOS apply_manifest(pp, catch_failures: true) diff --git a/spec/acceptance/delete_guest_user_spec.rb b/spec/acceptance/delete_guest_user_spec.rb index f8a6bc0f4..c8648099f 100644 --- a/spec/acceptance/delete_guest_user_spec.rb +++ b/spec/acceptance/delete_guest_user_spec.rb @@ -4,14 +4,16 @@ context 'delete_guest_user' do it 'runs successfully' do pp = <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] + if $facts['os']['family'] == 'RedHat' { + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] + } class { 'rabbitmq': port => 5672, delete_guest_user => true, } - if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true} - Class['erlang'] -> Class['rabbitmq'] - } EOS apply_manifest(pp, catch_failures: true) diff --git a/spec/acceptance/parameter_spec.rb b/spec/acceptance/parameter_spec.rb index a2bcdd983..e9fdc1ce3 100644 --- a/spec/acceptance/parameter_spec.rb +++ b/spec/acceptance/parameter_spec.rb @@ -4,9 +4,11 @@ context 'create parameter resource' do it 'runs successfully' do pp = <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true } - Class['erlang'] -> Class['rabbitmq'] + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] } class { 'rabbitmq': service_manage => true, diff --git a/spec/acceptance/policy_spec.rb b/spec/acceptance/policy_spec.rb index 91161a40e..2b506a5de 100644 --- a/spec/acceptance/policy_spec.rb +++ b/spec/acceptance/policy_spec.rb @@ -4,9 +4,11 @@ context 'create policy resource' do it 'runs successfully' do pp = <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true } - Class['erlang'] -> Class['rabbitmq'] + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] } class { 'rabbitmq': service_manage => true, diff --git a/spec/acceptance/queue_spec.rb b/spec/acceptance/queue_spec.rb index a5ed1d109..c786d9e11 100644 --- a/spec/acceptance/queue_spec.rb +++ b/spec/acceptance/queue_spec.rb @@ -4,9 +4,11 @@ context 'create binding and queue resources when using default management port' do it 'runs successfully' do pp = <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true } - Class['erlang'] -> Class['rabbitmq'] + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] } class { 'rabbitmq': service_manage => true, @@ -80,9 +82,11 @@ class { 'rabbitmq': context 'create multiple bindings when same source / destination / vhost but different routing keys' do it 'runs successfully' do pp = <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true } - Class['erlang'] -> Class['rabbitmq'] + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] } class { 'rabbitmq': service_manage => true, @@ -170,9 +174,11 @@ class { 'rabbitmq': context 'create binding and queue resources when using a non-default management port' do it 'runs successfully' do pp = <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true } - Class['erlang'] -> Class['rabbitmq'] + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] } class { 'rabbitmq': service_manage => true, diff --git a/spec/acceptance/rabbitmqadmin_spec.rb b/spec/acceptance/rabbitmqadmin_spec.rb index 149e42374..e0f9acbf8 100644 --- a/spec/acceptance/rabbitmqadmin_spec.rb +++ b/spec/acceptance/rabbitmqadmin_spec.rb @@ -4,14 +4,16 @@ context 'downloads the cli tools' do it 'runs successfully' do pp = <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] + if $facts['os']['family'] == 'RedHat' { + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] + } class { 'rabbitmq': admin_enable => true, service_manage => true, } - if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true} - Class['erlang'] -> Class['rabbitmq'] - } EOS apply_manifest(pp, catch_failures: true) @@ -25,14 +27,16 @@ class { 'erlang': epel_enable => true} context 'does nothing if service is unmanaged' do it 'runs successfully' do pp = <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] + if $facts['os']['family'] == 'RedHat' { + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] + } class { 'rabbitmq': admin_enable => true, service_manage => false, } - if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true} - Class['erlang'] -> Class['rabbitmq'] - } EOS shell('rm -f /var/lib/rabbitmq/rabbitmqadmin') @@ -48,28 +52,32 @@ class { 'erlang': epel_enable => true} it 'runs successfully' do # make sure credential change takes effect before admin_enable pp_pre = <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] + if $facts['os']['family'] == 'RedHat' { + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] + } class { 'rabbitmq': service_manage => true, default_user => 'foobar', default_pass => 'bazblam', } - if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true} - Class['erlang'] -> Class['rabbitmq'] - } EOS pp = <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] + if $facts['os']['family'] == 'RedHat' { + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] + } class { 'rabbitmq': admin_enable => true, service_manage => true, default_user => 'foobar', default_pass => 'bazblam', } - if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true} - Class['erlang'] -> Class['rabbitmq'] - } EOS shell('rm -f /var/lib/rabbitmq/rabbitmqadmin') diff --git a/spec/acceptance/user_spec.rb b/spec/acceptance/user_spec.rb index beff492e0..a9767e8fc 100644 --- a/spec/acceptance/user_spec.rb +++ b/spec/acceptance/user_spec.rb @@ -4,9 +4,11 @@ context 'create user resource' do it 'runs successfully' do pp = <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true } - Class['erlang'] -> Class['rabbitmq'] + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] } class { 'rabbitmq': service_manage => true, diff --git a/spec/acceptance/vhost_spec.rb b/spec/acceptance/vhost_spec.rb index fc3722ae4..cf4c158c8 100644 --- a/spec/acceptance/vhost_spec.rb +++ b/spec/acceptance/vhost_spec.rb @@ -4,9 +4,11 @@ context 'create vhost resource' do it 'runs successfully' do pp = <<-EOS + class { 'erlang': } + Class['erlang'] -> Class['rabbitmq'] if $facts['os']['family'] == 'RedHat' { - class { 'erlang': epel_enable => true } - Class['erlang'] -> Class['rabbitmq'] + class { 'epel': } + Class['epel'] -> Class['rabbitmq'] } class { 'rabbitmq': service_manage => true, diff --git a/spec/classes/rabbitmq_spec.rb b/spec/classes/rabbitmq_spec.rb index 6bc1273a4..6976c854b 100644 --- a/spec/classes/rabbitmq_spec.rb +++ b/spec/classes/rabbitmq_spec.rb @@ -27,21 +27,6 @@ end context 'with default params' do - it { is_expected.not_to contain_class('rabbitmq::repo::apt') } - it { is_expected.not_to contain_apt__source('rabbitmq') } - it { is_expected.not_to contain_class('rabbitmq::repo::rhel') } - it { is_expected.not_to contain_yumrepo('rabbitmq') } - end - - context 'with service_restart => false' do - let(:params) { { service_restart: false } } - - it { is_expected.not_to contain_class('rabbitmq::config').that_notifies('Class[rabbitmq::service]') } - end - - context 'with repos_ensure => true' do - let(:params) { { repos_ensure: true } } - if facts[:os]['family'] == 'Debian' it 'includes rabbitmq::repo::apt' do is_expected.to contain_class('rabbitmq::repo::apt'). @@ -76,6 +61,21 @@ end end + context 'with service_restart => false' do + let(:params) { { service_restart: false } } + + it { is_expected.not_to contain_class('rabbitmq::config').that_notifies('Class[rabbitmq::service]') } + end + + context 'with repos_ensure => false' do + let(:params) { { repos_ensure: false } } + + it { is_expected.not_to contain_class('rabbitmq::repo::apt') } + it { is_expected.not_to contain_apt__source('rabbitmq') } + it { is_expected.not_to contain_class('rabbitmq::repo::rhel') } + it { is_expected.not_to contain_yumrepo('rabbitmq') } + end + context 'with no pin', if: facts[:os]['family'] == 'Debian' do let(:params) { { repos_ensure: true, package_apt_pin: '' } } diff --git a/spec/spec_helper_acceptance.rb b/spec/spec_helper_acceptance.rb index f1c067557..aea4b06a6 100644 --- a/spec/spec_helper_acceptance.rb +++ b/spec/spec_helper_acceptance.rb @@ -4,8 +4,13 @@ case fact_on(host, 'os.family') when 'Debian' install_module_from_forge_on(host, 'puppetlabs-apt', '>= 4.1.0 < 8.0.0') + on host, 'apt-get -y install git' + on host, 'git clone https://github.com/voxpupuli/puppet-erlang /etc/puppetlabs/code/environments/production/modules/erlang' when 'RedHat' - install_module_from_forge_on(host, 'garethr-erlang', '>= 0.3.0 < 1.0.0') + install_module_from_forge_on(host, 'puppet-epel', '>= 3.0.0 < 4.0.0') + on host, 'yum -y install git' + on host, 'git clone https://github.com/voxpupuli/puppet-erlang /etc/puppetlabs/code/environments/production/modules/erlang' + # install_module_from_forge_on(host, 'garethr-erlang', '>= 0.3.0 < 1.0.0') if fact_on(host, 'os.selinux.enabled') # Make sure selinux is disabled so the tests work. on host, puppet('resource', 'exec', 'setenforce 0', 'path=/bin:/sbin:/usr/bin:/usr/sbin', 'onlyif=which setenforce && getenforce | grep Enforcing')