diff --git a/.travis.yml b/.travis.yml index 8e03da626..77932cb40 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,148 +1,179 @@ sudo: required -group: deprecated-2017Q4 services: -- docker + - docker cache: bundler: true directories: - - spec/fixtures/artifacts - - spec/fixtures/modules + - spec/fixtures/artifacts + - spec/fixtures/modules language: ruby script: travis_retry bundle exec rake $TASK + jobs: allow_failures: - - env: - - TASK=beaker:ubuntu-server-1404-x64:snapshot - - env: - - OSS_PACKAGE=true - - TASK=beaker:ubuntu-server-1404-x64:snapshot - - env: - - TASK=beaker:ubuntu-server-1604-x64:snapshot - - env: - - OSS_PACKAGE=true - - TASK=beaker:ubuntu-server-1604-x64:snapshot - - env: - - TASK=beaker:centos-6-x64:snapshot - - env: - - OSS_PACKAGE=true - - TASK=beaker:centos-6-x64:snapshot - - env: - - TASK=beaker:centos-7-x64:snapshot - - env: - - OSS_PACKAGE=true - - TASK=beaker:centos-7-x64:snapshot - - env: - - TASK=beaker:debian-8-x64:snapshot - - env: - - OSS_PACKAGE=true - - TASK=beaker:debian-8-x64:snapshot - - env: - - TASK=beaker:debian-9-x64:snapshot - - env: - - OSS_PACKAGE=true - - TASK=beaker:debian-9-x64:snapshot + - env: + - TASK=beaker:ubuntu-server-1404-x64:snapshot + - env: + - OSS_PACKAGE=true + - TASK=beaker:ubuntu-server-1404-x64:snapshot + - env: + - TASK=beaker:ubuntu-server-1604-x64:snapshot + - env: + - OSS_PACKAGE=true + - TASK=beaker:ubuntu-server-1604-x64:snapshot + - env: + - TASK=beaker:centos-6-x64:snapshot + - env: + - OSS_PACKAGE=true + - TASK=beaker:centos-6-x64:snapshot + - env: + - TASK=beaker:centos-7-x64:snapshot + - env: + - OSS_PACKAGE=true + - TASK=beaker:centos-7-x64:snapshot + - env: + - TASK=beaker:debian-8-x64:snapshot + - env: + - OSS_PACKAGE=true + - TASK=beaker:debian-8-x64:snapshot + - env: + - TASK=beaker:debian-9-x64:snapshot + - env: + - OSS_PACKAGE=true + - TASK=beaker:debian-9-x64:snapshot include: - - stage: intake - env: - - TASK=intake - - PUPPET_VERSION='~> 4.10.0' - - env: - - TASK=intake - - env: - - TASK=intake - - PUPPET_VERSION='~> 5.0' - - env: - - TASK=intake - - PUPPET_VERSION='~> 6.0' - - stage: acceptance - env: - - TASK=beaker:centos-6-x64:acceptance - - env: - - TASK=beaker:centos-6-x64:acceptance[5.6.9] - - env: - - TASK=beaker:centos-6-x64:acceptance[2.4.6] - - env: - - TASK=beaker:centos-7-x64:acceptance - - env: - - TASK=beaker:centos-7-x64:acceptance[5.6.9] - - env: - - TASK=beaker:centos-7-x64:acceptance[2.4.6] - - env: - - TASK=beaker:amazonlinux-1-x64:acceptance - - env: - - TASK=beaker:amazonlinux-1-x64:acceptance[5.6.9] - - env: - - TASK=beaker:amazonlinux-1-x64:acceptance[2.4.6] - - env: - - TASK=beaker:oracle-6-x64:acceptance - - env: - - TASK=beaker:oracle-6-x64:acceptance[5.6.9] - - env: - - TASK=beaker:oracle-6-x64:acceptance[2.4.6] - - env: - - TASK=beaker:oracle-7-x64:acceptance - - env: - - TASK=beaker:oracle-7-x64:acceptance[5.6.9] - - env: - - TASK=beaker:oracle-7-x64:acceptance[2.4.6] - - env: - - TASK=beaker:debian-8-x64:acceptance - - env: - - TASK=beaker:debian-8-x64:acceptance[5.6.9] - - env: - - TASK=beaker:debian-8-x64:acceptance[2.4.6] - - env: - - TASK=beaker:debian-9-x64:acceptance - - env: - - TASK=beaker:debian-9-x64:acceptance[5.6.9] - - env: - - TASK=beaker:debian-9-x64:acceptance[2.4.6] - - env: - - TASK=beaker:ubuntu-server-1404-x64:acceptance - - env: - - TASK=beaker:ubuntu-server-1404-x64:acceptance[5.6.9] - - env: - - TASK=beaker:ubuntu-server-1404-x64:acceptance[2.4.6] - - env: - - TASK=beaker:ubuntu-server-1604-x64:acceptance - - env: - - TASK=beaker:ubuntu-server-1604-x64:acceptance[5.6.9] - - env: - - TASK=beaker:ubuntu-server-1604-x64:acceptance[2.4.6] - - stage: snapshots - env: - - TASK=beaker:ubuntu-server-1404-x64:snapshot - env: - - OSS_PACKAGE=true - - TASK=beaker:ubuntu-server-1404-x64:snapshot - - env: - - TASK=beaker:ubuntu-server-1604-x64:snapshot - - env: - - OSS_PACKAGE=true - - TASK=beaker:ubuntu-server-1604-x64:snapshot - - env: - - TASK=beaker:centos-6-x64:snapshot - - env: - - OSS_PACKAGE=true - - TASK=beaker:centos-6-x64:snapshot - - env: - - TASK=beaker:centos-7-x64:snapshot - - env: - - OSS_PACKAGE=true - - TASK=beaker:centos-7-x64:snapshot - - env: - - TASK=beaker:debian-8-x64:snapshot - - env: - - OSS_PACKAGE=true - - TASK=beaker:debian-8-x64:snapshot - - env: - - TASK=beaker:debian-9-x64:snapshot - - env: - - OSS_PACKAGE=true - - TASK=beaker:debian-9-x64:snapshot + # Intake jobs + - stage: intake + env: + - TASK=intake + - env: + - TASK=intake + - PUPPET_VERSION='~> 5.0' + + # Acceptance test jobs + - stage: acceptance + env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:centos-6-x64:acceptance + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:centos-6-x64:acceptance[5.6.9] + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:centos-7-x64:acceptance + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:centos-7-x64:acceptance[5.6.9] + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:centos-8-x64:acceptance + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:centos-8-x64:acceptance[5.6.9] + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:amazonlinux-1-x64:acceptance + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:amazonlinux-1-x64:acceptance[5.6.9] + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:oracle-6-x64:acceptance + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:oracle-6-x64:acceptance[5.6.9] + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:oracle-7-x64:acceptance + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:oracle-7-x64:acceptance[5.6.9] + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:debian-8-x64:acceptance + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:debian-8-x64:acceptance[5.6.9] + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:debian-9-x64:acceptance + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:debian-9-x64:acceptance[5.6.9] + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:debian-10-x64:acceptance + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:debian-10-x64:acceptance[5.6.9] + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:ubuntu-server-1404-x64:acceptance + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:ubuntu-server-1404-x64:acceptance[5.6.9] + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:ubuntu-server-1604-x64:acceptance + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:ubuntu-server-1604-x64:acceptance[5.6.9] + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:ubuntu-server-1804-x64:acceptance + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:ubuntu-server-1804-x64:acceptance[5.6.9] + + # Snapshot tests + - stage: snapshots + env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:ubuntu-server-1404-x64:snapshot + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - OSS_PACKAGE=true + - TASK=beaker:ubuntu-server-1404-x64:snapshot + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:ubuntu-server-1604-x64:snapshot + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - OSS_PACKAGE=true + - TASK=beaker:ubuntu-server-1604-x64:snapshot + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:centos-6-x64:snapshot + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - OSS_PACKAGE=true + - TASK=beaker:centos-6-x64:snapshot + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:centos-7-x64:snapshot + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - OSS_PACKAGE=true + - TASK=beaker:centos-7-x64:snapshot + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:debian-8-x64:snapshot + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - OSS_PACKAGE=true + - TASK=beaker:debian-8-x64:snapshot + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - TASK=beaker:debian-9-x64:snapshot + - env: + - BEAKER_PUPPET_COLLECTION=puppet6 + - OSS_PACKAGE=true + - TASK=beaker:debian-9-x64:snapshot + notifications: slack: secure: T1FO+ttrJNH+bXmNR6349qcttG68Qr1xmMqVVRnUr7+129GQO5174Z8MFC8ck0qOCZGHO7GCNO5seNFflrjF/5EKbdkmVnqhf9gVa9kN7I4psMzxJX9bp29xJA6m3wA4VqCosDKVFSfilDZujAblWT+KDHZLjP8sEWEnHPvCjf69S2XDQEWUoxZan5V9IJQas4XR+hMdIZTA3ChVrEyqRfeehAZImbAr/LH8zChZaTdHZQY7p2rN3+qVNi3+GISV9fNPpOCynnX/ACbdUaRt3+1etxGGaQMPzGmTejN3VlMw4OZRXImb6HQ2rXE+fNCASXiKiwylxTbriQsS0dFv4skxH03YlYM8pqaBpeIOwzf4n45tTzdAQZJMC5cOb+RvwS7qkAwuaVlVxiiA+MWRG/UcFpWS+iNn4KEKxbpBjYP8X1JIP9DlHLME7DNMM2pePv9X6ZjY6eDhVM1gbKi77dXOo5y2Sp0ru8QkLpIKFVXS01O+x7oDHHv2Osvih0jNMgM66Byso3KJYJ6EJ0D2/3Q9ZNpVM4CMuIY5pBQfXf691zqkBHI6JUnU6VMw97cH0k6Gq0ypZoW5trXdnRC5aEg4jKKid84zKmAeTpj/iMuagyb/a5msJstIVboynRtfDHR0J8WWhfSU2wzqKAb6L66iyRe62Fe8OGzLhk2+KNU= + env: global: - secure: WFFcjwBIRBG2zyk4c8Ugq0tgI1YaH/+s5eV9h3i2kR1ggobT+nrNqn3hCOkmPtwGYPBNjVj6yp+7qy//MRe8AS2eo1XuMD/P4MYcDGmZiMnqPhz1UsLltGTYlh3y6jl9DJvNujFBQMnAu/ey2g/iWrcHdtl2qninvN3wOrXi2Bs= diff --git a/Gemfile b/Gemfile index fc7ad6178..dc187e04c 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,7 @@ source ENV['GEM_SOURCE'] || 'https://rubygems.org' group :test do - gem 'puppet', (ENV['PUPPET_VERSION'] || '~> 4.10'), :require => false + gem 'puppet', (ENV['PUPPET_VERSION'] || '~> 6.0'), :require => false gem 'metadata-json-lint' gem 'specinfra', '~> 2.60' @@ -42,13 +42,19 @@ end group :development do gem 'puppet-blacksmith' + gem 'irb' end group :system_tests do gem 'bcrypt' - gem 'beaker', '~> 3.7' + gem 'beaker', '>= 4.2.0' gem 'beaker-rspec', '~> 6.0' + gem 'beaker-docker' + gem 'beaker-hiera' + gem 'beaker-puppet' + gem 'beaker-puppet_install_helper' gem 'docker-api', '~> 1.0' gem 'infrataster' + gem 'simp-beaker-helpers' gem 'vault' end diff --git a/Rakefile b/Rakefile index 797ee0213..f453bd560 100644 --- a/Rakefile +++ b/Rakefile @@ -137,7 +137,7 @@ beaker_node_sets.each do |node| "beaker:#{node}:acceptance", [:version, :filter] => [:spec_prep] ) do |task, args| ENV['BEAKER_set'] = node - args.with_defaults(:version => '6.2.3', :filter => nil) + args.with_defaults(:version => '6.8.6', :filter => nil) task.pattern = 'spec/acceptance/tests/acceptance_spec.rb' task.rspec_opts = [] task.rspec_opts << '--format documentation' if ENV['CI'].nil? diff --git a/spec/acceptance/nodesets/centos-8-x64.yml b/spec/acceptance/nodesets/centos-8-x64.yml new file mode 100644 index 000000000..e2268242c --- /dev/null +++ b/spec/acceptance/nodesets/centos-8-x64.yml @@ -0,0 +1,19 @@ +HOSTS: + centos-8-x64: + roles: + - master + - database + - dashboard + platform: el-8-x86_64 + image: centos:8 + hypervisor: docker + docker_cmd: ["/sbin/init"] + docker_preserve_image: true + docker_image_commands: + - yum install -y wget which cronie iproute + - mkdir -p /etc/selinux/targeted/contexts/ + - echo '' > /etc/selinux/targeted/contexts/dbus_contexts + - rm /lib/systemd/system/systemd*udev* + - rm /lib/systemd/system/getty.target +CONFIG: + log_level: warn diff --git a/spec/acceptance/nodesets/debian-10-x64.yml b/spec/acceptance/nodesets/debian-10-x64.yml new file mode 100644 index 000000000..311ed4396 --- /dev/null +++ b/spec/acceptance/nodesets/debian-10-x64.yml @@ -0,0 +1,14 @@ +HOSTS: + debian-10: + roles: + - agent + platform: debian-10-amd64 + image: debian:10 + hypervisor: docker + docker_cmd: ["/bin/systemd"] + docker_preserve_image: true + docker_image_commands: + - apt-get install -yq apt-transport-https openjdk-8-jre-headless wget net-tools gpg ruby-augeas +CONFIG: + log_level: warn + diff --git a/spec/acceptance/nodesets/ubuntu-server-1804-x64.yml b/spec/acceptance/nodesets/ubuntu-server-1804-x64.yml new file mode 100644 index 000000000..3742654d3 --- /dev/null +++ b/spec/acceptance/nodesets/ubuntu-server-1804-x64.yml @@ -0,0 +1,16 @@ +HOSTS: + ubuntu-18-04: + roles: + - master + - database + - dashboard + platform: ubuntu-18.04-amd64 + image: ubuntu:18.04 + hypervisor: docker + docker_cmd: ["/sbin/init"] + docker_preserve_image: true + docker_image_commands: + - apt-get update + - apt-get install -yq libssl-dev puppet apt-transport-https +CONFIG: + log_level: warn diff --git a/spec/spec_helper_acceptance.rb b/spec/spec_helper_acceptance.rb index 63d60b6e1..fcca63e61 100644 --- a/spec/spec_helper_acceptance.rb +++ b/spec/spec_helper_acceptance.rb @@ -1,4 +1,13 @@ -require 'beaker-rspec' +require 'simp/beaker_helpers' +include Simp::BeakerHelpers + +require 'beaker-hiera' +# require 'beaker-puppet' +# require 'beaker-rspec' +require 'beaker-rspec/spec_helper' +require 'beaker-rspec/helpers/serverspec' +require 'beaker/puppet_install_helper' +# require 'beaker/module_install_helper' require 'securerandom' require 'thread' require 'infrataster/rspec' @@ -10,14 +19,18 @@ require_relative '../lib/puppet_x/elastic/deep_to_i' require_relative '../lib/puppet_x/elastic/deep_to_s' -def f - RSpec.configuration.fact -end +# def f +# RSpec.configuration.fact +# end + +run_puppet_install_helper('agent') unless ENV['BEAKER_provision'] == 'no' RSpec.configure do |c| # General-purpose spec-global variables c.add_setting :v, :default => {} + c.formatter = :documentation + unless ENV['snapshot_version'].nil? v[:snapshot_version] = ENV['snapshot_version'] v[:is_snapshot] = ENV['SNAPSHOT_TEST'] == 'true' @@ -147,47 +160,49 @@ class { 'elasticsearch': # Set the host to 'aio' in order to adopt the puppet-agent style of # installation, and configure paths/etc. host[:type] = 'aio' - configure_defaults_on host, 'aio' - - # Install Puppet - # - # We spawn a thread to print dots periodically while installing puppet to - # avoid inactivity timeouts in Travis. Don't judge me. - progress = Thread.new do - print 'Installing puppet..' - print '.' while sleep 5 - end - - case host.name - when /debian-9/ - # A few special cases need to be installed from gems (if the distro is - # very new and has no puppet repo package or has no upstream packages). - install_puppet_from_gem( - host, - version: Gem.loaded_specs['puppet'].version - ) - else - # Otherwise, just use the all-in-one agent package. - install_puppet_agent_on( - host, - puppet_agent_version: to_agent_version(Gem.loaded_specs['puppet'].version) - ) - end - # Quit the print thread and include some debugging. - progress.exit - puts "done. Installed version #{shell('puppet --version').output}" - - RSpec.configure do |c| - c.add_setting :fact, :default => JSON.parse(fact('', '-j')) - end - - if f['os']['family'] == 'Suse' + # configure_defaults_on host, 'aio' + + # # Install Puppet + # # + # # We spawn a thread to print dots periodically while installing puppet to + # # avoid inactivity timeouts in Travis. Don't judge me. + # progress = Thread.new do + # print 'Installing puppet..' + # print '.' while sleep 5 + # end + + # case host.name + # when /debian-9/ + # # A few special cases need to be installed from gems (if the distro is + # # very new and has no puppet repo package or has no upstream packages). + # install_puppet_from_gem( + # host, + # version: Gem.loaded_specs['puppet'].version + # ) + # else + # # Otherwise, just use the all-in-one agent package. + # install_puppet_agent_on( + # host, + # puppet_agent_version: to_agent_version(Gem.loaded_specs['puppet'].version) + # ) + # end + # # Quit the print thread and include some debugging. + # progress.exit + puts "Installed version #{shell('puppet --version').output}" + + # RSpec.configure do |c| + # c.add_setting :fact, :default => JSON.parse(fact('', '-j')) + # end + + # if f['os']['family'] == 'Suse' + if fact('os.family') == 'Suse' install_package host, '--force-resolution augeas-devel libxml2-devel ruby-devel' on host, 'gem install ruby-augeas --no-ri --no-rdoc' end - v[:ext] = case f['os']['family'] + # Set correct OS package extension + v[:ext] = case fact('os.family') when 'Debian' 'deb' else @@ -237,7 +252,7 @@ class { 'elasticsearch': 'Debian' => ['apt'], 'Suse' => ['zypprepo'], 'RedHat' => %w[concat yumrepo_core] - }[f['os']['family']] + }[fact('os.family')] modules += dist_module unless dist_module.nil? @@ -252,12 +267,12 @@ class { 'elasticsearch': on(host, 'mkdir -p etc/puppet/modules/another/files/') # Apt doesn't update package caches sometimes, ensure we're caught up. - shell 'apt-get update' if f['os']['family'] == 'Debian' + shell 'apt-get update' if fact('os.family') == 'Debian' end # Use the Java class once before the suite of tests unless shell('command -v java', :accept_all_exit_codes => true).exit_code.zero? - java = case f['os']['name'] + java = case fact('os.family') when 'OpenSuSE' 'package => "java-1_8_0-openjdk-headless",' else