beaker-puppet 1.29.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +9 -0
  3. data/.github/workflows/release.yml +2 -2
  4. data/.github/workflows/test.yml +28 -7
  5. data/.rubocop.yml +5 -0
  6. data/.rubocop_todo.yml +842 -0
  7. data/CHANGELOG.md +31 -0
  8. data/Gemfile +5 -20
  9. data/Rakefile +64 -169
  10. data/acceptance/config/acceptance-options.rb +3 -3
  11. data/acceptance/config/gem/acceptance-options.rb +8 -8
  12. data/acceptance/config/git/acceptance-options.rb +8 -8
  13. data/acceptance/config/pkg/acceptance-options.rb +7 -7
  14. data/acceptance/pre_suite/gem/install.rb +6 -6
  15. data/acceptance/pre_suite/git/install.rb +22 -22
  16. data/acceptance/pre_suite/pkg/install.rb +3 -3
  17. data/acceptance/tests/backwards_compatible.rb +6 -7
  18. data/acceptance/tests/clone_git_repo_on_test.rb +12 -13
  19. data/acceptance/tests/create_tmpdir_on_test.rb +13 -9
  20. data/acceptance/tests/install_smoke_test.rb +5 -4
  21. data/acceptance/tests/stub_host.rb +11 -10
  22. data/acceptance/tests/web_helpers_test.rb +11 -10
  23. data/beaker-puppet.gemspec +16 -23
  24. data/bin/beaker-puppet +2 -4
  25. data/lib/beaker-puppet/helpers/facter_helpers.rb +9 -7
  26. data/lib/beaker-puppet/helpers/host_helpers.rb +10 -7
  27. data/lib/beaker-puppet/helpers/puppet_helpers.rb +151 -160
  28. data/lib/beaker-puppet/helpers/rake_helpers.rb +1 -1
  29. data/lib/beaker-puppet/helpers/tk_helpers.rb +22 -28
  30. data/lib/beaker-puppet/install_utils/aio_defaults.rb +39 -43
  31. data/lib/beaker-puppet/install_utils/ezbake_utils.rb +34 -42
  32. data/lib/beaker-puppet/install_utils/foss_defaults.rb +134 -138
  33. data/lib/beaker-puppet/install_utils/foss_utils.rb +293 -320
  34. data/lib/beaker-puppet/install_utils/module_utils.rb +58 -70
  35. data/lib/beaker-puppet/install_utils/puppet5.rb +30 -35
  36. data/lib/beaker-puppet/install_utils/puppet_utils.rb +58 -68
  37. data/lib/beaker-puppet/install_utils/windows_utils.rb +34 -36
  38. data/lib/beaker-puppet/version.rb +1 -1
  39. data/lib/beaker-puppet/wrappers.rb +13 -14
  40. data/lib/beaker-puppet.rb +4 -5
  41. data/setup/aio/010_Install_Puppet_Agent.rb +5 -6
  42. data/setup/common/000-delete-puppet-when-none.rb +2 -4
  43. data/setup/common/003_solaris_cert_fix.rb +74 -70
  44. data/setup/common/005_redhat_subscription_fix.rb +3 -2
  45. data/setup/common/011_Install_Puppet_Server.rb +7 -9
  46. data/setup/common/012_Finalize_Installs.rb +5 -5
  47. data/setup/common/025_StopFirewall.rb +1 -1
  48. data/setup/common/030_StopSssd.rb +2 -2
  49. data/setup/common/040_ValidateSignCert.rb +10 -12
  50. data/setup/common/045_EnsureMasterStarted.rb +2 -2
  51. data/setup/gem/010_GemInstall.rb +5 -4
  52. data/setup/git/000_EnvSetup.rb +48 -48
  53. data/setup/git/010_TestSetup.rb +13 -12
  54. data/setup/git/020_PuppetUserAndGroup.rb +3 -2
  55. data/setup/git/060_InstallModules.rb +14 -14
  56. data/setup/git/070_InstallCACerts.rb +82 -82
  57. data/spec/beaker-puppet/helpers/facter_helpers_spec.rb +22 -24
  58. data/spec/beaker-puppet/helpers/host_helpers_spec.rb +10 -6
  59. data/spec/beaker-puppet/helpers/puppet_helpers_spec.rb +506 -517
  60. data/spec/beaker-puppet/helpers/tk_helpers_spec.rb +20 -24
  61. data/spec/beaker-puppet/install_utils/ezbake_utils_spec.rb +86 -90
  62. data/spec/beaker-puppet/install_utils/foss_utils_spec.rb +636 -599
  63. data/spec/beaker-puppet/install_utils/module_utils_spec.rb +125 -116
  64. data/spec/beaker-puppet/install_utils/puppet5_spec.rb +159 -165
  65. data/spec/beaker-puppet/install_utils/puppet_utils_spec.rb +92 -77
  66. data/spec/beaker-puppet/install_utils/windows_utils_spec.rb +101 -89
  67. data/spec/beaker-puppet/wrappers_spec.rb +10 -10
  68. data/spec/helpers.rb +85 -91
  69. data/tasks/ci.rake +171 -179
  70. metadata +33 -62
  71. data/setup/common/020_InstallCumulusModules.rb +0 -13
  72. data/setup/common/021_InstallAristaModuleMasters.rb +0 -12
  73. data/setup/common/022_InstallAristaModuleAgents.rb +0 -13
@@ -1,8 +1,8 @@
1
- require "beaker-puppet/install_utils/windows_utils"
2
- [ 'aio', 'foss' ].each do |lib|
1
+ require 'beaker-puppet/install_utils/windows_utils'
2
+ %w[aio foss].each do |lib|
3
3
  require "beaker-puppet/install_utils/#{lib}_defaults"
4
4
  end
5
- require "beaker-puppet/install_utils/puppet_utils"
5
+ require 'beaker-puppet/install_utils/puppet_utils'
6
6
  module Beaker
7
7
  module DSL
8
8
  module InstallUtils
@@ -23,13 +23,13 @@ module Beaker
23
23
  include WindowsUtils
24
24
 
25
25
  # The default install path
26
- SourcePath = "/opt/puppet-git-repos"
26
+ SourcePath = '/opt/puppet-git-repos'
27
27
 
28
28
  # A regex to know if the uri passed is pointing to a git repo
29
- GitURI = %r{^(git|https?|file)://|^git@|^gitmirror@}
29
+ GitURI = %r{^(git|https?|file)://|^git@|^gitmirror@}
30
30
 
31
31
  # Github's ssh signature for cloning via ssh
32
- GitHubSig = 'github.com,207.97.227.239 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ=='
32
+ GitHubSig = 'github.com,207.97.227.239 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ=='
33
33
 
34
34
  # Merge given options with our default options in a consistent way
35
35
  # This will remove any nil values so that we always have a set default.
@@ -45,17 +45,17 @@ module Beaker
45
45
  opts[:nightly_win_download_url] ||= opts[:nightly_builds_url]
46
46
  opts[:nightly_mac_download_url] ||= opts[:nightly_builds_url]
47
47
 
48
- FOSS_DEFAULT_DOWNLOAD_URLS.merge(opts.reject{|k,v| v.nil?})
48
+ FOSS_DEFAULT_DOWNLOAD_URLS.merge(opts.reject { |k, v| v.nil? })
49
49
  end
50
50
 
51
51
  # lookup project-specific git environment variables
52
52
  # PROJECT_VAR or VAR otherwise return the default
53
53
  #
54
54
  # @!visibility private
55
- def lookup_in_env(env_variable_name, project_name=nil, default=nil)
56
- env_variable_name = "#{env_variable_name.upcase.gsub('-','_')}"
57
- project_specific_name = "#{project_name.upcase.gsub('-','_')}_#{env_variable_name}" if project_name
58
- project_name && ENV[project_specific_name] || ENV[env_variable_name] || default
55
+ def lookup_in_env(env_variable_name, project_name = nil, default = nil)
56
+ env_variable_name = "#{env_variable_name.upcase.gsub('-', '_')}"
57
+ project_specific_name = "#{project_name.upcase.gsub('-', '_')}_#{env_variable_name}" if project_name
58
+ project_name && ENV[project_specific_name] || ENV[env_variable_name] || default # rubocop:disable Style/FetchEnvVar
59
59
  end
60
60
 
61
61
  # @return [Boolean] Whether Puppet's internal builds are accessible from all the SUTs
@@ -76,7 +76,7 @@ module Beaker
76
76
  return true if host.host_hash[:template] == 'redhat-8-arm64' && host.hostname =~ /.puppet.net$/
77
77
 
78
78
  result = on(host, %(curl --location -fI "#{url}"), accept_all_exit_codes: true)
79
- return result.exit_code.zero?
79
+ result.exit_code.zero?
80
80
  end
81
81
 
82
82
  # @param [String] project_name
@@ -87,7 +87,7 @@ module Beaker
87
87
  # @return [String] Returns a git-usable url
88
88
  #
89
89
  # TODO: enable other protocols, clarify, http://git-scm.com/book/ch4-1.html
90
- def build_git_url(project_name, git_fork = nil, git_server = nil, git_protocol='https')
90
+ def build_git_url(project_name, git_fork = nil, git_server = nil, git_protocol = 'https')
91
91
  git_fork ||= lookup_in_env('FORK', project_name, 'puppetlabs')
92
92
  git_server ||= lookup_in_env('SERVER', project_name, 'github.com')
93
93
 
@@ -98,10 +98,10 @@ module Beaker
98
98
  git_protocol = 'https://'
99
99
  end
100
100
 
101
- repo = (git_server == 'github.com') ? "#{git_fork}/#{project_name}.git" : "#{git_fork}-#{project_name}.git"
102
- return git_protocol == 'git@' ? "#{git_protocol}#{git_server}:#{repo}" : "#{git_protocol}#{git_server}/#{repo}"
101
+ repo = git_server == 'github.com' ? "#{git_fork}/#{project_name}.git" : "#{git_fork}-#{project_name}.git"
102
+ git_protocol == 'git@' ? "#{git_protocol}#{git_server}:#{repo}" : "#{git_protocol}#{git_server}/#{repo}"
103
103
  end
104
- alias_method :build_giturl, :build_git_url
104
+ alias build_giturl build_git_url
105
105
 
106
106
  # @param [String] uri A uri in the format of <git uri>#<revision>
107
107
  # the `git://`, `http://`, `https://`, and ssh
@@ -121,14 +121,14 @@ module Beaker
121
121
  # name, repository path, and revision
122
122
  # (defaults to HEAD)
123
123
  #
124
- def extract_repo_info_from uri
124
+ def extract_repo_info_from(uri)
125
125
  require 'pathname'
126
126
  project = {}
127
127
  repo, rev = uri.split('#', 2)
128
128
  project[:name] = Pathname.new(repo).basename('.git').to_s
129
129
  project[:path] = repo
130
130
  project[:rev] = rev || 'HEAD'
131
- return project
131
+ project
132
132
  end
133
133
 
134
134
  # Takes an array of package info hashes (like that returned from
@@ -136,8 +136,8 @@ module Beaker
136
136
  # packages so that puppet's dependencies will be installed first.
137
137
  #
138
138
  # @!visibility private
139
- def order_packages packages_array
140
- puppet = packages_array.select {|e| e[:name] == 'puppet' }
139
+ def order_packages(packages_array)
140
+ puppet = packages_array.select { |e| e[:name] == 'puppet' }
141
141
  puppet_depends_on = packages_array.select do |e|
142
142
  e[:name] == 'hiera' or e[:name] == 'facter'
143
143
  end
@@ -163,12 +163,12 @@ module Beaker
163
163
  # @note This requires the helper methods:
164
164
  # * {Beaker::DSL::Helpers#on}
165
165
  #
166
- def find_git_repo_versions host, path, repository
166
+ def find_git_repo_versions(host, path, repository)
167
167
  logger.notify("\n * Grab version for #{repository[:name]}")
168
168
 
169
169
  version = {}
170
170
  on host, "cd #{path}/#{repository[:name]} && " +
171
- "git describe || true" do
171
+ 'git describe || true' do
172
172
  version[repository[:name]] = stdout.chomp
173
173
  end
174
174
 
@@ -185,8 +185,8 @@ module Beaker
185
185
  # @note This requires the helper methods:
186
186
  # * {Beaker::DSL::Helpers#on}
187
187
  #
188
- def clone_git_repo_on host, path, repository, opts = {}
189
- opts = {:accept_all_exit_codes => true}.merge(opts)
188
+ def clone_git_repo_on(host, path, repository, opts = {})
189
+ opts = { accept_all_exit_codes: true }.merge(opts)
190
190
  name = repository[:name]
191
191
  repo = repository[:path]
192
192
  rev = repository[:rev]
@@ -194,14 +194,10 @@ module Beaker
194
194
  depth_branch = repository[:depth_branch]
195
195
  target = "#{path}/#{name}"
196
196
 
197
- if (depth_branch.nil?)
198
- depth_branch = rev
199
- end
197
+ depth_branch = rev if depth_branch.nil?
200
198
 
201
199
  clone_cmd = "git clone #{repo} #{target}"
202
- if (depth)
203
- clone_cmd = "git clone --branch #{depth_branch} --depth #{depth} #{repo} #{target}"
204
- end
200
+ clone_cmd = "git clone --branch #{depth_branch} --depth #{depth} #{repo} #{target}" if depth
205
201
 
206
202
  logger.notify("\n * Clone #{repo} if needed")
207
203
 
@@ -210,44 +206,44 @@ module Beaker
210
206
 
211
207
  logger.notify("\n * Update #{name} and check out revision #{rev}")
212
208
  commands = ["cd #{target}",
213
- "remote rm origin",
209
+ 'remote rm origin',
214
210
  "remote add origin #{repo}",
215
- "fetch origin +refs/pull/*:refs/remotes/origin/pr/* +refs/heads/*:refs/remotes/origin/*",
216
- "clean -fdx",
217
- "checkout -f #{rev}"]
218
- on host, commands.join(" && git "), opts
211
+ 'fetch origin +refs/pull/*:refs/remotes/origin/pr/* +refs/heads/*:refs/remotes/origin/*',
212
+ 'clean -fdx',
213
+ "checkout -f #{rev}",]
214
+ on host, commands.join(' && git '), opts
219
215
  end
220
216
 
221
217
  # @see #find_git_repo_versions
222
218
  # @note This assumes the target repository application
223
219
  # can be installed via an install.rb ruby script.
224
- def install_from_git_on host, path, repository, opts = {}
225
- opts = {:accept_all_exit_codes => true}.merge(opts)
220
+ def install_from_git_on(host, path, repository, opts = {})
221
+ opts = { accept_all_exit_codes: true }.merge(opts)
226
222
  clone_git_repo_on host, path, repository, opts
227
- name = repository[:name]
223
+ name = repository[:name]
228
224
  logger.notify("\n * Install #{name} on the system")
229
225
  # The solaris ruby IPS package has bindir set to /usr/ruby/1.8/bin.
230
226
  # However, this is not the path to which we want to deliver our
231
227
  # binaries. So if we are using solaris, we have to pass the bin and
232
228
  # sbin directories to the install.rb
233
- target = "#{path}/#{name}"
229
+ target = "#{path}/#{name}"
234
230
  install_opts = ''
235
231
  install_opts = '--bindir=/usr/bin --sbindir=/usr/sbin' if host['platform'].include? 'solaris'
236
232
 
237
233
  on host, "cd #{target} && " +
238
- "if [ -f install.rb ]; then " +
234
+ 'if [ -f install.rb ]; then ' +
239
235
  "ruby ./install.rb #{install_opts}; " +
240
- "else true; fi", opts
236
+ 'else true; fi', opts
241
237
  end
242
- alias_method :install_from_git, :install_from_git_on
238
+ alias install_from_git install_from_git_on
243
239
 
244
240
  # @deprecated Use {#install_puppet_on} instead.
245
241
  def install_puppet(opts = {})
246
- #send in the global hosts!
242
+ # send in the global hosts!
247
243
  install_puppet_on(hosts, opts)
248
244
  end
249
245
 
250
- #Install FOSS based on specified hosts using provided options
246
+ # Install FOSS based on specified hosts using provided options
251
247
  # @example will install puppet 3.6.1 from native puppetlabs provided packages wherever possible and will fail over to gem installation when impossible
252
248
  # install_puppet_on(hosts, {
253
249
  # :version => '3.6.1',
@@ -275,7 +271,7 @@ module Beaker
275
271
  # install_puppet_on(hosts)
276
272
  #
277
273
  # @note This will attempt to add a repository for apt.puppetlabs.com on
278
- # Debian, Ubuntu, or Cumulus machines, or yum.puppetlabs.com on EL or Fedora
274
+ # Debian or Ubuntu machines, or yum.puppetlabs.com on EL or Fedora
279
275
  # machines, then install the package 'puppet' or 'puppet-agent'.
280
276
  #
281
277
  # @param [Host, Array<Host>, String, Symbol] hosts One or more hosts to act upon,
@@ -294,7 +290,7 @@ module Beaker
294
290
  opts = sanitize_opts(opts)
295
291
 
296
292
  # If version isn't specified assume the latest in the 3.x series
297
- if opts[:version] and not version_is_less(opts[:version], '4.0.0')
293
+ if opts[:version] and !version_is_less(opts[:version], '4.0.0')
298
294
  # backwards compatability
299
295
  opts[:puppet_agent_version] ||= opts[:version]
300
296
  install_puppet_agent_on(hosts, opts)
@@ -302,12 +298,12 @@ module Beaker
302
298
  # Use option specified in the method call, otherwise check whether the global
303
299
  # run_in_parallel option includes install
304
300
  run_in_parallel = run_in_parallel? opts, @options, 'install'
305
- block_on hosts, { :run_in_parallel => run_in_parallel } do |host|
301
+ block_on hosts, { run_in_parallel: run_in_parallel } do |host|
306
302
  if host['platform'] =~ /(el|fedora)-(\d+)/
307
- family = $1
308
- relver = $2
309
- install_puppet_from_rpm_on(host, opts.merge(:release => relver, :family => family))
310
- elsif host['platform'] =~ /(ubuntu|debian|cumulus|huaweios)/
303
+ family = ::Regexp.last_match(1)
304
+ relver = ::Regexp.last_match(2)
305
+ install_puppet_from_rpm_on(host, opts.merge(release: relver, family: family))
306
+ elsif host['platform'] =~ /(ubuntu|debian|huaweios)/
311
307
  install_puppet_from_deb_on(host, opts)
312
308
  elsif host['platform'] =~ /windows/
313
309
  relver = opts[:version]
@@ -321,12 +317,13 @@ module Beaker
321
317
  elsif host['platform'] =~ /archlinux/
322
318
  install_puppet_from_pacman_on(host, opts)
323
319
  else
324
- if opts[:default_action] == 'gem_install'
325
- opts[:version] ||= '~> 3.x'
326
- install_puppet_from_gem_on(host, opts)
327
- else
320
+ unless opts[:default_action] == 'gem_install'
328
321
  raise "install_puppet() called for unsupported platform '#{host['platform']}' on '#{host.name}'"
329
322
  end
323
+
324
+ opts[:version] ||= '~> 3.x'
325
+ install_puppet_from_gem_on(host, opts)
326
+
330
327
  end
331
328
 
332
329
  host[:version] = opts[:version]
@@ -334,7 +331,7 @@ module Beaker
334
331
  # Certain install paths may not create the config dirs/files needed
335
332
  host.mkdir_p host['puppetpath'] unless host[:type] =~ /aio/
336
333
 
337
- if ((host['platform'] =~ /windows/) and not host.is_cygwin?)
334
+ if (host['platform'] =~ /windows/) and !host.is_cygwin?
338
335
  # Do nothing
339
336
  else
340
337
  on host, "echo '' >> #{host.puppet['hiera_config']}"
@@ -357,7 +354,7 @@ module Beaker
357
354
  # install_puppet_agent_on(hosts)
358
355
  #
359
356
  # @note This will attempt to add a repository for apt.puppetlabs.com on
360
- # Debian, Ubuntu, or Cumulus machines, or yum.puppetlabs.com on EL or Fedora
357
+ # Debian or Ubuntu machines, or yum.puppetlabs.com on EL or Fedora
361
358
  # machines, then install the package 'puppet-agent'.
362
359
  #
363
360
  # @param [Host, Array<Host>, String, Symbol] hosts One or more hosts to act upon,
@@ -377,14 +374,14 @@ module Beaker
377
374
  # @raise [FailTest] When error occurs during the actual installation process
378
375
  def install_puppet_agent_on(hosts, opts = {})
379
376
  opts = sanitize_opts(opts)
380
- opts[:puppet_agent_version] ||= opts[:version] #backwards compatability with old parameter name
377
+ opts[:puppet_agent_version] ||= opts[:version] # backwards compatability with old parameter name
381
378
  opts[:puppet_collection] ||= puppet_collection_for(:puppet_agent, opts[:puppet_agent_version]) || 'pc1'
382
379
 
383
380
  # the collection names are case sensitive
384
381
  opts[:puppet_collection] = opts[:puppet_collection].downcase
385
382
 
386
383
  run_in_parallel = run_in_parallel? opts, @options, 'install'
387
- block_on hosts, { :run_in_parallel => run_in_parallel } do |host|
384
+ block_on hosts, { run_in_parallel: run_in_parallel } do |host|
388
385
  # AIO refers to FOSS agents that contain puppet 4+, that is, puppet-agent packages
389
386
  # in the 1.x series, or the 5.x series, or later. Previous versions are not supported,
390
387
  # so 'aio' is the only role that makes sense here.
@@ -392,7 +389,9 @@ module Beaker
392
389
  package_name = nil
393
390
 
394
391
  # If inside the Puppet VPN, install from development builds.
395
- if opts[:puppet_agent_version] && opts[:puppet_agent_version] != 'latest' && dev_builds_accessible_on?(host, opts[:dev_builds_url])
392
+ if opts[:puppet_agent_version] && opts[:puppet_agent_version] != 'latest' && dev_builds_accessible_on?(
393
+ host, opts[:dev_builds_url]
394
+ )
396
395
  install_puppet_agent_from_dev_builds_on(host, opts[:puppet_agent_version])
397
396
  else
398
397
  if opts[:puppet_agent_version] == 'latest'
@@ -410,13 +409,17 @@ module Beaker
410
409
  when /el-|redhat|fedora|sles|centos|cisco_/
411
410
  package_name = 'puppet-agent'
412
411
  package_name << "-#{opts[:puppet_agent_version]}" if opts[:puppet_agent_version]
413
- when /debian|ubuntu|cumulus|huaweios/
412
+ when /debian|ubuntu|huaweios/
414
413
  package_name = 'puppet-agent'
415
- package_name << "=#{opts[:puppet_agent_version]}-1#{host['platform'].codename}" if opts[:puppet_agent_version]
414
+ if opts[:puppet_agent_version]
415
+ package_name << "=#{opts[:puppet_agent_version]}-1#{host['platform'].codename}"
416
+ end
416
417
  when /windows/
417
418
  install_puppet_agent_from_msi_on(host, opts)
418
419
  when /osx/
419
420
  install_puppet_agent_from_dmg_on(host, opts)
421
+ when /freebsd/
422
+ install_puppet_from_freebsd_ports_on(host, opts)
420
423
  when /archlinux/
421
424
  install_puppet_from_pacman_on(host, opts)
422
425
  else
@@ -425,23 +428,23 @@ module Beaker
425
428
  install_puppet_from_gem_on(host, opts)
426
429
  on host, "echo '' >> #{host.puppet['hiera_config']}"
427
430
  else
428
- raise "install_puppet_agent_on() called for unsupported " +
431
+ raise 'install_puppet_agent_on() called for unsupported ' +
429
432
  "platform '#{host['platform']}' on '#{host.name}'"
430
433
  end
431
434
  end
432
435
 
433
436
  if package_name
434
- install_puppetlabs_release_repo( host, opts[:puppet_collection] , opts)
435
- host.install_package( package_name )
437
+ install_puppetlabs_release_repo(host, opts[:puppet_collection], opts)
438
+ host.install_package(package_name)
436
439
  end
437
440
  end
438
441
  end
439
442
  end
440
443
 
441
444
  # @deprecated Use {#configure_puppet_on} instead.
442
- def configure_puppet(opts={})
445
+ def configure_puppet(opts = {})
443
446
  hosts.each do |host|
444
- configure_puppet_on(host,opts)
447
+ configure_puppet_on(host, opts)
445
448
  end
446
449
  end
447
450
 
@@ -472,14 +475,14 @@ module Beaker
472
475
  # @return nil
473
476
  def configure_puppet_on(hosts, opts = {})
474
477
  puppet_conf_text = ''
475
- opts.each do |section,options|
478
+ opts.each do |section, options|
476
479
  puppet_conf_text << "[#{section}]\n"
477
- options.each do |option,value|
480
+ options.each do |option, value|
478
481
  puppet_conf_text << "#{option}=#{value}\n"
479
482
  end
480
483
  puppet_conf_text << "\n"
481
484
  end
482
- logger.debug( "setting config '#{puppet_conf_text}' on hosts #{hosts}" )
485
+ logger.debug("setting config '#{puppet_conf_text}' on hosts #{hosts}")
483
486
  block_on hosts, opts do |host|
484
487
  puppet_conf_path = host.puppet['config']
485
488
  create_remote_file(host, puppet_conf_path, puppet_conf_text)
@@ -499,30 +502,26 @@ module Beaker
499
502
  #
500
503
  # @return nil
501
504
  # @api private
502
- def install_puppet_from_rpm_on( hosts, opts )
505
+ def install_puppet_from_rpm_on(hosts, opts)
503
506
  block_on hosts do |host|
504
507
  if opts[:puppet_collection] && opts[:puppet_collection].match(/puppet\d*/)
505
- install_puppetlabs_release_repo(host,opts[:puppet_collection],opts)
508
+ install_puppetlabs_release_repo(host, opts[:puppet_collection], opts)
506
509
  elsif host[:type] == 'aio'
507
- install_puppetlabs_release_repo(host,'pc1',opts)
510
+ install_puppetlabs_release_repo(host, 'pc1', opts)
508
511
  else
509
- install_puppetlabs_release_repo(host,nil,opts)
512
+ install_puppetlabs_release_repo(host, nil, opts)
510
513
  end
511
514
 
512
- if opts[:facter_version]
513
- host.install_package("facter-#{opts[:facter_version]}")
514
- end
515
+ host.install_package("facter-#{opts[:facter_version]}") if opts[:facter_version]
515
516
 
516
- if opts[:hiera_version]
517
- host.install_package("hiera-#{opts[:hiera_version]}")
518
- end
517
+ host.install_package("hiera-#{opts[:hiera_version]}") if opts[:hiera_version]
519
518
 
520
519
  puppet_pkg = opts[:version] ? "puppet-#{opts[:version]}" : 'puppet'
521
520
  host.install_package("#{puppet_pkg}")
522
- configure_type_defaults_on( host )
521
+ configure_type_defaults_on(host)
523
522
  end
524
523
  end
525
- alias_method :install_puppet_from_rpm, :install_puppet_from_rpm_on
524
+ alias install_puppet_from_rpm install_puppet_from_rpm_on
526
525
 
527
526
  # Installs Puppet and dependencies from deb on provided host(s).
528
527
  #
@@ -535,17 +534,13 @@ module Beaker
535
534
  #
536
535
  # @return nil
537
536
  # @api private
538
- def install_puppet_from_deb_on( hosts, opts )
537
+ def install_puppet_from_deb_on(hosts, opts)
539
538
  block_on hosts do |host|
540
539
  install_puppetlabs_release_repo(host)
541
540
 
542
- if opts[:facter_version]
543
- host.install_package("facter=#{opts[:facter_version]}-1puppetlabs1")
544
- end
541
+ host.install_package("facter=#{opts[:facter_version]}-1puppetlabs1") if opts[:facter_version]
545
542
 
546
- if opts[:hiera_version]
547
- host.install_package("hiera=#{opts[:hiera_version]}-1puppetlabs1")
548
- end
543
+ host.install_package("hiera=#{opts[:hiera_version]}-1puppetlabs1") if opts[:hiera_version]
549
544
 
550
545
  if opts[:version]
551
546
  host.install_package("puppet-common=#{opts[:version]}-1puppetlabs1")
@@ -553,10 +548,10 @@ module Beaker
553
548
  else
554
549
  host.install_package('puppet')
555
550
  end
556
- configure_type_defaults_on( host )
551
+ configure_type_defaults_on(host)
557
552
  end
558
553
  end
559
- alias_method :install_puppet_from_deb, :install_puppet_from_deb_on
554
+ alias install_puppet_from_deb install_puppet_from_deb_on
560
555
 
561
556
  # Installs Puppet and dependencies from msi on provided host(s).
562
557
  #
@@ -570,15 +565,15 @@ module Beaker
570
565
  #
571
566
  # @note on windows, the +:ruby_arch+ host parameter can determine in addition
572
567
  # to other settings whether the 32 or 64bit install is used
573
- def install_puppet_from_msi_on( hosts, opts )
568
+ def install_puppet_from_msi_on(hosts, opts)
574
569
  block_on hosts do |host|
575
570
  version = opts[:version]
576
571
 
577
572
  if version && !version_is_less(version, '4.0.0')
578
573
  if opts[:puppet_agent_version].nil?
579
- raise "You must specify the version of puppet agent you " +
580
- "want to install if you want to install Puppet 4.0 " +
581
- "or greater on Windows"
574
+ raise 'You must specify the version of puppet agent you ' +
575
+ 'want to install if you want to install Puppet 4.0 ' +
576
+ 'or greater on Windows'
582
577
  end
583
578
 
584
579
  opts[:version] = opts[:puppet_agent_version]
@@ -589,10 +584,10 @@ module Beaker
589
584
  install_a_puppet_msi_on(host, opts)
590
585
 
591
586
  end
592
- configure_type_defaults_on( host )
587
+ configure_type_defaults_on(host)
593
588
  end
594
589
  end
595
- alias_method :install_puppet_from_msi, :install_puppet_from_msi_on
590
+ alias install_puppet_from_msi install_puppet_from_msi_on
596
591
 
597
592
  # @api private
598
593
  def compute_puppet_msi_name(host, opts)
@@ -601,12 +596,12 @@ module Beaker
601
596
  less_than_3_dot_7 = version && version_is_less(version, '3.7')
602
597
 
603
598
  # If there's no version declared, install the latest in the 3.x series
604
- if not version
605
- if !host.is_x86_64? || install_32
606
- host['dist'] = 'puppet-latest'
607
- else
608
- host['dist'] = 'puppet-x64-latest'
609
- end
599
+ if !version
600
+ host['dist'] = if !host.is_x86_64? || install_32
601
+ 'puppet-latest'
602
+ else
603
+ 'puppet-x64-latest'
604
+ end
610
605
 
611
606
  # Install Puppet 3.x with the x86 installer if:
612
607
  # - we are on puppet < 3.7, or
@@ -614,11 +609,11 @@ module Beaker
614
609
  # - we have install_32 set on host or globally
615
610
  # Install Puppet 3.x with the x64 installer if:
616
611
  # - we are otherwise trying to install Puppet 3.x on a x64 host
617
- elsif less_than_3_dot_7 or not host.is_x86_64? or install_32
612
+ elsif less_than_3_dot_7 or !host.is_x86_64? or install_32
618
613
  host['dist'] = "puppet-#{version}"
619
614
 
620
615
  elsif host.is_x86_64?
621
- host['dist'] = "puppet-#{version}-x64"
616
+ host['dist'] = "puppet-#{version}-x64"
622
617
 
623
618
  else
624
619
  raise "I don't understand how to install Puppet version: #{version}"
@@ -637,18 +632,17 @@ module Beaker
637
632
  # to other settings whether the 32 or 64bit install is used
638
633
  def install_puppet_agent_from_msi_on(hosts, opts)
639
634
  block_on hosts do |host|
640
-
641
- add_role(host, 'aio') #we are installing agent, so we want aio role
635
+ add_role(host, 'aio') # we are installing agent, so we want aio role
642
636
  is_config_32 = true == (host['ruby_arch'] == 'x86') || host['install_32'] || opts['install_32']
643
637
  should_install_64bit = host.is_x86_64? && !is_config_32
644
638
  arch = should_install_64bit ? 'x64' : 'x86'
645
639
 
646
640
  # If we don't specify a version install the latest MSI for puppet-agent
647
- if opts[:puppet_agent_version]
648
- host['dist'] = "puppet-agent-#{opts[:puppet_agent_version]}-#{arch}"
649
- else
650
- host['dist'] = "puppet-agent-#{arch}-latest"
651
- end
641
+ host['dist'] = if opts[:puppet_agent_version]
642
+ "puppet-agent-#{opts[:puppet_agent_version]}-#{arch}"
643
+ else
644
+ "puppet-agent-#{arch}-latest"
645
+ end
652
646
 
653
647
  install_a_puppet_msi_on(host, opts)
654
648
  end
@@ -666,9 +660,8 @@ module Beaker
666
660
  else
667
661
  link = "#{opts[:win_download_url]}/#{host['dist']}.msi"
668
662
  end
669
- if not link_exists?( link )
670
- raise "Puppet MSI at #{link} does not exist!"
671
- end
663
+ raise "Puppet MSI at #{link} does not exist!" unless link_exists?(link)
664
+
672
665
  link
673
666
  end
674
667
 
@@ -683,20 +676,21 @@ module Beaker
683
676
  proxy = opts[:package_proxy] ? "-x #{opts[:package_proxy]} " : ''
684
677
  on host, "curl #{proxy}--location --output \"#{msi_download_path}\" --remote-name #{link}"
685
678
 
686
- #Because the msi installer doesn't add Puppet to the environment path
687
- #Add both potential paths for simplicity
688
- #NOTE - this is unnecessary if the host has been correctly identified as 'foss' during set up
689
- puppetbin_path = "\"/cygdrive/c/Program Files (x86)/Puppet Labs/Puppet/bin\":\"/cygdrive/c/Program Files/Puppet Labs/Puppet/bin\""
690
- on host, %Q{ echo 'export PATH=$PATH:#{puppetbin_path}' > /etc/bash.bashrc }
679
+ # Because the msi installer doesn't add Puppet to the environment path
680
+ # Add both potential paths for simplicity
681
+ # NOTE - this is unnecessary if the host has been correctly identified as 'foss' during set up
682
+ puppetbin_path = '"/cygdrive/c/Program Files (x86)/Puppet Labs/Puppet/bin":"/cygdrive/c/Program Files/Puppet Labs/Puppet/bin"'
683
+ on host, %( echo 'export PATH=$PATH:#{puppetbin_path}' > /etc/bash.bashrc )
691
684
  else
692
685
  webclient_proxy = opts[:package_proxy] ? "$webclient.Proxy = New-Object System.Net.WebProxy('#{opts[:package_proxy]}',$true); " : ''
693
- on host, powershell("$webclient = New-Object System.Net.WebClient; #{webclient_proxy}$webclient.DownloadFile('#{link}','#{msi_download_path}')")
686
+ on host,
687
+ powershell("$webclient = New-Object System.Net.WebClient; #{webclient_proxy}$webclient.DownloadFile('#{link}','#{msi_download_path}')")
694
688
  end
695
689
 
696
- opts = { :debug => host[:pe_debug] || opts[:pe_debug] }
690
+ opts = { debug: host[:pe_debug] || opts[:pe_debug] }
697
691
  install_msi_on(host, msi_download_path, {}, opts)
698
692
 
699
- configure_type_defaults_on( host )
693
+ configure_type_defaults_on(host)
700
694
 
701
695
  host.mkdir_p host['distmoduledir'] unless host.is_cygwin?
702
696
  end
@@ -711,21 +705,17 @@ module Beaker
711
705
  #
712
706
  # @return nil
713
707
  # @api private
714
- def install_puppet_from_freebsd_ports_on( hosts, opts )
715
- if (opts[:version])
708
+ def install_puppet_from_freebsd_ports_on(hosts, opts)
709
+ if opts[:version]
716
710
  logger.warn "If you wish to choose a specific Puppet version, use `install_puppet_from_gem_on('~> 3.*')`"
717
711
  end
718
712
 
719
713
  block_on hosts do |host|
720
- if host['platform'] =~ /freebsd-9/
721
- host.install_package("puppet")
722
- else
723
- host.install_package("sysutils/puppet")
724
- end
714
+ host.install_package('sysutils/puppet7')
715
+ configure_type_defaults_on(host)
725
716
  end
726
-
727
717
  end
728
- alias_method :install_puppet_from_freebsd_ports, :install_puppet_from_freebsd_ports_on
718
+ alias install_puppet_from_freebsd_ports install_puppet_from_freebsd_ports_on
729
719
 
730
720
  # Installs Puppet and dependencies from dmg on provided host(s).
731
721
  #
@@ -740,14 +730,14 @@ module Beaker
740
730
  #
741
731
  # @return nil
742
732
  # @api private
743
- def install_puppet_from_dmg_on( hosts, opts )
733
+ def install_puppet_from_dmg_on(hosts, opts)
744
734
  block_on hosts do |host|
745
735
  # install puppet-agent if puppet version > 4.0 OR not puppet version is provided
746
736
  if (opts[:version] && !version_is_less(opts[:version], '4.0.0')) || !opts[:version]
747
737
  if opts[:puppet_agent_version].nil?
748
- raise "You must specify the version of puppet-agent you " +
749
- "want to install if you want to install Puppet 4.0 " +
750
- "or greater on OSX"
738
+ raise 'You must specify the version of puppet-agent you ' +
739
+ 'want to install if you want to install Puppet 4.0 ' +
740
+ 'or greater on OSX'
751
741
  end
752
742
 
753
743
  install_puppet_agent_from_dmg_on(host, opts)
@@ -757,9 +747,9 @@ module Beaker
757
747
  facter_ver = opts[:facter_version] || 'latest'
758
748
  hiera_ver = opts[:hiera_version] || 'latest'
759
749
 
760
- if [puppet_ver, facter_ver, hiera_ver].include?(nil)
761
- raise "You need to specify versions for OSX host\n eg. install_puppet({:version => '3.6.2',:facter_version => '2.1.0',:hiera_version => '1.3.4',})"
762
- end
750
+ raise "You need to specify versions for OSX host\n eg. install_puppet({:version => '3.6.2',:facter_version => '2.1.0',:hiera_version => '1.3.4',})" if [
751
+ puppet_ver, facter_ver, hiera_ver,
752
+ ].include?(nil)
763
753
 
764
754
  on host, "curl --location --remote-name #{opts[:mac_download_url]}/puppet-#{puppet_ver}.dmg"
765
755
  on host, "curl --location --remote-name #{opts[:mac_download_url]}/facter-#{facter_ver}.dmg"
@@ -769,11 +759,11 @@ module Beaker
769
759
  host.install_package("facter-#{facter_ver}")
770
760
  host.install_package("hiera-#{hiera_ver}")
771
761
 
772
- configure_type_defaults_on( host )
762
+ configure_type_defaults_on(host)
773
763
  end
774
764
  end
775
765
  end
776
- alias_method :install_puppet_from_dmg, :install_puppet_from_dmg_on
766
+ alias install_puppet_from_dmg install_puppet_from_dmg_on
777
767
 
778
768
  # Installs puppet-agent and dependencies from dmg on provided host(s).
779
769
  #
@@ -790,8 +780,7 @@ module Beaker
790
780
  opts[:puppet_collection] ||= 'PC1'
791
781
  opts[:puppet_collection] = opts[:puppet_collection].upcase if opts[:puppet_collection].match(/pc1/i)
792
782
  block_on hosts do |host|
793
-
794
- add_role(host, 'aio') #we are installing agent, so we want aio role
783
+ add_role(host, 'aio') # we are installing agent, so we want aio role
795
784
 
796
785
  variant, version, arch, codename = host['platform'].to_array
797
786
 
@@ -809,9 +798,7 @@ module Beaker
809
798
  latest = get_latest_puppet_agent_build_from_url(download_url)
810
799
 
811
800
  agent_version = opts[:puppet_agent_version] || latest
812
- unless agent_version.length > 0
813
- raise "no puppet-agent version specified or found on at #{download_url}"
814
- end
801
+ raise "no puppet-agent version specified or found on at #{download_url}" unless agent_version.length > 0
815
802
 
816
803
  pkg_name = "puppet-agent-#{agent_version}*"
817
804
  dmg_name = "puppet-agent-#{agent_version}-1.osx#{version}.dmg"
@@ -819,7 +806,7 @@ module Beaker
819
806
 
820
807
  host.install_package(pkg_name)
821
808
 
822
- configure_type_defaults_on( host )
809
+ configure_type_defaults_on(host)
823
810
  end
824
811
  end
825
812
 
@@ -842,28 +829,27 @@ module Beaker
842
829
  # Redirect following
843
830
  while response.is_a?(Net::HTTPRedirection) && counter < 15
844
831
  response = Net::HTTP.get_response(URI.parse(Net::HTTP.get_response(URI(full_url))['location']))
845
- counter = counter + 1
832
+ counter += 1
846
833
  end
847
834
 
848
- raise "The URL for puppet-agent download, #{response.uri}, returned #{response.message} with #{response.code}" unless response.is_a?(Net::HTTPSuccess)
835
+ unless response.is_a?(Net::HTTPSuccess)
836
+ raise "The URL for puppet-agent download, #{response.uri}, returned #{response.message} with #{response.code}"
837
+ end
849
838
 
850
839
  document = Oga.parse_html(response.body)
851
840
  agents = document.xpath('//a[contains(@href, "puppet-agent")]')
852
841
 
853
842
  latest_match = agents.shift.attributes[0].value
854
- while (latest_match =~ /puppet-agent-\d(.*)/).nil?
855
- latest_match = agents.shift.attributes[0].value
856
- end
843
+ latest_match = agents.shift.attributes[0].value while (latest_match =~ /puppet-agent-\d(.*)/).nil?
857
844
 
858
- re = /puppet-agent-(.*)-/
845
+ re = /puppet-agent-(.*)-/
859
846
  latest_match = latest_match.match re
860
847
 
861
848
  if latest_match
862
- latest = latest_match[1]
849
+ latest_match[1]
863
850
  else
864
- latest = ''
851
+ ''
865
852
  end
866
- return latest
867
853
  end
868
854
 
869
855
  # Installs Puppet and dependencies from OpenBSD packages
@@ -875,7 +861,7 @@ module Beaker
875
861
  # @return nil
876
862
  # @api private
877
863
  def install_puppet_from_openbsd_packages_on(hosts, opts)
878
- if (opts[:version])
864
+ if opts[:version]
879
865
  logger.warn "If you wish to choose a specific Puppet version, use `install_puppet_from_gem_on('~> 3.*')`"
880
866
  end
881
867
 
@@ -895,7 +881,7 @@ module Beaker
895
881
  # @return nil
896
882
  # @api private
897
883
  def install_puppet_from_pacman_on(hosts, opts)
898
- if (opts[:version])
884
+ if opts[:version]
899
885
  # Arch is rolling release, only the latest package versions are supported
900
886
  logger.warn "If you wish to choose a specific Puppet version, use `install_puppet_from_gem_on('~> 3.*')`"
901
887
  end
@@ -919,7 +905,7 @@ module Beaker
919
905
  # @return nil
920
906
  # @raise [StandardError] if gem does not exist on target host
921
907
  # @api private
922
- def install_puppet_from_gem_on( hosts, opts )
908
+ def install_puppet_from_gem_on(hosts, opts)
923
909
  block_on hosts do |host|
924
910
  # There are a lot of special things to do for Solaris and Solaris 10.
925
911
  # This is easier than checking host['platform'] every time.
@@ -928,23 +914,19 @@ module Beaker
928
914
 
929
915
  # Hosts may be provisioned with csw but pkgutil won't be in the
930
916
  # PATH by default to avoid changing the behavior for Puppet's tests
931
- if is_solaris10
932
- on host, 'ln -s /opt/csw/bin/pkgutil /usr/bin/pkgutil'
933
- end
917
+ on host, 'ln -s /opt/csw/bin/pkgutil /usr/bin/pkgutil' if is_solaris10
934
918
 
935
919
  # Solaris doesn't necessarily have this, but gem needs it
936
- if is_solaris
937
- on host, 'mkdir -p /var/lib'
938
- end
920
+ on host, 'mkdir -p /var/lib' if is_solaris
939
921
 
940
- unless host.check_for_command( 'gem' )
922
+ unless host.check_for_command('gem')
941
923
  gempkg = case host['platform']
942
924
  when /solaris-11/ then 'ruby-18'
943
925
  when /ubuntu-14/ then 'ruby'
944
- when /solaris-10|ubuntu|debian|el-|cumulus|huaweios/ then 'rubygems'
945
- when /openbsd/ then 'ruby'
926
+ when /solaris-10|ubuntu|debian|el-|huaweios/ then 'rubygems'
927
+ when /openbsd/ then 'ruby'
946
928
  else
947
- raise "install_puppet() called with default_action " +
929
+ raise 'install_puppet() called with default_action ' +
948
930
  "'gem_install' but program `gem' is " +
949
931
  "not installed on #{host.name}"
950
932
  end
@@ -953,26 +935,20 @@ module Beaker
953
935
  end
954
936
 
955
937
  # Link 'gem' to /usr/bin instead of adding /opt/csw/bin to PATH.
956
- if is_solaris10
957
- on host, 'ln -s /opt/csw/bin/gem /usr/bin/gem'
958
- end
938
+ on host, 'ln -s /opt/csw/bin/gem /usr/bin/gem' if is_solaris10
959
939
 
960
- if host['platform'] =~ /debian|ubuntu|solaris|cumulus|huaweios/
961
- gem_env = YAML.load( on( host, 'gem environment' ).stdout )
962
- gem_paths_array = gem_env['RubyGems Environment'].find {|h| h['GEM PATHS'] != nil }['GEM PATHS']
940
+ if host['platform'] =~ /debian|ubuntu|solaris|huaweios/
941
+ gem_env = YAML.load(on(host, 'gem environment').stdout)
942
+ gem_paths_array = gem_env['RubyGems Environment'].find { |h| h['GEM PATHS'] != nil }['GEM PATHS']
963
943
  path_with_gem = 'export PATH=' + gem_paths_array.join(':') + ':${PATH}'
964
944
  on host, "echo '#{path_with_gem}' >> ~/.bashrc"
965
945
  end
966
946
 
967
947
  gemflags = '--no-document --no-format-executable'
968
948
 
969
- if opts[:facter_version]
970
- on host, "gem install facter -v'#{opts[:facter_version]}' #{gemflags}"
971
- end
949
+ on host, "gem install facter -v'#{opts[:facter_version]}' #{gemflags}" if opts[:facter_version]
972
950
 
973
- if opts[:hiera_version]
974
- on host, "gem install hiera -v'#{opts[:hiera_version]}' #{gemflags}"
975
- end
951
+ on host, "gem install hiera -v'#{opts[:hiera_version]}' #{gemflags}" if opts[:hiera_version]
976
952
 
977
953
  ver_cmd = opts[:version] ? "-v '#{opts[:version]}'" : ''
978
954
  on host, "gem install puppet #{ver_cmd} #{gemflags}"
@@ -980,12 +956,12 @@ module Beaker
980
956
  # Similar to the treatment of 'gem' above.
981
957
  # This avoids adding /opt/csw/bin to PATH.
982
958
  if is_solaris
983
- gem_env = YAML.load( on( host, 'gem environment' ).stdout )
959
+ gem_env = YAML.load(on(host, 'gem environment').stdout)
984
960
  # This is the section we want - this has the dir where gem executables go.
985
961
  env_sect = 'EXECUTABLE DIRECTORY'
986
962
  # Get the directory where 'gem' installs executables.
987
963
  # On Solaris 10 this is usually /opt/csw/bin
988
- gem_exec_dir = gem_env['RubyGems Environment'].find {|h| h[env_sect] != nil }[env_sect]
964
+ gem_exec_dir = gem_env['RubyGems Environment'].find { |h| !h[env_sect].nil? }[env_sect]
989
965
 
990
966
  on host, "ln -s #{gem_exec_dir}/hiera /usr/bin/hiera"
991
967
  on host, "ln -s #{gem_exec_dir}/facter /usr/bin/facter"
@@ -993,15 +969,15 @@ module Beaker
993
969
  end
994
970
 
995
971
  # A gem install might not necessarily create these
996
- ['confdir', 'logdir', 'codedir'].each do |key|
972
+ %w[confdir logdir codedir].each do |key|
997
973
  host.mkdir_p host.puppet[key] if host.puppet.has_key?(key)
998
974
  end
999
975
 
1000
- configure_type_defaults_on( host )
976
+ configure_type_defaults_on(host)
1001
977
  end
1002
978
  end
1003
- alias_method :install_puppet_from_gem, :install_puppet_from_gem_on
1004
- alias_method :install_puppet_agent_from_gem_on, :install_puppet_from_gem_on
979
+ alias install_puppet_from_gem install_puppet_from_gem_on
980
+ alias install_puppet_agent_from_gem_on install_puppet_from_gem_on
1005
981
 
1006
982
  # Install official puppetlabs release repository configuration on host(s).
1007
983
  #
@@ -1010,7 +986,7 @@ module Beaker
1010
986
  #
1011
987
  # @note This method only works on redhat-like and debian-like hosts.
1012
988
  #
1013
- def install_puppetlabs_release_repo_on( hosts, repo = nil, opts = options )
989
+ def install_puppetlabs_release_repo_on(hosts, repo = nil, opts = options)
1014
990
  block_on hosts do |host|
1015
991
  variant, version, arch, codename = host['platform'].to_array
1016
992
  repo_name = repo || opts[:puppet_collection] || 'puppet'
@@ -1018,7 +994,7 @@ module Beaker
1018
994
 
1019
995
  case variant
1020
996
  when /^(fedora|el|redhat|centos|sles|cisco_nexus|cisco_ios_xr)$/
1021
- variant_url_value = ((['redhat','centos'].include?($1)) ? 'el' : $1)
997
+ variant_url_value = (%w[redhat centos].include?(::Regexp.last_match(1)) ? 'el' : ::Regexp.last_match(1))
1022
998
  if variant == 'cisco_nexus'
1023
999
  variant_url_value = 'cisco-wrlinux'
1024
1000
  version = '5'
@@ -1033,11 +1009,10 @@ module Beaker
1033
1009
  else
1034
1010
  opts[:release_yum_repo_url]
1035
1011
  end
1036
- remote = "%s/%s-release-%s-%s.noarch.rpm" %
1037
- [url, repo_name, variant_url_value, version]
1012
+ remote = format('%s/%s-release-%s-%s.noarch.rpm', url, repo_name, variant_url_value, version)
1038
1013
  else
1039
- remote = "%s/%s-release-%s-%s.noarch.rpm" %
1040
- [opts[:release_yum_repo_url], repo_name, variant_url_value, version]
1014
+ remote = format('%s/%s-release-%s-%s.noarch.rpm', opts[:release_yum_repo_url], repo_name,
1015
+ variant_url_value, version)
1041
1016
  end
1042
1017
 
1043
1018
  # sles 11 and later do not handle gpg keys well. We can't
@@ -1055,40 +1030,38 @@ module Beaker
1055
1030
 
1056
1031
  if variant == 'cisco_nexus'
1057
1032
  # cisco nexus requires using yum to install the repo
1058
- host.install_package( remote )
1033
+ host.install_package(remote)
1059
1034
  elsif variant == 'cisco_ios_xr'
1060
1035
  # cisco ios xr requires using yum to localinstall the repo
1061
1036
  on host, "yum -y localinstall #{remote}"
1062
1037
  else
1063
1038
  opts[:package_proxy] ||= false
1064
- host.install_package_with_rpm( remote, '--replacepkgs',
1065
- { :package_proxy => opts[:package_proxy] } )
1039
+ host.install_package_with_rpm(remote, '--replacepkgs',
1040
+ { package_proxy: opts[:package_proxy] })
1066
1041
  end
1067
1042
 
1068
- when /^(debian|ubuntu|cumulus|huaweios)$/
1043
+ when /^(debian|ubuntu|huaweios)$/
1069
1044
  if repo_name.match(/puppet\d*/)
1070
1045
  url = if repo_name.match(/-nightly$/)
1071
1046
  opts[:nightly_apt_repo_url]
1072
1047
  else
1073
1048
  opts[:release_apt_repo_url]
1074
1049
  end
1075
- remote = "%s/%s-release-%s.deb" %
1076
- [url, repo_name, codename]
1050
+ remote = format('%s/%s-release-%s.deb', url, repo_name, codename)
1077
1051
  else
1078
- remote = "%s/%s-release-%s.deb" %
1079
- [opts[:release_apt_repo_url], repo_name, codename]
1052
+ remote = format('%s/%s-release-%s.deb', opts[:release_apt_repo_url], repo_name, codename)
1080
1053
  end
1081
1054
 
1082
1055
  on host, "wget -O /tmp/puppet.deb #{remote}"
1083
- on host, "dpkg -i --force-all /tmp/puppet.deb"
1084
- on host, "apt-get update"
1056
+ on host, 'dpkg -i --force-all /tmp/puppet.deb'
1057
+ on host, 'apt-get update'
1085
1058
  else
1086
1059
  raise "No repository installation step for #{variant} yet..."
1087
1060
  end
1088
- configure_type_defaults_on( host )
1061
+ configure_type_defaults_on(host)
1089
1062
  end
1090
1063
  end
1091
- alias_method :install_puppetlabs_release_repo, :install_puppetlabs_release_repo_on
1064
+ alias install_puppetlabs_release_repo install_puppetlabs_release_repo_on
1092
1065
 
1093
1066
  # Installs the repo configs on a given host
1094
1067
  #
@@ -1100,12 +1073,12 @@ module Beaker
1100
1073
  #
1101
1074
  # @return nil
1102
1075
  def install_repo_configs(host, buildserver_url, package_name, build_version, copy_dir)
1103
- repo_filename = host.repo_filename( package_name, build_version )
1104
- repo_config_folder_url = "%s/%s/%s/repo_configs/%s/" %
1105
- [ buildserver_url, package_name, build_version, host.repo_type ]
1076
+ repo_filename = host.repo_filename(package_name, build_version)
1077
+ repo_config_folder_url = format('%s/%s/%s/repo_configs/%s/', buildserver_url, package_name, build_version,
1078
+ host.repo_type)
1106
1079
 
1107
- repo_config_url = "#{ repo_config_folder_url }/#{ repo_filename }"
1108
- install_repo_configs_from_url( host, repo_config_url, copy_dir )
1080
+ repo_config_url = "#{repo_config_folder_url}/#{repo_filename}"
1081
+ install_repo_configs_from_url(host, repo_config_url, copy_dir)
1109
1082
  end
1110
1083
 
1111
1084
  # Installs the repo configs on a given host
@@ -1117,35 +1090,35 @@ module Beaker
1117
1090
  # @return nil
1118
1091
  def install_repo_configs_from_url(host, repo_config_url, copy_dir = nil)
1119
1092
  copy_dir ||= Dir.mktmpdir
1120
- repoconfig_filename = File.basename( repo_config_url )
1121
- repoconfig_folder = File.dirname( repo_config_url )
1093
+ repoconfig_filename = File.basename(repo_config_url)
1094
+ repoconfig_folder = File.dirname(repo_config_url)
1122
1095
 
1123
1096
  repo = fetch_http_file(
1124
1097
  repoconfig_folder,
1125
1098
  repoconfig_filename,
1126
- copy_dir
1099
+ copy_dir,
1127
1100
  )
1128
1101
 
1129
1102
  if host['platform'].variant =~ /^(ubuntu|debian)$/
1130
1103
  # Bypass signing checks on this repo and its packages
1131
1104
  original_contents = File.read(repo)
1132
- logger.debug "INFO original repo contents:"
1105
+ logger.debug 'INFO original repo contents:'
1133
1106
  logger.debug original_contents
1134
- contents = original_contents.gsub(/^deb http/, "deb [trusted=yes] http")
1135
- logger.debug "INFO new repo contents:"
1107
+ contents = original_contents.gsub(/^deb http/, 'deb [trusted=yes] http')
1108
+ logger.debug 'INFO new repo contents:'
1136
1109
  logger.debug contents
1137
1110
 
1138
1111
  File.write(repo, contents)
1139
1112
  end
1140
1113
 
1141
- if host[:platform] =~ /cisco_nexus/
1142
- to_path = "#{host.package_config_dir}/#{File.basename(repo)}"
1143
- else
1144
- to_path = host.package_config_dir
1145
- end
1146
- scp_to( host, repo, to_path )
1114
+ to_path = if host[:platform] =~ /cisco_nexus/
1115
+ "#{host.package_config_dir}/#{File.basename(repo)}"
1116
+ else
1117
+ host.package_config_dir
1118
+ end
1119
+ scp_to(host, repo, to_path)
1147
1120
 
1148
- on( host, 'apt-get update' ) if host['platform'] =~ /ubuntu-|debian-|cumulus-|huaweios-/
1121
+ on(host, 'apt-get update') if host['platform'] =~ /ubuntu-|debian-|huaweios-/
1149
1122
  nil
1150
1123
  end
1151
1124
 
@@ -1171,13 +1144,14 @@ module Beaker
1171
1144
  #
1172
1145
  # @note This method only works on redhat-like and debian-like hosts.
1173
1146
  #
1174
- def install_puppetlabs_dev_repo ( host, package_name, build_version,
1175
- repo_configs_dir = nil,
1176
- opts = options )
1147
+ def install_puppetlabs_dev_repo(host, package_name, build_version,
1148
+ repo_configs_dir = nil,
1149
+ opts = options)
1177
1150
  variant, version, arch, codename = host['platform'].to_array
1178
- if variant !~ /^(fedora|el|redhat|centos|debian|ubuntu|cumulus|huaweios|cisco_nexus|cisco_ios_xr|sles)$/
1151
+ if variant !~ /^(fedora|el|redhat|centos|debian|ubuntu|huaweios|cisco_nexus|cisco_ios_xr|sles)$/
1179
1152
  raise "No repository installation step for #{variant} yet..."
1180
1153
  end
1154
+
1181
1155
  repo_configs_dir ||= 'tmp/repo_configs'
1182
1156
 
1183
1157
  platform_configs_dir = File.join(repo_configs_dir, variant)
@@ -1186,14 +1160,14 @@ module Beaker
1186
1160
  # some of the uses of dev_builds_url below can't include protocol info,
1187
1161
  # plus this opens up possibility of switching the behavior on provided
1188
1162
  # url type
1189
- _, protocol, hostname = opts[:dev_builds_url].partition /.*:\/\//
1163
+ _, protocol, hostname = opts[:dev_builds_url].partition %r{.*://}
1190
1164
  dev_builds_url = protocol + hostname
1191
1165
  dev_builds_url = opts[:dev_builds_url] if variant =~ /^(fedora|el|redhat|centos)$/
1192
1166
 
1193
- install_repo_configs( host, dev_builds_url, package_name,
1194
- build_version, platform_configs_dir )
1167
+ install_repo_configs(host, dev_builds_url, package_name,
1168
+ build_version, platform_configs_dir)
1195
1169
 
1196
- configure_type_defaults_on( host )
1170
+ configure_type_defaults_on(host)
1197
1171
  end
1198
1172
 
1199
1173
  # Installs packages from the local development repository on the given host
@@ -1206,8 +1180,8 @@ module Beaker
1206
1180
  # @note This method only works on redhat-like and debian-like hosts.
1207
1181
  # @note This method is paired to be run directly after {#install_puppetlabs_dev_repo}
1208
1182
  #
1209
- def install_packages_from_local_dev_repo( host, package_name )
1210
- if host['platform'] =~ /debian|ubuntu|cumulus|huaweios/
1183
+ def install_packages_from_local_dev_repo(host, package_name)
1184
+ if host['platform'] =~ /debian|ubuntu|huaweios/
1211
1185
  find_filename = '*.deb'
1212
1186
  find_command = 'dpkg -i'
1213
1187
  elsif host['platform'] =~ /fedora|el|redhat|centos/
@@ -1218,7 +1192,7 @@ module Beaker
1218
1192
  end
1219
1193
  find_command = "find /root/#{package_name} -type f -name '#{find_filename}' -exec #{find_command} {} \\;"
1220
1194
  on host, find_command
1221
- configure_type_defaults_on( host )
1195
+ configure_type_defaults_on(host)
1222
1196
  end
1223
1197
 
1224
1198
  # Install development repo of the puppet-agent on the given host(s). Downloaded from
@@ -1256,40 +1230,39 @@ module Beaker
1256
1230
  # install_puppet_agent_dev_repo_on(host, { :puppet_agent_sha => 'd3377feaeac173aada3a2c2cedd141eb610960a7', :puppet_agent_version => '1.1.1.225.gd3377fe' })
1257
1231
  #
1258
1232
  # @return nil
1259
- def install_puppet_agent_dev_repo_on( hosts, global_opts )
1260
-
1261
- global_opts[:puppet_agent_version] ||= global_opts[:version] #backward compatability
1262
- if not global_opts[:puppet_agent_version]
1263
- raise "must provide :puppet_agent_version (puppet-agent version) for install_puppet_agent_dev_repo_on"
1233
+ def install_puppet_agent_dev_repo_on(hosts, global_opts)
1234
+ global_opts[:puppet_agent_version] ||= global_opts[:version] # backward compatability
1235
+ unless global_opts[:puppet_agent_version]
1236
+ raise 'must provide :puppet_agent_version (puppet-agent version) for install_puppet_agent_dev_repo_on'
1264
1237
  end
1265
1238
 
1266
1239
  block_on hosts do |host|
1267
1240
  opts = global_opts.dup
1268
1241
 
1269
- # TODO consolidate these values as they serve no purpose from beaker's side
1242
+ # TODO: consolidate these values as they serve no purpose from beaker's side
1270
1243
  # you could provide any values you could to one to the other
1271
1244
  puppet_agent_version = opts[:puppet_agent_sha] || opts[:puppet_agent_version]
1272
1245
 
1273
1246
  opts = sanitize_opts(opts)
1274
- opts[:download_url] = "#{opts[:dev_builds_url]}/puppet-agent/#{ puppet_agent_version }/repos/"
1247
+ opts[:download_url] = "#{opts[:dev_builds_url]}/puppet-agent/#{puppet_agent_version}/repos/"
1275
1248
  opts[:copy_base_local] ||= File.join('tmp', 'repo_configs')
1276
1249
  opts[:puppet_collection] ||= 'PC1'
1277
1250
 
1278
1251
  release_path = opts[:download_url]
1279
1252
 
1280
1253
  variant, version, arch, codename = host['platform'].to_array
1281
- add_role(host, 'aio') #we are installing agent, so we want aio role
1254
+ add_role(host, 'aio') # we are installing agent, so we want aio role
1282
1255
  copy_dir_local = File.join(opts[:copy_base_local], variant)
1283
1256
  onhost_copy_base = opts[:copy_dir_external] || host.external_copy_base
1284
1257
 
1285
1258
  case variant
1286
- when /^(fedora|el|redhat|centos|debian|ubuntu|cumulus|huaweios|cisco_nexus|cisco_ios_xr)$/
1287
- if arch== 's390x' || host['hypervisor'] == 'ec2'
1259
+ when /^(fedora|el|redhat|centos|debian|ubuntu|huaweios|cisco_nexus|cisco_ios_xr)$/
1260
+ if arch == 's390x' || host['hypervisor'] == 'ec2'
1288
1261
  logger.trace("#install_puppet_agent_dev_repo_on: unsupported host #{host} for repo detected. using dev package")
1289
1262
  else
1290
- install_puppetlabs_dev_repo( host, 'puppet-agent', puppet_agent_version, nil, opts )
1263
+ install_puppetlabs_dev_repo(host, 'puppet-agent', puppet_agent_version, nil, opts)
1291
1264
  host.install_package('puppet-agent')
1292
- logger.trace("#install_puppet_agent_dev_repo_on: install_puppetlabs_dev_repo finished")
1265
+ logger.trace('#install_puppet_agent_dev_repo_on: install_puppetlabs_dev_repo finished')
1293
1266
  next
1294
1267
  end
1295
1268
  when /^(eos|osx|windows|solaris|sles|aix)$/
@@ -1301,44 +1274,43 @@ module Beaker
1301
1274
  end
1302
1275
 
1303
1276
  release_path_end, release_file = host.puppet_agent_dev_package_info(
1304
- opts[:puppet_collection], opts[:puppet_agent_version], opts )
1277
+ opts[:puppet_collection], opts[:puppet_agent_version], opts
1278
+ )
1305
1279
  release_path << release_path_end
1306
- logger.trace("#install_puppet_agent_dev_repo_on: dev_package_info, continuing...")
1280
+ logger.trace('#install_puppet_agent_dev_repo_on: dev_package_info, continuing...')
1307
1281
 
1308
1282
  if variant =~ /eos/
1309
- host.get_remote_file( "#{release_path}/#{release_file}" )
1283
+ host.get_remote_file("#{release_path}/#{release_file}")
1310
1284
  else
1311
1285
  onhost_copied_file = File.join(onhost_copy_base, release_file)
1312
- fetch_http_file( release_path, release_file, copy_dir_local)
1286
+ fetch_http_file(release_path, release_file, copy_dir_local)
1313
1287
  scp_to host, File.join(copy_dir_local, release_file), onhost_copy_base
1314
1288
  end
1315
1289
 
1316
1290
  case variant
1317
1291
  when /^eos/
1318
- host.install_from_file( release_file )
1292
+ host.install_from_file(release_file)
1319
1293
  when /^(sles|aix|fedora|el|redhat|centos)$/
1320
1294
  # NOTE: AIX does not support repo management. This block assumes
1321
1295
  # that the desired rpm has been mirrored to the 'repos' location.
1322
1296
  # NOTE: the AIX 7.1 package will only install on 7.2 with
1323
1297
  # --ignoreos. This is a bug in package building on AIX 7.1's RPM
1324
- if variant == "aix" && version == "7.2"
1325
- aix_72_ignoreos_hack = "--ignoreos"
1326
- end
1298
+ aix_72_ignoreos_hack = '--ignoreos' if variant == 'aix' && version == '7.2'
1327
1299
  on host, "rpm -ivh #{aix_72_ignoreos_hack} #{onhost_copied_file}"
1328
1300
  when /^windows$/
1329
1301
  result = on host, "echo #{onhost_copied_file}"
1330
1302
  onhost_copied_file = result.raw_output.chomp
1331
- msi_opts = { :debug => host[:pe_debug] || opts[:pe_debug] }
1303
+ msi_opts = { debug: host[:pe_debug] || opts[:pe_debug] }
1332
1304
  install_msi_on(host, onhost_copied_file, {}, msi_opts)
1333
1305
  when /^osx$/
1334
1306
  host.install_package("puppet-agent-#{opts[:puppet_agent_version]}*")
1335
1307
  when /^solaris$/
1336
- host.solaris_install_local_package( release_file, onhost_copy_base )
1308
+ host.solaris_install_local_package(release_file, onhost_copy_base)
1337
1309
  end
1338
- configure_type_defaults_on( host )
1310
+ configure_type_defaults_on(host)
1339
1311
  end
1340
1312
  end
1341
- alias_method :install_puppetagent_dev_repo, :install_puppet_agent_dev_repo_on
1313
+ alias install_puppetagent_dev_repo install_puppet_agent_dev_repo_on
1342
1314
 
1343
1315
  # Install shared repo of the puppet-agent on the given host(s). Downloaded from
1344
1316
  # location of the form PE_PROMOTED_BUILDS_URL/PE_VER/puppet-agent/AGENT_VERSION/repo
@@ -1364,17 +1336,18 @@ module Beaker
1364
1336
  # install_puppet_agent_pe_promoted_repo_on(host, { :puppet_agent_version => '1.1.0.227', :pe_ver => '4.0.0-rc1'})
1365
1337
  #
1366
1338
  # @return nil
1367
- def install_puppet_agent_pe_promoted_repo_on( hosts, opts )
1339
+ def install_puppet_agent_pe_promoted_repo_on(hosts, opts)
1368
1340
  opts[:puppet_agent_version] ||= 'latest'
1369
1341
 
1370
1342
  block_on hosts do |host|
1371
1343
  pe_ver = host[:pe_ver] || opts[:pe_ver] || '4.0.0-rc1'
1372
1344
  opts = sanitize_opts(opts)
1373
- opts[:download_url] = "#{opts[:pe_promoted_builds_url]}/puppet-agent/#{ pe_ver }/#{ opts[:puppet_agent_version] }/repos"
1345
+ opts[:download_url] =
1346
+ "#{opts[:pe_promoted_builds_url]}/puppet-agent/#{pe_ver}/#{opts[:puppet_agent_version]}/repos"
1374
1347
  opts[:copy_base_local] ||= File.join('tmp', 'repo_configs')
1375
1348
  opts[:copy_dir_external] ||= host.external_copy_base
1376
1349
  opts[:puppet_collection] ||= puppet_collection_for(:puppet_agent, opts[:puppet_agent_version])
1377
- add_role(host, 'aio') #we are installing agent, so we want aio role
1350
+ add_role(host, 'aio') # we are installing agent, so we want aio role
1378
1351
  release_path = opts[:download_url]
1379
1352
  variant, version, arch, codename = host['platform'].to_array
1380
1353
  copy_dir_local = File.join(opts[:copy_base_local], variant)
@@ -1388,13 +1361,13 @@ module Beaker
1388
1361
 
1389
1362
  onhost_copied_download = File.join(onhost_copy_base, download_file)
1390
1363
  onhost_copied_file = File.join(onhost_copy_base, release_file)
1391
- fetch_http_file( release_path, download_file, copy_dir_local)
1364
+ fetch_http_file(release_path, download_file, copy_dir_local)
1392
1365
  scp_to host, File.join(copy_dir_local, download_file), onhost_copy_base
1393
1366
 
1394
1367
  if variant == 'windows'
1395
1368
  result = on host, "echo #{onhost_copied_file}"
1396
1369
  onhost_copied_file = result.raw_output.chomp
1397
- opts = { :debug => host[:pe_debug] || opts[:pe_debug] }
1370
+ opts = { debug: host[:pe_debug] || opts[:pe_debug] }
1398
1371
  # couldn't pull this out, because it's relying on
1399
1372
  # {Beaker::DSL::InstallUtils::WindowsUtils} methods,
1400
1373
  # which I didn't want to attack right now. TODO
@@ -1405,7 +1378,7 @@ module Beaker
1405
1378
  onhost_copied_file, download_file, opts
1406
1379
  )
1407
1380
  end
1408
- configure_type_defaults_on( host )
1381
+ configure_type_defaults_on(host)
1409
1382
  end
1410
1383
  end
1411
1384
 
@@ -1472,9 +1445,7 @@ module Beaker
1472
1445
  host[:type] = :aio
1473
1446
 
1474
1447
  if opts[:version] == 'latest'
1475
- if opts[:nightlies]
1476
- release_stream += '-nightly' unless release_stream.end_with? "-nightly"
1477
- end
1448
+ release_stream += '-nightly' if opts[:nightlies] && !(release_stream.end_with? '-nightly')
1478
1449
 
1479
1450
  # Since we have modified the collection, we don't want to pass `latest`
1480
1451
  # in to `install_package` as the version. That'll fail. Instead, if
@@ -1485,7 +1456,7 @@ module Beaker
1485
1456
 
1486
1457
  # We have to do some silly version munging if we're on a deb-based platform
1487
1458
  case host['platform']
1488
- when /debian|ubuntu|cumulus|huaweios/
1459
+ when /debian|ubuntu|huaweios/
1489
1460
  opts[:version] = "#{opts[:version]}-1#{host['platform'].codename}" if opts[:version]
1490
1461
  end
1491
1462
 
@@ -1502,49 +1473,52 @@ module Beaker
1502
1473
  #
1503
1474
  # @return nil
1504
1475
  # @api public
1505
- def remove_puppet_on( hosts )
1476
+ def remove_puppet_on(hosts)
1506
1477
  block_on hosts do |host|
1507
1478
  cmdline_args = ''
1508
1479
  # query packages
1509
1480
  case host[:platform]
1510
- when /cumulus|huaweios|ubuntu/
1511
- pkgs = on(host, "dpkg-query -l | awk '{print $2}' | grep -E '(^pe-|puppet)'", :acceptable_exit_codes => [0,1]).stdout.chomp.split(/\n+/)
1481
+ when /huaweios|ubuntu/
1482
+ pkgs = on(host, "dpkg-query -l | awk '{print $2}' | grep -E '(^pe-|puppet)'",
1483
+ acceptable_exit_codes: [0, 1]).stdout.chomp.split(/\n+/)
1512
1484
  when /aix|sles|el|redhat|centos|oracle|scientific/
1513
- pkgs = on(host, "rpm -qa | grep -E '(^pe-|puppet)'", :acceptable_exit_codes => [0,1]).stdout.chomp.split(/\n+/)
1485
+ pkgs = on(host, "rpm -qa | grep -E '(^pe-|puppet)'",
1486
+ acceptable_exit_codes: [0, 1]).stdout.chomp.split(/\n+/)
1514
1487
  when /solaris-10/
1515
1488
  cmdline_args = '-a noask'
1516
- pkgs = on(host, "pkginfo | egrep '(^pe-|puppet)' | cut -f2 -d ' '", :acceptable_exit_codes => [0,1]).stdout.chomp.split(/\n+/)
1489
+ pkgs = on(host, "pkginfo | egrep '(^pe-|puppet)' | cut -f2 -d ' '",
1490
+ acceptable_exit_codes: [0, 1]).stdout.chomp.split(/\n+/)
1517
1491
  when /solaris-11/
1518
- pkgs = on(host, "pkg list | egrep '(^pe-|puppet)' | awk '{print $1}'", :acceptable_exit_codes => [0,1]).stdout.chomp.split(/\n+/)
1492
+ pkgs = on(host, "pkg list | egrep '(^pe-|puppet)' | awk '{print $1}'",
1493
+ acceptable_exit_codes: [0, 1]).stdout.chomp.split(/\n+/)
1519
1494
  else
1520
- raise "remove_puppet_on() called for unsupported " +
1495
+ raise 'remove_puppet_on() called for unsupported ' +
1521
1496
  "platform '#{host['platform']}' on '#{host.name}'"
1522
1497
  end
1523
1498
 
1524
1499
  # uninstall packages
1525
1500
  host.uninstall_package(pkgs.join(' '), cmdline_args) if pkgs.length > 0
1526
1501
 
1527
- if host[:platform] =~ /solaris-11/ then
1502
+ if host[:platform] =~ /solaris-11/
1528
1503
  # FIXME: This leaves things in a state where Puppet Enterprise (3.x) cannot be cleanly installed
1529
1504
  # but is required to put things in a state that puppet-agent can be installed
1530
1505
  # extra magic for expunging left over publisher
1531
1506
  publishers = ['puppetlabs.com', 'com.puppetlabs']
1532
1507
  publishers.each do |publisher|
1533
- if on(host, "pkg publisher #{publisher}", :acceptable_exit_codes => [0,1]).exit_code == 0 then
1534
- # First, try to remove the publisher altogether
1535
- if on(host, "pkg unset-publisher #{publisher}", :acceptable_exit_codes => [0,1]).exit_code == 1 then
1536
- # If that doesn't work, we're in a non-global zone and the
1537
- # publisher is from a global zone. As such, just remove any
1538
- # references to the non-global zone uri.
1539
- on(host, "pkg set-publisher -G '*' #{publisher}", :acceptable_exit_codes => [0,1])
1540
- end
1541
- end
1508
+ # First, try to remove the publisher altogether
1509
+ next unless on(host, "pkg publisher #{publisher}",
1510
+ acceptable_exit_codes: [0, 1]).exit_code == 0 && (on(host, "pkg unset-publisher #{publisher}",
1511
+ acceptable_exit_codes: [0, 1]).exit_code == 1)
1512
+
1513
+ # If that doesn't work, we're in a non-global zone and the
1514
+ # publisher is from a global zone. As such, just remove any
1515
+ # references to the non-global zone uri.
1516
+ on(host, "pkg set-publisher -G '*' #{publisher}", acceptable_exit_codes: [0, 1])
1542
1517
  end
1543
1518
  end
1544
1519
 
1545
1520
  # delete any residual files
1546
1521
  on(host, 'find / -name "*puppet*" -print | xargs rm -rf')
1547
-
1548
1522
  end
1549
1523
  end
1550
1524
 
@@ -1562,40 +1536,39 @@ module Beaker
1562
1536
  # @return true
1563
1537
  def install_packages_on(hosts, package_hash, options = {})
1564
1538
  platform_patterns = {
1565
- :redhat => /fedora|el-|centos/,
1566
- :debian => /debian|ubuntu|cumulus/,
1567
- :debian_ruby18 => /debian|ubuntu-lucid|ubuntu-precise/,
1568
- :solaris_10 => /solaris-10/,
1569
- :solaris_11 => /solaris-11/,
1570
- :windows => /windows/,
1571
- :eos => /^eos-/,
1572
- :sles => /sles/,
1539
+ redhat: /fedora|el-|centos/,
1540
+ debian: /debian|ubuntu/,
1541
+ debian_ruby18: /debian|ubuntu-lucid|ubuntu-precise/,
1542
+ solaris_10: /solaris-10/,
1543
+ solaris_11: /solaris-11/,
1544
+ windows: /windows/,
1545
+ eos: /^eos-/,
1546
+ sles: /sles/,
1573
1547
  }.freeze
1574
1548
 
1575
1549
  check_if_exists = options[:check_if_exists]
1576
1550
  Array(hosts).each do |host|
1577
- package_hash.each do |platform_key,package_list|
1578
- if pattern = platform_patterns[platform_key]
1579
- if pattern.match(host['platform'])
1580
- package_list.each do |cmd_pkg|
1581
- if cmd_pkg.kind_of?(Array)
1582
- command, package = cmd_pkg
1583
- else
1584
- command = package = cmd_pkg
1585
- end
1586
- if !check_if_exists || !host.check_for_package(command)
1587
- host.logger.notify("Installing #{package}")
1588
- additional_switches = '--allow-unauthenticated' if platform_key == :debian
1589
- host.install_package(package, additional_switches)
1590
- end
1591
- end
1592
- end
1593
- else
1551
+ package_hash.each do |platform_key, package_list|
1552
+ unless pattern = platform_patterns[platform_key]
1594
1553
  raise("Unknown platform '#{platform_key}' in package_hash")
1595
1554
  end
1555
+ next unless pattern.match(host['platform'])
1556
+
1557
+ package_list.each do |cmd_pkg|
1558
+ if cmd_pkg.is_a?(Array)
1559
+ command, package = cmd_pkg
1560
+ else
1561
+ command = package = cmd_pkg
1562
+ end
1563
+ next unless !check_if_exists || !host.check_for_package(command)
1564
+
1565
+ host.logger.notify("Installing #{package}")
1566
+ additional_switches = '--allow-unauthenticated' if platform_key == :debian
1567
+ host.install_package(package, additional_switches)
1568
+ end
1596
1569
  end
1597
1570
  end
1598
- return true
1571
+ true
1599
1572
  end
1600
1573
 
1601
1574
  def ruby_command(host)
@@ -1603,7 +1576,7 @@ module Beaker
1603
1576
  end
1604
1577
 
1605
1578
  def get_command(command_name, host, type = 'aio')
1606
- if ['aio', 'git'].include?(type)
1579
+ if %w[aio git].include?(type)
1607
1580
  if host['platform'] =~ /windows/
1608
1581
  "env PATH=\"#{host['privatebindir']}:${PATH}\" cmd /c #{command_name}"
1609
1582
  else
@@ -1625,18 +1598,18 @@ module Beaker
1625
1598
  # Configures gem sources on hosts to use a mirror, if specified
1626
1599
  # This is a duplicate of the Gemfile logic.
1627
1600
  def configure_gem_mirror(hosts)
1628
- gem_source = ENV['GEM_SOURCE']
1601
+ gem_source = ENV.fetch('GEM_SOURCE', nil)
1629
1602
 
1630
1603
  # Newer versions of rubygems always default the source to https://rubygems.org
1631
1604
  # and versions >= 3.1 will try to prompt (and fail) if you add a source that is
1632
1605
  # too similar to rubygems.org to prevent typo squatting:
1633
1606
  # https://github.com/rubygems/rubygems/commit/aa967b85dd96bbfb350f104125f23d617e82a00a
1634
- if gem_source && gem_source !~ /rubygems\.org/
1635
- Array(hosts).each do |host|
1636
- gem = gem_command(host)
1637
- on host, "#{gem} source --clear-all"
1638
- on(host, "#{gem} source --add #{gem_source}")
1639
- end
1607
+ return unless gem_source && gem_source !~ /rubygems\.org/
1608
+
1609
+ Array(hosts).each do |host|
1610
+ gem = gem_command(host)
1611
+ on host, "#{gem} source --clear-all"
1612
+ on(host, "#{gem} source --add #{gem_source}")
1640
1613
  end
1641
1614
  end
1642
1615
  end