diff --git a/provision.yaml b/provision.yaml index c8239aa..97923ce 100644 --- a/provision.yaml +++ b/provision.yaml @@ -1,22 +1,22 @@ --- default: - provisioner: vmpooler + provisioner: abs images: ['redhat-8-x86_64'] vagrant: provisioner: vagrant images: ['centos/7', 'generic/ubuntu1804'] travis_deb: provisioner: docker images: ['litmusimage/debian:9', 'litmusimage/debian:10'] travis_ub: provisioner: docker images: ['ubuntu:14.04', 'ubuntu:16.04', 'ubuntu:18.04'] travis_el6: provisioner: docker images: ['centos:6', 'oraclelinux:6', 'scientificlinux/sl:6'] travis_el7: provisioner: docker images: ['centos:7', 'oraclelinux:7', 'scientificlinux/sl:7'] release_checks: - provisioner: vmpooler + provisioner: abs images: ['redhat-5-x86_64', 'redhat-6-x86_64', 'redhat-7-x86_64', 'redhat-8-x86_64', 'centos-5-x86_64', 'centos-6-x86_64', 'centos-7-x86_64', 'centos-8-x86_64', 'oracle-5-x86_64', 'oracle-6-x86_64', 'oracle-7-x86_64', 'scientific-6-x86_64', 'scientific-7-x86_64', 'debian-8-x86_64', 'debian-9-x86_64', 'debian-10-x86_64', 'sles-11-x86_64', 'sles-12-x86_64', 'sles-15-x86_64', 'ubuntu-1404-x86_64', 'ubuntu-1604-x86_64', 'ubuntu-1804-x86_64' ] diff --git a/spec/spec_helper_acceptance.rb b/spec/spec_helper_acceptance.rb index e6a093a..4ac8d7e 100644 --- a/spec/spec_helper_acceptance.rb +++ b/spec/spec_helper_acceptance.rb @@ -1,84 +1,6 @@ # frozen_string_literal: true -require 'serverspec' require 'puppet_litmus' require 'spec_helper_acceptance_local' if File.file?(File.join(File.dirname(__FILE__), 'spec_helper_acceptance_local.rb')) -include PuppetLitmus -UNSUPPORTED_PLATFORMS = ['Solaris', 'AIX'].freeze - -if ENV['TARGET_HOST'].nil? || ENV['TARGET_HOST'] == 'localhost' - puts 'Running tests against this machine !' - if Gem.win_platform? - set :backend, :cmd - else - set :backend, :exec - end -else - # load inventory - inventory_hash = inventory_hash_from_inventory_file - node_config = config_from_node(inventory_hash, ENV['TARGET_HOST']) - - if target_in_group(inventory_hash, ENV['TARGET_HOST'], 'docker_nodes') - host = ENV['TARGET_HOST'] - set :backend, :docker - set :docker_container, host - elsif target_in_group(inventory_hash, ENV['TARGET_HOST'], 'ssh_nodes') - set :backend, :ssh - options = Net::SSH::Config.for(host) - options[:user] = node_config.dig('ssh', 'user') unless node_config.dig('ssh', 'user').nil? - options[:port] = node_config.dig('ssh', 'port') unless node_config.dig('ssh', 'port').nil? - options[:keys] = node_config.dig('ssh', 'private-key') unless node_config.dig('ssh', 'private-key').nil? - options[:password] = node_config.dig('ssh', 'password') unless node_config.dig('ssh', 'password').nil? - # Support both net-ssh 4 and 5. - # rubocop:disable Metrics/BlockNesting - options[:verify_host_key] = if node_config.dig('ssh', 'host-key-check').nil? - # Fall back to SSH behavior. This variable will only be set in net-ssh 5.3+. - if @strict_host_key_checking.nil? || @strict_host_key_checking - Net::SSH::Verifiers::Always.new - else - # SSH's behavior with StrictHostKeyChecking=no: adds new keys to known_hosts. - # If known_hosts points to /dev/null, then equivalent to :never where it - # accepts any key beacuse they're all new. - Net::SSH::Verifiers::AcceptNewOrLocalTunnel.new - end - elsif node_config.dig('ssh', 'host-key-check') - if defined?(Net::SSH::Verifiers::Always) - Net::SSH::Verifiers::Always.new - else - Net::SSH::Verifiers::Secure.new - end - elsif defined?(Net::SSH::Verifiers::Never) - Net::SSH::Verifiers::Never.new - else - Net::SSH::Verifiers::Null.new - end - # rubocop:enable Metrics/BlockNesting - host = if ENV['TARGET_HOST'].include?(':') - ENV['TARGET_HOST'].split(':').first - else - ENV['TARGET_HOST'] - end - set :host, options[:host_name] || host - set :ssh_options, options - set :request_pty, true - elsif target_in_group(inventory_hash, ENV['TARGET_HOST'], 'winrm_nodes') - require 'winrm' - - set :backend, :winrm - set :os, family: 'windows' - user = node_config.dig('winrm', 'user') unless node_config.dig('winrm', 'user').nil? - pass = node_config.dig('winrm', 'password') unless node_config.dig('winrm', 'password').nil? - endpoint = "http://#{ENV['TARGET_HOST']}:5985/wsman" - - opts = { - user: user, - password: pass, - endpoint: endpoint, - operation_timeout: 300, - } - - winrm = WinRM::Connection.new opts - Specinfra.configuration.winrm = winrm - end -end +PuppetLitmus.configure! diff --git a/spec/spec_helper_acceptance_local.rb b/spec/spec_helper_acceptance_local.rb index 276324a..024508e 100644 --- a/spec/spec_helper_acceptance_local.rb +++ b/spec/spec_helper_acceptance_local.rb @@ -1,45 +1,52 @@ +require 'singleton' + +class LitmusHelper + include Singleton + include PuppetLitmus +end + RSpec.configure do |c| # Readable test descriptions c.formatter = :documentation # Configure all nodes in nodeset c.before :suite do case os[:family] when 'redhat' if os[:release][0] =~ %r{5} - run_shell('which git', expect_failures: true) - run_shell('rpm -ivh http://repository.it4i.cz/mirrors/repoforge/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm', expect_failures: true) - run_shell('yum install -y git') + LitmusHelper.instance.run_shell('which git', expect_failures: true) + LitmusHelper.instance.run_shell('rpm -ivh http://repository.it4i.cz/mirrors/repoforge/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm', expect_failures: true) + LitmusHelper.instance.run_shell('yum install -y git') end pp = <<-PP package { 'git': ensure => present, } package { 'subversion': ensure => present, } PP - apply_manifest(pp) + LitmusHelper.instance.apply_manifest(pp) when %r{(ubuntu|[dD]ebian|sles)} pp = <<-PP package { 'git-core': ensure => present, } package { 'subversion': ensure => present, } PP - apply_manifest(pp) + LitmusHelper.instance.apply_manifest(pp) else unless run_bolt_task('package', 'action' => 'status', 'name' => 'git') puts 'Git package is required for this module' exit end unless run_bolt_task('package', 'action' => 'status', 'name' => 'subversion') puts 'Subversion package is required for this module' exit end end - run_shell('git config --global user.email "root@localhost"') - run_shell('git config --global user.name "root"') + LitmusHelper.instance.run_shell('git config --global user.email "root@localhost"') + LitmusHelper.instance.run_shell('git config --global user.name "root"') end end # git with 3.18 changes the maximum enabled TLS protocol version, older OSes will fail these tests def only_supports_weak_encryption return_val = (os[:family] == 'redhat' && os[:release].start_with?('5', '6') || (os[:family] == 'sles' && os[:release].start_with?('11'))) return_val end