beaker 2.15.1 → 2.16.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -208,8 +208,9 @@ module Beaker
208
208
  # or a role (String or Symbol) that identifies one or more hosts.
209
209
  # @param [Hash{Symbol=>String}] opts
210
210
  # @option opts [String] :version Version of puppet to download
211
+ # @option opts [String] :puppet_agent_version Version of puppet agent to download
211
212
  # @option opts [String] :mac_download_url Url to download msi pattern of %url%/puppet-%version%.msi
212
- # @option opts [String] :win_download_url Url to download dmg pattern of %url%/(puppet|hiera|facter)-%version%.msi
213
+ # @option opts [String] :win_download_url Url to download dmg pattern of %url%/(puppet|hiera|facter)-%version%.msi
213
214
  #
214
215
  # @return nil
215
216
  # @raise [StandardError] When encountering an unsupported platform by default, or if gem cannot be found when default_action => 'gem_install'
@@ -219,7 +220,8 @@ module Beaker
219
220
 
220
221
  # If version isn't specified assume the latest in the 3.x series
221
222
  if opts[:version] and not version_is_less(opts[:version], '4.0.0')
222
- opts[:version] = opts[:puppet_agent_version]
223
+ # backwards compatability
224
+ opts[:puppet_agent_version] ||= opts[:version]
223
225
  install_puppet_agent_on(hosts, opts)
224
226
 
225
227
  else
@@ -260,8 +262,8 @@ module Beaker
260
262
  #Install Puppet Agent based on specified hosts using provided options
261
263
  # @example will install puppet-agent 1.1.0 from native puppetlabs provided packages wherever possible and will fail over to gem installing latest puppet
262
264
  # install_puppet_agent_on(hosts, {
263
- # :version => '1.1.0',
264
- # :default_action => 'gem_install',
265
+ # :puppet_agent_version => '1.1.0',
266
+ # :default_action => 'gem_install',
265
267
  # })
266
268
  #
267
269
  #
@@ -275,10 +277,10 @@ module Beaker
275
277
  # @param [Host, Array<Host>, String, Symbol] hosts One or more hosts to act upon,
276
278
  # or a role (String or Symbol) that identifies one or more hosts.
277
279
  # @param [Hash{Symbol=>String}] opts
278
- # @option opts [String] :version Version of puppet to download
280
+ # @option opts [String] :puppet_agent_version Version of puppet to download
279
281
  # @option opts [String] :puppet_gem_version Version of puppet to install via gem if no puppet-agent package is available
280
282
  # @option opts [String] :mac_download_url Url to download msi pattern of %url%/puppet-agent-%version%.msi
281
- # @option opts [String] :win_download_url Url to download dmg pattern of %url%/puppet-agent-%version%.msi
283
+ # @option opts [String] :win_download_url Url to download dmg pattern of %url%/puppet-agent-%version%.msi
282
284
  # @option opts [String] :puppet_collection Defaults to 'pc1'
283
285
  #
284
286
  # @return nil
@@ -287,6 +289,10 @@ module Beaker
287
289
  def install_puppet_agent_on(hosts, opts)
288
290
  opts = FOSS_DEFAULT_DOWNLOAD_URLS.merge(opts)
289
291
  opts[:puppet_collection] ||= 'pc1' #hi! i'm case sensitive! be careful!
292
+ opts[:puppet_agent_version] ||= opts[:version] #backwards compatability with old parameter name
293
+ if not opts[:puppet_agent_version]
294
+ raise "must provide :puppet_agent_version (puppet-agent version) for install_puppet_agent_on"
295
+ end
290
296
 
291
297
  block_on hosts do |host|
292
298
  host[:type] = 'aio' #we are installing agent, so we want aio type
@@ -296,15 +302,15 @@ module Beaker
296
302
  logger.warn("install_puppet_agent_on for pe-only platform #{host['platform']} - use install_puppet_agent_pe_promoted_repo_on")
297
303
  when /el-|fedora/
298
304
  install_puppetlabs_release_repo(host, opts[:puppet_collection])
299
- if opts[:version]
300
- host.install_package("puppet-agent-#{opts[:version]}")
305
+ if opts[:puppet_agent_version]
306
+ host.install_package("puppet-agent-#{opts[:puppet_agent_version]}")
301
307
  else
302
308
  host.install_package('puppet-agent')
303
309
  end
304
310
  when /debian|ubuntu|cumulus/
305
311
  install_puppetlabs_release_repo(host, opts[:puppet_collection])
306
- if opts[:version]
307
- host.install_package("puppet-agent=#{opts[:version]}-1#{host['platform'].codename}")
312
+ if opts[:puppet_agent_version]
313
+ host.install_package("puppet-agent=#{opts[:puppet_agent_version]}-1#{host['platform'].codename}")
308
314
  else
309
315
  host.install_package('puppet-agent')
310
316
  end
@@ -522,7 +528,7 @@ module Beaker
522
528
  # @param [Host, Array<Host>, String, Symbol] hosts One or more hosts to act upon,
523
529
  # or a role (String or Symbol) that identifies one or more hosts.
524
530
  # @param [Hash{Symbol=>String}] opts An options hash
525
- # @option opts [String] :version The version of Puppet Agent to install
531
+ # @option opts [String] :puppet_agent_version The version of Puppet Agent to install
526
532
  # @option opts [String] :win_download_url The url to download puppet from
527
533
  #
528
534
  # @note on windows, the +:ruby_arch+ host parameter can determine in addition
@@ -530,13 +536,14 @@ module Beaker
530
536
  def install_puppet_agent_from_msi_on(hosts, opts)
531
537
  block_on hosts do |host|
532
538
 
539
+ host[:type] = 'aio' #we are installing agent, so we want aio type
533
540
  is_config_32 = true == (host['ruby_arch'] == 'x86') || host['install_32'] || opts['install_32']
534
541
  should_install_64bit = host.is_x86_64? && !is_config_32
535
542
  arch = should_install_64bit ? 'x64' : 'x86'
536
543
 
537
544
  # If we don't specify a version install the latest MSI for puppet-agent
538
- if opts[:version]
539
- host['dist'] = "puppet-agent-#{opts[:version]}-#{arch}"
545
+ if opts[:puppet_agent_version]
546
+ host['dist'] = "puppet-agent-#{opts[:puppet_agent_version]}-#{arch}"
540
547
  else
541
548
  host['dist'] = "puppet-agent-#{arch}-latest"
542
549
  end
@@ -585,6 +592,7 @@ module Beaker
585
592
  # or a role (String or Symbol) that identifies one or more hosts.
586
593
  # @param [Hash{Symbol=>String}] opts An options hash
587
594
  # @option opts [String] :version The version of Puppet to install
595
+ # @option opts [String] :puppet_version The version of puppet-agent to install
588
596
  # @option opts [String] :facter_version The version of Facter to install
589
597
  # @option opts [String] :hiera_version The version of Hiera to install
590
598
  # @option opts [String] :mac_download_url Url to download msi pattern of %url%/puppet-%version%.msi
@@ -593,14 +601,14 @@ module Beaker
593
601
  # @api private
594
602
  def install_puppet_from_dmg_on( hosts, opts )
595
603
  block_on hosts do |host|
596
- if opts[:version] && !version_is_less(opts[:version], '4.0.0')
604
+ # install puppet-agent if puppet version > 4.0 OR not puppet version is provided
605
+ if (opts[:version] && !version_is_less(opts[:version], '4.0.0')) || !opts[:version]
597
606
  if opts[:puppet_agent_version].nil?
598
607
  raise "You must specify the version of puppet-agent you " +
599
608
  "want to install if you want to install Puppet 4.0 " +
600
609
  "or greater on OSX"
601
610
  end
602
611
 
603
- opts[:version] = opts[:puppet_agent_version]
604
612
  install_puppet_agent_from_dmg_on(host, opts)
605
613
 
606
614
  else
@@ -626,22 +634,36 @@ module Beaker
626
634
  end
627
635
  alias_method :install_puppet_from_dmg, :install_puppet_from_dmg_on
628
636
 
629
- # Installs Puppet and dependencies from dmg on provided host(s).
637
+ # Installs puppet-agent and dependencies from dmg on provided host(s).
630
638
  #
631
639
  # @param [Host, Array<Host>, String, Symbol] hosts One or more hosts to act upon,
632
640
  # or a role (String or Symbol) that identifies one or more hosts.
633
641
  # @param [Hash{Symbol=>String}] opts An options hash
634
- # @option opts [String] :version The version of Puppet Agent to install
635
- # @option opts [String] :mac_download_url Url to download msi pattern of %url%/puppet-%version%.msi
642
+ # @option opts [String] :puppet_agent_version The version of Puppet Agent to install, defaults to latest
643
+ # @option opts [String] :mac_download_url Url to download msi pattern of %url%/puppet-%version%.dmg
644
+ # @option opts [String] :puppet_collection Defaults to 'PC1'
636
645
  #
637
646
  # @return nil
638
647
  # @api private
639
648
  def install_puppet_agent_from_dmg_on(hosts, opts)
649
+ opts[:puppet_collection] ||= 'PC1'
650
+ opts[:puppet_collection] = opts[:puppet_collection].upcase #needs to be upcase, more lovely consistency
640
651
  block_on hosts do |host|
641
- version = opts[:version] || 'latest'
642
- on host, "curl -O #{opts[:mac_download_url]}/puppet-agent-#{version}.dmg"
643
652
 
644
- host.install_package("puppet-agent-#{version}")
653
+ host[:type] = 'aio' #we are installing agent, so we want aio type
654
+
655
+ variant, version, arch, codename = host['platform'].to_array
656
+ agent_version = opts[:puppet_agent_version] || 'latest'
657
+ pkg_name = "puppet-agent-#{agent_version}*"
658
+ if agent_version == 'latest'
659
+ dmg_name = "puppet-agent-#{agent_version}.dmg"
660
+ on host, "curl -O #{opts[:mac_download_url]}/#{dmg_name}"
661
+ else
662
+ dmg_name = "puppet-agent-#{agent_version}-osx-#{version}-x86_64.dmg"
663
+ on host, "curl -O #{opts[:mac_download_url]}/#{opts[:puppet_collection]}/#{dmg_name}"
664
+ end
665
+
666
+ host.install_package(pkg_name)
645
667
 
646
668
  configure_foss_defaults_on( host )
647
669
  end
@@ -941,12 +963,14 @@ module Beaker
941
963
  end
942
964
 
943
965
  # Install development repo of the puppet-agent on the given host(s). Downloaded from
944
- # location of the form DOWNLOAD_URL/puppet-agent/AGENT_VERSION
966
+ # location of the form DEV_BUILDS_URL/puppet-agent/AGENT_VERSION/repos
945
967
  #
946
968
  # @param [Host, Array<Host>, String, Symbol] hosts One or more hosts to act upon,
947
969
  # or a role (String or Symbol) that identifies one or more hosts.
948
970
  # @param [Hash{Symbol=>String}] opts An options hash
949
- # @option opts [String] :version The version of puppet-agent to install
971
+ # @option opts [String] :puppet_agent_version The version of puppet-agent to install
972
+ # @option opts [String] :puppet_agent_sha The sha of puppet-agent to install, defaults to provided
973
+ # puppet_agent_version
950
974
  # @option opts [String] :copy_base_local Directory where puppet-agent artifact
951
975
  # will be stored locally
952
976
  # (default: 'tmp/repo_configs')
@@ -954,18 +978,35 @@ module Beaker
954
978
  # artifact will be pushed to on the external machine
955
979
  # (default: '/root')
956
980
  # @option opts [String] :puppet_collection Defaults to 'PC1'
957
- # @option opts [String] :download_url Base url to look for build at
981
+ # @option opts [String] :dev_builds_url Base URL to pull artifacts from
982
+ # @option opts [String] :copy_base_local Directory where puppet-agent artifact
983
+ # will be stored locally
984
+ # (default: 'tmp/repo_configs')
985
+ # @option opts [String] :copy_dir_external Directory where puppet-agent
986
+ # artifact will be pushed to on the external machine
987
+ # (default: '/root')
958
988
  #
959
989
  # @note on windows, the +:ruby_arch+ host parameter can determine in addition
960
990
  # to other settings whether the 32 or 64bit install is used
961
991
  #
992
+ # @example
993
+ # install_puppet_agent_dev_repo_on(host, { :puppet_agent_sha => 'd3377feaeac173aada3a2c2cedd141eb610960a7', :puppet_agent_version => '1.1.1.225.gd3377fe' })
994
+ #
962
995
  # @return nil
963
- def install_puppet_agent_repo_on( hosts, opts )
996
+ def install_puppet_agent_dev_repo_on( hosts, opts )
964
997
 
998
+ opts[:puppet_agent_version] ||= opts[:version] #backward compatability
999
+ if not opts[:puppet_agent_version]
1000
+ raise "must provide :puppet_agent_version (puppet-agent version) for install_puppet_agent_dev_repo_on"
1001
+ end
965
1002
  block_on hosts do |host|
1003
+ variant, version, arch, codename = host['platform'].to_array
1004
+ opts = FOSS_DEFAULT_DOWNLOAD_URLS.merge(opts)
1005
+ opts[:download_url] = "#{opts[:dev_builds_url]}/puppet-agent/#{ opts[:puppet_agent_sha] || opts[:puppet_agent_version] }/repos/"
966
1006
  opts[:copy_base_local] ||= File.join('tmp', 'repo_configs')
967
1007
  opts[:copy_dir_external] ||= File.join('/', 'root')
968
1008
  opts[:puppet_collection] ||= 'PC1'
1009
+ host[:type] = 'aio' #we are installing agent, so we want aio type
969
1010
  release_path = opts[:download_url]
970
1011
  variant, version, arch, codename = host['platform'].to_array
971
1012
  copy_dir_local = File.join(opts[:copy_base_local], variant)
@@ -975,10 +1016,13 @@ module Beaker
975
1016
  when /^(fedora|el|centos|sles)$/
976
1017
  variant = ((variant == 'centos') ? 'el' : variant)
977
1018
  release_path << "#{variant}/#{version}/#{opts[:puppet_collection]}/#{arch}"
978
- release_file = "puppet-agent-#{opts[:version]}-1.#{variant}#{version}.#{arch}.rpm"
1019
+ release_file = "puppet-agent-#{opts[:puppet_agent_version]}-1.#{variant}#{version}.#{arch}.rpm"
979
1020
  when /^(debian|ubuntu|cumulus)$/
1021
+ if arch == 'x86_64'
1022
+ arch = 'amd64'
1023
+ end
980
1024
  release_path << "deb/#{codename}/#{opts[:puppet_collection]}"
981
- release_file = "puppet-agent_#{opts[:version]}-1#{codename}_#{arch}.deb"
1025
+ release_file = "puppet-agent_#{opts[:puppet_agent_version]}-1#{codename}_#{arch}.deb"
982
1026
  when /^windows$/
983
1027
  release_path << 'windows'
984
1028
  onhost_copy_base = '`cygpath -smF 35`/'
@@ -989,6 +1033,11 @@ module Beaker
989
1033
  # - we do not have install_32 set globally
990
1034
  arch_suffix = should_install_64bit ? '64' : '86'
991
1035
  release_file = "puppet-agent-x#{arch_suffix}.msi"
1036
+ when /^osx$/
1037
+ onhost_copy_base = File.join('/var', 'root')
1038
+ mac_pkg_name = "puppet-agent-#{opts[:puppet_agent_version]}"
1039
+ release_path << "/apple/#{opts[:puppet_collection]}"
1040
+ release_file = "#{mac_pkg_name}-#{variant}-#{version}-x86_64.dmg"
992
1041
  else
993
1042
  raise "No repository installation step for #{variant} yet..."
994
1043
  end
@@ -1007,10 +1056,13 @@ module Beaker
1007
1056
  result = on host, "echo #{onhost_copied_file}"
1008
1057
  onhost_copied_file = result.raw_output.chomp
1009
1058
  on host, Command.new("start /w #{onhost_copied_file}", [], { :cmdexe => true })
1059
+ when /^osx$/
1060
+ host.install_package("#{mac_pkg_name}*")
1010
1061
  end
1011
- add_aio_defaults_on( host )
1062
+ configure_foss_defaults_on( host )
1012
1063
  end
1013
1064
  end
1065
+ alias_method :install_puppetagent_dev_repo, :install_puppet_agent_dev_repo_on
1014
1066
 
1015
1067
  # Install shared repo of the puppet-agent on the given host(s). Downloaded from
1016
1068
  # location of the form PE_PROMOTED_BUILDS_URL/PE_VER/puppet-agent/AGENT_VERSION/repo
@@ -1018,8 +1070,7 @@ module Beaker
1018
1070
  # @param [Host, Array<Host>, String, Symbol] hosts One or more hosts to act upon,
1019
1071
  # or a role (String or Symbol) that identifies one or more hosts.
1020
1072
  # @param [Hash{Symbol=>String}] opts An options hash
1021
- # @option opts [String] :version The version of puppet-agent to install
1022
- # @option opts [String] :sha The sha of puppet-agent to install
1073
+ # @option opts [String] :puppet_agent_version The version of puppet-agent to install, defaults to 'latest'
1023
1074
  # @option opts [String] :pe_ver The version of PE (will also use host['pe_ver']), defaults to '4.0'
1024
1075
  # @option opts [String] :copy_base_local Directory where puppet-agent artifact
1025
1076
  # will be stored locally
@@ -1034,53 +1085,82 @@ module Beaker
1034
1085
  # to other settings whether the 32 or 64bit install is used
1035
1086
  #
1036
1087
  # @example
1037
- # install_puppet_agent_pe_promoted_repo_on(host, { :sha => '1.1.0.227', :version => '1.1.0.227.g1d8334c', :pe_ver => '4.0.0-rc1'})
1088
+ # install_puppet_agent_pe_promoted_repo_on(host, { :puppet_agent_version => '1.1.0.227', :pe_ver => '4.0.0-rc1'})
1038
1089
  #
1039
1090
  # @return nil
1040
1091
  def install_puppet_agent_pe_promoted_repo_on( hosts, opts )
1092
+ opts[:puppet_agent_version] ||= 'latest'
1041
1093
  block_on hosts do |host|
1042
1094
  pe_ver = host[:pe_ver] || opts[:pe_ver] || '4.0'
1043
1095
  variant, version, arch, codename = host['platform'].to_array
1044
1096
  opts = FOSS_DEFAULT_DOWNLOAD_URLS.merge(opts)
1045
- opts[:download_url] = "#{opts[:pe_promoted_builds_url]}/puppet-agent/#{pe_ver}/#{opts[:sha]}/repos/"
1046
- install_puppet_agent_repo_on( host, opts )
1047
- end
1048
- end
1097
+ opts[:download_url] = "#{opts[:pe_promoted_builds_url]}/puppet-agent/#{ pe_ver }/#{ opts[:puppet_agent_version] }/repos/"
1098
+ opts[:copy_base_local] ||= File.join('tmp', 'repo_configs')
1099
+ opts[:copy_dir_external] ||= File.join('/', 'root')
1100
+ opts[:puppet_collection] ||= 'PC1'
1101
+ host[:type] = 'aio' #we are installing agent, so we want aio type
1102
+ release_path = opts[:download_url]
1103
+ variant, version, arch, codename = host['platform'].to_array
1104
+ copy_dir_local = File.join(opts[:copy_base_local], variant)
1105
+ onhost_copy_base = opts[:copy_dir_external]
1049
1106
 
1107
+ case variant
1108
+ when /^(fedora|el|centos|sles)$/
1109
+ variant = ((variant == 'centos') ? 'el' : variant)
1110
+ release_file = "/repos/#{variant}/#{version}/#{opts[:puppet_collection]}/#{arch}/puppet-agent-*.rpm"
1111
+ download_file = "puppet-agent-#{variant}-#{version}-#{arch}.tar.gz"
1112
+ when /^(debian|ubuntu|cumulus)$/
1113
+ if arch == 'x86_64'
1114
+ arch = 'amd64'
1115
+ end
1116
+ release_file = "/repos/apt/#{codename}/pool/#{opts[:puppet_collection]}/p/puppet-agent/puppet-agent*#{arch}.deb"
1117
+ download_file = "puppet-agent-#{variant}-#{version}-#{arch}.tar.gz"
1118
+ when /^windows$/
1119
+ onhost_copy_base = '`cygpath -smF 35`/'
1120
+ is_config_32 = host['ruby_arch'] == 'x86' || host['install_32'] || opts['install_32']
1121
+ should_install_64bit = host.is_x86_64? && !is_config_32
1122
+ # only install 64bit builds if
1123
+ # - we do not have install_32 set on host
1124
+ # - we do not have install_32 set globally
1125
+ arch_suffix = should_install_64bit ? '64' : '86'
1126
+ release_path += "windows/"
1127
+ release_file = "/puppet-agent-x#{arch_suffix}.msi"
1128
+ download_file = "puppet-agent-x#{arch_suffix}.msi"
1129
+ when /^osx$/
1130
+ onhost_copy_base = File.join('/var', 'root')
1131
+ release_file = "/repos/apple/#{opts[:puppet_collection]}/puppet-agent-*"
1132
+ download_file = "puppet-agent-#{variant}-#{version}.tar.gz"
1133
+ else
1134
+ raise "No pe-promoted installation step for #{variant} yet..."
1135
+ end
1050
1136
 
1051
- # Install development repo of the puppet-agent on the given host(s). Downloaded from
1052
- # location of the form DEV_BUILDS_URL/puppet-agent/AGENT_VERSION/repos
1053
- #
1054
- # @param [Host, Array<Host>, String, Symbol] hosts One or more hosts to act upon,
1055
- # or a role (String or Symbol) that identifies one or more hosts.
1056
- # @param [Hash{Symbol=>String}] opts An options hash
1057
- # @option opts [String] :version The version of puppet-agent to install
1058
- # @option opts [String] :sha The sha of puppet-agent to install
1059
- # @option opts [String] :copy_base_local Directory where puppet-agent artifact
1060
- # will be stored locally
1061
- # (default: 'tmp/repo_configs')
1062
- # @option opts [String] :copy_dir_external Directory where puppet-agent
1063
- # artifact will be pushed to on the external machine
1064
- # (default: '/root')
1065
- # @option opts [String] :puppet_collection Defaults to 'PC1'
1066
- # @option opts [String] :dev_builds_url Base URL to pull artifacts from
1067
- #
1068
- # @note on windows, the +:ruby_arch+ host parameter can determine in addition
1069
- # to other settings whether the 32 or 64bit install is used
1070
- #
1071
- # @example
1072
- # install_puppet_agent_dev_repo_on(host, { :sha => 'd3377feaeac173aada3a2c2cedd141eb610960a7', :version => '1.1.1.225.gd3377fe' })
1073
- #
1074
- # @return nil
1075
- def install_puppet_agent_dev_repo_on( hosts, opts )
1076
- block_on hosts do |host|
1077
- variant, version, arch, codename = host['platform'].to_array
1078
- opts = FOSS_DEFAULT_DOWNLOAD_URLS.merge(opts)
1079
- opts[:download_url] = "#{opts[:dev_builds_url]}/puppet-agent/#{opts[:sha]}/repos/"
1080
- install_puppet_agent_repo_on( host, opts )
1137
+ onhost_copied_download = File.join(onhost_copy_base, download_file)
1138
+ onhost_copied_file = File.join(onhost_copy_base, release_file)
1139
+ fetch_http_file( release_path, download_file, copy_dir_local)
1140
+ scp_to host, File.join(copy_dir_local, download_file), onhost_copy_base
1141
+
1142
+ case variant
1143
+ when /^(fedora|el|centos|sles)$/
1144
+ on host, "tar -zxvf #{onhost_copied_download} -C #{onhost_copy_base}"
1145
+ on host, "rpm -ivh #{onhost_copied_file}"
1146
+ when /^(debian|ubuntu|cumulus)$/
1147
+ on host, "tar -zxvf #{onhost_copied_download} -C #{onhost_copy_base}"
1148
+ on host, "dpkg -i --force-all #{onhost_copied_file}"
1149
+ on host, "apt-get update"
1150
+ when /^windows$/
1151
+ result = on host, "echo #{onhost_copied_file}"
1152
+ onhost_copied_file = result.raw_output.chomp
1153
+ on host, Command.new("start /w #{onhost_copied_file}", [], { :cmdexe => true })
1154
+ when /^osx$/
1155
+ on host, "tar -zxvf #{onhost_copied_download} -C #{onhost_copy_base}"
1156
+ # move to better location
1157
+ on host, "mv #{onhost_copied_file}.dmg ."
1158
+ host.install_package("puppet-agent-*")
1159
+ end
1160
+ configure_foss_defaults_on( host )
1081
1161
  end
1082
1162
  end
1083
- alias_method :install_puppetagent_dev_repo, :install_puppet_agent_dev_repo_on
1163
+
1084
1164
 
1085
1165
  # This method will install a pem file certifcate on a windows host
1086
1166
  #
@@ -415,7 +415,10 @@ module Beaker
415
415
  install_hosts.each do |host|
416
416
  if agent_only_check_needed && hosts_agent_only.include?(host)
417
417
  host['type'] = 'aio'
418
- install_puppet_agent_pe_promoted_repo_on(host, opts)
418
+ install_puppet_agent_pe_promoted_repo_on(host, { :puppet_agent_version => opts[:puppet_agent_version],
419
+ :puppet_agent_sha => opts[:puppet_agent_sha],
420
+ :pe_ver => opts[:pe_ver],
421
+ :puppet_collection => opts[:puppet_collection] })
419
422
  setup_defaults_and_config_helper_on(host, master, [0, 1])
420
423
  elsif host['platform'] =~ /windows/
421
424
  on host, installer_cmd(host, opts)
@@ -542,11 +545,12 @@ module Beaker
542
545
  # @param [Host, Array<Host>, String, Symbol] hosts One or more hosts to act upon,
543
546
  # or a role (String or Symbol) that identifies one or more hosts.
544
547
  # @!macro common_opts
545
- # @option opts [String] :sha The sha of puppet-agent to install. Required for PE agent
546
- # only hosts on 4.0+
547
- # @option opts [String] :version Version of puppet-agent to install. Required for PE agent
548
+ # @option opts [String] :puppet_agent_version Version of puppet-agent to install. Required for PE agent
548
549
  # only hosts on 4.0+
550
+ # @option opts [String] :puppet_agent_sha The sha of puppet-agent to install, defaults to puppet-agent-version.
551
+ # Required for PE agent only hosts on 4.0+
549
552
  # @option opts [String] :pe_ver The version of PE (will also use host['pe_ver']), defaults to '4.0'
553
+ # @option opts [String] :puppet_collection The puppet collection for puppet-agent install.
550
554
  #
551
555
  # @example
552
556
  # install_pe_on(hosts, {})
@@ -400,22 +400,28 @@ module Beaker
400
400
 
401
401
  Rsync.host = hostname_with_user
402
402
 
403
- if ssh_opts.has_key?('keys') and
404
- ssh_opts.has_key?('auth_methods') and
405
- ssh_opts['auth_methods'].include?('publickey')
403
+ # vagrant uses temporary ssh configs in order to use dynamic keys
404
+ # without this config option using ssh may prompt for password
405
+ if ssh_opts[:config] and File.exists?(ssh_opts[:config])
406
+ ssh_args << "-F #{ssh_opts[:config]}"
407
+ else
408
+ if ssh_opts.has_key?('keys') and
409
+ ssh_opts.has_key?('auth_methods') and
410
+ ssh_opts['auth_methods'].include?('publickey')
406
411
 
407
- key = ssh_opts['keys']
412
+ key = ssh_opts['keys']
408
413
 
409
- # If an array was set, then we use the first value
410
- if key.is_a? Array
411
- key = key.first
412
- end
414
+ # If an array was set, then we use the first value
415
+ if key.is_a? Array
416
+ key = key.first
417
+ end
413
418
 
414
- # We need to expand tilde manually as rsync can be
415
- # funny sometimes
416
- key = File.expand_path(key)
419
+ # We need to expand tilde manually as rsync can be
420
+ # funny sometimes
421
+ key = File.expand_path(key)
417
422
 
418
- ssh_args << "-i #{key}"
423
+ ssh_args << "-i #{key}"
424
+ end
419
425
  end
420
426
 
421
427
  if ssh_opts.has_key?(:port)