|
1 | 1 | # frozen_string_literal: true |
2 | 2 |
|
3 | | -require 'serverspec' |
4 | 3 | require 'puppet_litmus' |
5 | 4 | require 'spec_helper_acceptance_local' if File.file?(File.join(File.dirname(__FILE__), 'spec_helper_acceptance_local.rb')) |
6 | | -include PuppetLitmus |
7 | 5 |
|
8 | | -if ENV['TARGET_HOST'].nil? || ENV['TARGET_HOST'] == 'localhost' |
9 | | - puts 'Running tests against this machine !' |
10 | | - if Gem.win_platform? |
11 | | - set :backend, :cmd |
12 | | - else |
13 | | - set :backend, :exec |
14 | | - end |
15 | | -else |
16 | | - # load inventory |
17 | | - inventory_hash = inventory_hash_from_inventory_file |
18 | | - node_config = config_from_node(inventory_hash, ENV['TARGET_HOST']) |
19 | | - |
20 | | - if target_in_group(inventory_hash, ENV['TARGET_HOST'], 'docker_nodes') |
21 | | - host = ENV['TARGET_HOST'] |
22 | | - set :backend, :docker |
23 | | - set :docker_container, host |
24 | | - elsif target_in_group(inventory_hash, ENV['TARGET_HOST'], 'ssh_nodes') |
25 | | - set :backend, :ssh |
26 | | - options = Net::SSH::Config.for(host) |
27 | | - options[:user] = node_config.dig('ssh', 'user') unless node_config.dig('ssh', 'user').nil? |
28 | | - options[:port] = node_config.dig('ssh', 'port') unless node_config.dig('ssh', 'port').nil? |
29 | | - options[:keys] = node_config.dig('ssh', 'private-key') unless node_config.dig('ssh', 'private-key').nil? |
30 | | - options[:password] = node_config.dig('ssh', 'password') unless node_config.dig('ssh', 'password').nil? |
31 | | - # Support both net-ssh 4 and 5. |
32 | | - # rubocop:disable Metrics/BlockNesting |
33 | | - options[:verify_host_key] = if node_config.dig('ssh', 'host-key-check').nil? |
34 | | - # Fall back to SSH behavior. This variable will only be set in net-ssh 5.3+. |
35 | | - if @strict_host_key_checking.nil? || @strict_host_key_checking |
36 | | - Net::SSH::Verifiers::Always.new |
37 | | - else |
38 | | - # SSH's behavior with StrictHostKeyChecking=no: adds new keys to known_hosts. |
39 | | - # If known_hosts points to /dev/null, then equivalent to :never where it |
40 | | - # accepts any key beacuse they're all new. |
41 | | - Net::SSH::Verifiers::AcceptNewOrLocalTunnel.new |
42 | | - end |
43 | | - elsif node_config.dig('ssh', 'host-key-check') |
44 | | - if defined?(Net::SSH::Verifiers::Always) |
45 | | - Net::SSH::Verifiers::Always.new |
46 | | - else |
47 | | - Net::SSH::Verifiers::Secure.new |
48 | | - end |
49 | | - elsif defined?(Net::SSH::Verifiers::Never) |
50 | | - Net::SSH::Verifiers::Never.new |
51 | | - else |
52 | | - Net::SSH::Verifiers::Null.new |
53 | | - end |
54 | | - # rubocop:enable Metrics/BlockNesting |
55 | | - host = if ENV['TARGET_HOST'].include?(':') |
56 | | - ENV['TARGET_HOST'].split(':').first |
57 | | - else |
58 | | - ENV['TARGET_HOST'] |
59 | | - end |
60 | | - set :host, options[:host_name] || host |
61 | | - set :ssh_options, options |
62 | | - set :request_pty, true |
63 | | - elsif target_in_group(inventory_hash, ENV['TARGET_HOST'], 'winrm_nodes') |
64 | | - require 'winrm' |
65 | | - |
66 | | - set :backend, :winrm |
67 | | - set :os, family: 'windows' |
68 | | - user = node_config.dig('winrm', 'user') unless node_config.dig('winrm', 'user').nil? |
69 | | - pass = node_config.dig('winrm', 'password') unless node_config.dig('winrm', 'password').nil? |
70 | | - endpoint = "http://#{ENV['TARGET_HOST']}:5985/wsman" |
71 | | - |
72 | | - opts = { |
73 | | - user: user, |
74 | | - password: pass, |
75 | | - endpoint: endpoint, |
76 | | - operation_timeout: 300, |
77 | | - } |
78 | | - |
79 | | - winrm = WinRM::Connection.new opts |
80 | | - Specinfra.configuration.winrm = winrm |
81 | | - end |
82 | | -end |
| 6 | +PuppetLitmus.configure! |
0 commit comments