From d582c952ca66aa33907eaf892a19894f2a1bfff6 Mon Sep 17 00:00:00 2001 From: Joshua Hoblitt Date: Thu, 2 Feb 2017 07:47:02 -0700 Subject: [PATCH 1/5] update gem set --- .travis.yml | 14 ++++++++------ Gemfile | 39 +++++++++++++-------------------------- Rakefile | 14 ++++++++++---- 3 files changed, 31 insertions(+), 36 deletions(-) diff --git a/.travis.yml b/.travis.yml index 81e9a95..868419f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,17 +1,19 @@ sudo: false language: ruby -bundler_args: --without beaker +bundler_args: --without release beaker rvm: - - 2.0 - - 2.1 - - 2.2 + - '2.0' + - '2.1' + - '2.2' env: - PUPPET_GEM_VERSION="~> 3.7" - - PUPPET_GEM_VERSION="~> 4.0" + - PUPPET_GEM_VERSION="~> 4.9" matrix: exclude: - - rvm: 2.2 + - rvm: '2.2' env: PUPPET_GEM_VERSION="~> 3.7" + - rvm: '2.0' + env: PUPPET_GEM_VERSION="~> 4.9" fast_finish: true notifications: email: false diff --git a/Gemfile b/Gemfile index 8576981..ee6fa0b 100644 --- a/Gemfile +++ b/Gemfile @@ -1,35 +1,22 @@ source 'https://rubygems.org' -if puppetversion = ENV['PUPPET_GEM_VERSION'] - gem 'puppet', puppetversion, :require => false -else - gem 'puppet', :require => false -end - -if facterversion = ENV['FACTER_GEM_VERSION'] - gem 'facter', facterversion, :require => false -else - gem 'facter', :require => false -end +gem 'metadata-json-lint', :require => false +gem 'puppet', ENV['PUPPET_GEM_VERSION'] || '~> 4.9', :require => false +gem 'puppetlabs_spec_helper', '~> 1.2', :require => false +gem 'puppet-lint', '~> 2.0', :require => false +gem 'puppet-syntax', :require => false +gem 'rake', :require => false +gem 'rspec-puppet', '~> 2.5.0', :require => false +gem 'travis', '~> 1.8', :require => false -group :development, :test do - gem 'rake', :require => false - # https://github.com/rspec/rspec-core/issues/1864 - gem 'rspec', '< 3.2.0', {"platforms"=>["ruby_18"]} - gem 'puppetlabs_spec_helper', :require => false - gem 'puppet-lint', '>= 1.1.0', :require => false - gem 'puppet-syntax', :require => false - gem 'rspec-puppet', '~> 2.1.0', :require => false - gem 'metadata-json-lint', :require => false +group :release do + gem 'puppet-blacksmith', :require => false end group :beaker do - gem 'serverspec', :require => false - gem 'beaker', '<= 2.26.0', :require => false - gem 'beaker-rspec', :require => false - gem 'pry', :require => false - gem 'travis-lint', :require => false - gem 'puppet-blacksmith', :require => false + gem 'beaker-puppet_install_helper', :require => false + gem 'beaker-rspec', '~> 6.0.0', :require => false + gem 'serverspec', :require => false end # vim:ft=ruby diff --git a/Rakefile b/Rakefile index eb6ac09..bbeb353 100644 --- a/Rakefile +++ b/Rakefile @@ -1,6 +1,4 @@ require 'puppetlabs_spec_helper/rake_tasks' -require 'puppet-syntax/tasks/puppet-syntax' -require 'puppet-lint/tasks/puppet-lint' begin require 'puppet_blacksmith/rake_tasks' @@ -17,8 +15,16 @@ PuppetLint::RakeTask.new :lint do |config| config.fail_on_warnings = true end -task :travis_lint do - sh "travis-lint" +namespace :travis do + desc 'Syntax check travis.yml' + task :lint do + sh "travis lint --exit-code --skip-completion-check" do |ok, res| + unless ok + # exit without verbose rake error message + exit res.exitstatus + end + end + end end task :default => [ From 84334e87d2524f3c90eeeb23de07cf35fb770d2f Mon Sep 17 00:00:00 2001 From: Joshua Hoblitt Date: Thu, 2 Feb 2017 07:55:37 -0700 Subject: [PATCH 2/5] remove vagrant based beaker nodesets --- spec/acceptance/nodesets/centos-5.11.yml | 9 --------- spec/acceptance/nodesets/centos-6.6.yml | 9 --------- spec/acceptance/nodesets/centos-7.0.yml | 9 --------- spec/acceptance/nodesets/debian-7.8.yml | 9 --------- spec/acceptance/nodesets/fedora-21.yml | 9 --------- spec/acceptance/nodesets/ubuntu-12.04.yml | 9 --------- spec/acceptance/nodesets/ubuntu-14.04.yml | 9 --------- 7 files changed, 63 deletions(-) delete mode 100644 spec/acceptance/nodesets/centos-5.11.yml delete mode 100644 spec/acceptance/nodesets/centos-6.6.yml delete mode 100644 spec/acceptance/nodesets/centos-7.0.yml delete mode 100644 spec/acceptance/nodesets/debian-7.8.yml delete mode 100644 spec/acceptance/nodesets/fedora-21.yml delete mode 100644 spec/acceptance/nodesets/ubuntu-12.04.yml delete mode 100644 spec/acceptance/nodesets/ubuntu-14.04.yml diff --git a/spec/acceptance/nodesets/centos-5.11.yml b/spec/acceptance/nodesets/centos-5.11.yml deleted file mode 100644 index 76882ce..0000000 --- a/spec/acceptance/nodesets/centos-5.11.yml +++ /dev/null @@ -1,9 +0,0 @@ -HOSTS: - centos-5.11: - roles: - - master - platform: el-5-x86_64 - box: chef/centos-5.11 - hypervisor: vagrant -CONFIG: - type: foss diff --git a/spec/acceptance/nodesets/centos-6.6.yml b/spec/acceptance/nodesets/centos-6.6.yml deleted file mode 100644 index 373522d..0000000 --- a/spec/acceptance/nodesets/centos-6.6.yml +++ /dev/null @@ -1,9 +0,0 @@ -HOSTS: - centos-6.6: - roles: - - master - platform: el-6-x86_64 - box: chef/centos-6.6 - hypervisor: vagrant -CONFIG: - type: foss diff --git a/spec/acceptance/nodesets/centos-7.0.yml b/spec/acceptance/nodesets/centos-7.0.yml deleted file mode 100644 index d2c8e39..0000000 --- a/spec/acceptance/nodesets/centos-7.0.yml +++ /dev/null @@ -1,9 +0,0 @@ -HOSTS: - centos-7.0: - roles: - - master - platform: el-7-x86_64 - box: chef/centos-7.0 - hypervisor: vagrant -CONFIG: - type: foss diff --git a/spec/acceptance/nodesets/debian-7.8.yml b/spec/acceptance/nodesets/debian-7.8.yml deleted file mode 100644 index 652642c..0000000 --- a/spec/acceptance/nodesets/debian-7.8.yml +++ /dev/null @@ -1,9 +0,0 @@ -HOSTS: - debian-7.8: - roles: - - master - platform: debian-7-amd64 - box: chef/debian-7.8 - hypervisor: vagrant -CONFIG: - type: foss diff --git a/spec/acceptance/nodesets/fedora-21.yml b/spec/acceptance/nodesets/fedora-21.yml deleted file mode 100644 index 3f54b75..0000000 --- a/spec/acceptance/nodesets/fedora-21.yml +++ /dev/null @@ -1,9 +0,0 @@ -HOSTS: - fedora-21: - roles: - - master - platform: fedora-21-x86_64 - box: chef/fedora-21 - hypervisor: vagrant -CONFIG: - type: foss diff --git a/spec/acceptance/nodesets/ubuntu-12.04.yml b/spec/acceptance/nodesets/ubuntu-12.04.yml deleted file mode 100644 index f1bcc4d..0000000 --- a/spec/acceptance/nodesets/ubuntu-12.04.yml +++ /dev/null @@ -1,9 +0,0 @@ -HOSTS: - ubuntu-12.04: - roles: - - master - platform: ubuntu-12.04-amd64 - box: chef/ubuntu-12.04 - hypervisor: vagrant -CONFIG: - type: foss diff --git a/spec/acceptance/nodesets/ubuntu-14.04.yml b/spec/acceptance/nodesets/ubuntu-14.04.yml deleted file mode 100644 index 20bdd27..0000000 --- a/spec/acceptance/nodesets/ubuntu-14.04.yml +++ /dev/null @@ -1,9 +0,0 @@ -HOSTS: - ubuntu-14.04: - roles: - - master - platform: ubuntu-14.04-amd64 - box: chef/ubuntu-14.04 - hypervisor: vagrant -CONFIG: - type: foss From b3b27256688931673c3e29889d86bebeaa0e304d Mon Sep 17 00:00:00 2001 From: Joshua Hoblitt Date: Thu, 2 Feb 2017 07:55:58 -0700 Subject: [PATCH 3/5] add dockeer based beaker nodesets --- spec/acceptance/nodesets/centos-6-docker.yml | 14 +++++++++ .../nodesets/centos-7-docker.Dockerfile | 29 +++++++++++++++++++ spec/acceptance/nodesets/centos-7-docker.yml | 11 +++++++ .../nodesets/ubuntu-14.04-docker.yml | 13 +++++++++ 4 files changed, 67 insertions(+) create mode 100644 spec/acceptance/nodesets/centos-6-docker.yml create mode 100644 spec/acceptance/nodesets/centos-7-docker.Dockerfile create mode 100644 spec/acceptance/nodesets/centos-7-docker.yml create mode 100644 spec/acceptance/nodesets/ubuntu-14.04-docker.yml diff --git a/spec/acceptance/nodesets/centos-6-docker.yml b/spec/acceptance/nodesets/centos-6-docker.yml new file mode 100644 index 0000000..77306a6 --- /dev/null +++ b/spec/acceptance/nodesets/centos-6-docker.yml @@ -0,0 +1,14 @@ +HOSTS: + centos-6-x64: + platform: el-6-x86_64 + hypervisor : docker + image: centos:6 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'yum install -y crontabs tar wget' + default_apply_opts: + disable_warnings: deprecations +CONFIG: + type: foss + log_level: debug diff --git a/spec/acceptance/nodesets/centos-7-docker.Dockerfile b/spec/acceptance/nodesets/centos-7-docker.Dockerfile new file mode 100644 index 0000000..5c2ed31 --- /dev/null +++ b/spec/acceptance/nodesets/centos-7-docker.Dockerfile @@ -0,0 +1,29 @@ +FROM centos:7 +ENV container docker + +# beaker default behavior +RUN yum clean all +RUN yum install -y sudo openssh-server openssh-clients curl ntpdate +RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key +RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key +RUN mkdir -p /var/run/sshd +RUN echo root:root | chpasswd +RUN sed -ri 's/^#?PermitRootLogin .*/PermitRootLogin yes/' /etc/ssh/sshd_config +RUN sed -ri 's/^#?PasswordAuthentication .*/PasswordAuthentication yes/' /etc/ssh/sshd_config +RUN yum install -y crontabs tar wget +EXPOSE 22 + +# based on https://github.com/slafs/dockerfiles/blob/master/centos7-systemd/Dockerfile +RUN yum -y swap -- remove fakesystemd -- install systemd systemd-libs +RUN systemctl mask dev-mqueue.mount dev-hugepages.mount \ + systemd-remount-fs.service sys-kernel-config.mount \ + sys-kernel-debug.mount sys-fs-fuse-connections.mount \ + display-manager.service systemd-logind.service +RUN systemctl disable graphical.target; systemctl enable multi-user.target +RUN systemctl enable sshd.service +VOLUME ["/sys/fs/cgroup"] + +# provides /usr/sbin/service required by the service redhat provider +RUN yum install -y initscripts + +CMD ["/usr/lib/systemd/systemd"] diff --git a/spec/acceptance/nodesets/centos-7-docker.yml b/spec/acceptance/nodesets/centos-7-docker.yml new file mode 100644 index 0000000..1223f52 --- /dev/null +++ b/spec/acceptance/nodesets/centos-7-docker.yml @@ -0,0 +1,11 @@ +HOSTS: + centos-7-x64: + platform: el-7-x86_64 + hypervisor : docker + docker_preserve_image: true + dockerfile: spec/acceptance/nodesets/centos-7-docker.Dockerfile + default_apply_opts: + disable_warnings: deprecations +CONFIG: + type: foss + log_level: debug diff --git a/spec/acceptance/nodesets/ubuntu-14.04-docker.yml b/spec/acceptance/nodesets/ubuntu-14.04-docker.yml new file mode 100644 index 0000000..691c1b1 --- /dev/null +++ b/spec/acceptance/nodesets/ubuntu-14.04-docker.yml @@ -0,0 +1,13 @@ +HOSTS: + ubuntu-14.04-x64: + platform: ubuntu-14.04-amd64 + hypervisor : docker + #image: ubuntu:14.04 + image: electrical/ubuntu:14.04 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + default_apply_opts: + disable_warnings: deprecations +CONFIG: + type: foss + log_level: debug From 408f69573709790f2f9762bdbfc5643a5c087e99 Mon Sep 17 00:00:00 2001 From: Joshua Hoblitt Date: Thu, 2 Feb 2017 07:59:40 -0700 Subject: [PATCH 4/5] update beaker plumbing --- spec/acceptance/udev_spec.rb | 14 +++------ spec/spec_helper_acceptance.rb | 57 +++++++++++++++++++++++----------- 2 files changed, 43 insertions(+), 28 deletions(-) diff --git a/spec/acceptance/udev_spec.rb b/spec/acceptance/udev_spec.rb index e544cff..f822791 100644 --- a/spec/acceptance/udev_spec.rb +++ b/spec/acceptance/udev_spec.rb @@ -1,14 +1,10 @@ require 'spec_helper_acceptance' describe 'udev class' do - maj = fact_on 'master', 'operatingsystemmajrelease' - - package_name = nil - case maj.to_i - when 5, 6 - package_name = 'udev' - when 7 + if $systemd package_name = 'systemd' + else + package_name = 'udev' end describe 'running puppet code' do @@ -25,9 +21,7 @@ class { 'udev': udev_log => 'debug' } } EOS - # Run it twice and test for idempotency - expect(apply_manifest(pp, :catch_failures => true).stderr).to eq("") - expect(apply_manifest(pp, :catch_changes => true).stderr).to eq("") + apply2(pp) end end diff --git a/spec/spec_helper_acceptance.rb b/spec/spec_helper_acceptance.rb index dfc8c2a..59da72b 100644 --- a/spec/spec_helper_acceptance.rb +++ b/spec/spec_helper_acceptance.rb @@ -1,36 +1,57 @@ require 'beaker-rspec/spec_helper' require 'beaker-rspec/helpers/serverspec' +require 'beaker/puppet_install_helper' -unless ENV['RS_PROVISION'] == 'no' or ENV['BEAKER_provision'] == 'no' - # This will install the latest available package on el and deb based - # systems fail on windows and osx, and install via gem on other *nixes - foss_opts = {:default_action => 'gem_install'} - - if default.is_pe?; then - install_pe; - else - install_puppet(foss_opts); - end - - hosts.each do |host| - on hosts, "mkdir -p #{host['distmoduledir']}" - end +# Install Puppet +unless ENV['RS_PROVISION'] == 'no' + ENV['PUPPET_INSTALL_TYPE'] ||= 'agent' + # puppet_install_helper does not understand pessimistic version constraints + # so we are ignoring PUPPET_VERSION. Use PUPPET_INSTALL_VERSION instead. + ENV.delete 'PUPPET_VERSION' + run_puppet_install_helper end RSpec.configure do |c| - # Project root proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..')) - # Readable test descriptions c.formatter = :documentation - # Configure all nodes in nodeset c.before :suite do # Install module and dependencies - puppet_module_install(:source => proj_root, :module_name => 'udev') hosts.each do |host| + copy_module_to(host, :source => proj_root, :module_name => 'udev') + on host, puppet('module', 'install', 'puppetlabs-stdlib'), {:acceptable_exit_codes => [0, 1]} on host, puppet('module', 'install', 'stahnma-epel'), {:acceptable_exit_codes => [0, 1]} end end end + +def apply(pp, options = {}) + if ENV.key?('PUPPET_DEBUG') + options[:debug] = true + end + + apply_manifest(pp, options) +end + +# Run it twice and test for idempotency +def apply2(pp) + apply(pp, :catch_failures => true) + apply(pp, :catch_changes => true) +end + +# probe stolen from: +# https://github.com/camptocamp/puppet-systemd/blob/master/lib/facter/systemd.rb#L26 +# +# See these issues for an explination of why this is nessicary rather than +# using fact() from beaker-facter in the DSL: +# +# https://tickets.puppetlabs.com/browse/BKR-1040 +# https://tickets.puppetlabs.com/browse/BKR-1041 +# +if shell('ps -p 1 -o comm=').stdout =~ /systemd/ + $systemd = true +else + $systemd = false +end From e22d9adc4beb9edc68b48adb98f710723aef38ee Mon Sep 17 00:00:00 2001 From: Joshua Hoblitt Date: Thu, 2 Feb 2017 08:10:54 -0700 Subject: [PATCH 5/5] add beaker:centos-7-docker to travis matrix --- .travis.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.travis.yml b/.travis.yml index 868419f..bdd70ce 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,6 +9,13 @@ env: - PUPPET_GEM_VERSION="~> 3.7" - PUPPET_GEM_VERSION="~> 4.9" matrix: + include: + - rvm: '2.2' + sudo: required + services: docker + env: BEAKER_set="centos-7-docker" + script: travis_retry bundle exec rake beaker + bundler_args: --without release exclude: - rvm: '2.2' env: PUPPET_GEM_VERSION="~> 3.7"