beaker 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +8 -8
  2. data/HISTORY.md +366 -2
  3. data/ext/completion/beaker-completion.bash +1 -1
  4. data/lib/beaker.rb +1 -1
  5. data/lib/beaker/answers.rb +3 -1
  6. data/lib/beaker/answers/version40.rb +42 -0
  7. data/lib/beaker/cli.rb +0 -2
  8. data/lib/beaker/command.rb +10 -2
  9. data/lib/beaker/dsl/ezbake_utils.rb +195 -157
  10. data/lib/beaker/dsl/helpers.rb +9 -6
  11. data/lib/beaker/dsl/install_utils.rb +22 -8
  12. data/lib/beaker/dsl/structure.rb +67 -0
  13. data/lib/beaker/host.rb +14 -4
  14. data/lib/beaker/host/mac.rb +4 -0
  15. data/lib/beaker/host/pswindows.rb +79 -0
  16. data/lib/beaker/host/pswindows/exec.rb +29 -0
  17. data/lib/beaker/host/pswindows/file.rb +15 -0
  18. data/lib/beaker/host/pswindows/group.rb +36 -0
  19. data/lib/beaker/host/pswindows/pkg.rb +47 -0
  20. data/lib/beaker/host/pswindows/user.rb +32 -0
  21. data/lib/beaker/host/unix.rb +16 -6
  22. data/lib/beaker/host/windows.rb +6 -2
  23. data/lib/beaker/host_prebuilt_steps.rb +2 -0
  24. data/lib/beaker/hypervisor.rb +3 -1
  25. data/lib/beaker/hypervisor/aws_sdk.rb +6 -1
  26. data/lib/beaker/hypervisor/docker.rb +6 -1
  27. data/lib/beaker/hypervisor/vagrant.rb +1 -1
  28. data/lib/beaker/hypervisor/vagrant_parallels.rb +18 -0
  29. data/lib/beaker/logger.rb +8 -1
  30. data/lib/beaker/logger_junit.rb +157 -0
  31. data/lib/beaker/network_manager.rb +28 -0
  32. data/lib/beaker/options/presets.rb +6 -0
  33. data/lib/beaker/test_suite.rb +65 -136
  34. data/lib/beaker/version.rb +1 -1
  35. data/spec/beaker/answers_spec.rb +74 -0
  36. data/spec/beaker/dsl/ezbake_utils_spec.rb +167 -126
  37. data/spec/beaker/dsl/install_utils_spec.rb +5 -4
  38. data/spec/beaker/dsl/structure_spec.rb +28 -1
  39. data/spec/beaker/host_prebuilt_steps_spec.rb +2 -1
  40. data/spec/beaker/host_spec.rb +1 -7
  41. data/spec/beaker/hypervisor/docker_spec.rb +19 -1
  42. data/spec/beaker/hypervisor/vagrant_parallels_spec.rb +44 -0
  43. data/spec/beaker/logger_junit_spec.rb +93 -0
  44. data/spec/beaker/network_manager_spec.rb +52 -0
  45. metadata +14 -2
@@ -26,7 +26,7 @@ module Beaker
26
26
  GitHubSig = 'github.com,207.97.227.239 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ=='
27
27
 
28
28
  # The directories in the module directory that will not be scp-ed to the test system when using `copy_module_to`
29
- PUPPET_MODULE_INSTALL_IGNORE = ['.bundle', '.git', '.idea', '.vagrant', '.vendor', 'vendor', 'acceptance', 'spec', 'tests', 'log']
29
+ PUPPET_MODULE_INSTALL_IGNORE = ['.bundle', '.git', '.idea', '.vagrant', '.vendor', 'vendor', 'acceptance', 'bundle', 'spec', 'tests', 'log']
30
30
 
31
31
  # @param [String] uri A uri in the format of <git uri>#<revision>
32
32
  # the `git://`, `http://`, `https://`, and ssh
@@ -805,14 +805,28 @@ module Beaker
805
805
  if not link_exists?( link )
806
806
  raise "Puppet #{version} at #{link} does not exist!"
807
807
  end
808
- on host, "curl -O #{link}"
809
- on host, "msiexec /qn /i #{host['dist']}.msi"
810
808
 
811
- #Because the msi installer doesn't add Puppet to the environment path
812
- #Add both potential paths for simplicity
813
- #NOTE - this is unnecessary if the host has been correctly identified as 'foss' during set up
814
- puppetbin_path = "\"/cygdrive/c/Program Files (x86)/Puppet Labs/Puppet/bin\":\"/cygdrive/c/Program Files/Puppet Labs/Puppet/bin\""
815
- on host, %Q{ echo 'export PATH=$PATH:#{puppetbin_path}' > /etc/bash.bashrc }
809
+ if host['is_cygwin'].nil? or host['is_cygwin'] == true
810
+ dest = "/cygdrive/c/Windows/Temp/#{host['dist']}.msi"
811
+ on host, "curl -O #{dest} #{link}"
812
+
813
+ #Because the msi installer doesn't add Puppet to the environment path
814
+ #Add both potential paths for simplicity
815
+ #NOTE - this is unnecessary if the host has been correctly identified as 'foss' during set up
816
+ puppetbin_path = "\"/cygdrive/c/Program Files (x86)/Puppet Labs/Puppet/bin\":\"/cygdrive/c/Program Files/Puppet Labs/Puppet/bin\""
817
+ on host, %Q{ echo 'export PATH=$PATH:#{puppetbin_path}' > /etc/bash.bashrc }
818
+ else
819
+ dest = "C:\\Windows\\Temp\\#{host['dist']}.msi"
820
+
821
+ on host, "set PATH=\"%PATH%;#{host['puppetbindir']}\""
822
+ on host, "setx PATH \"%PATH%;#{host['puppetbindir']}\""
823
+
824
+ on host, powershell("$webclient = New-Object System.Net.WebClient; $webclient.DownloadFile('#{link}','#{dest}')")
825
+
826
+ on host, "if not exist #{host['distmoduledir']} (md #{host['distmoduledir']})"
827
+ end
828
+
829
+ on host, "msiexec /qn /i #{dest}"
816
830
  end
817
831
 
818
832
  # Installs Puppet and dependencies from dmg
@@ -1,3 +1,4 @@
1
+ require 'beaker/dsl/assertions'
1
2
  module Beaker
2
3
  module DSL
3
4
  # These are simple structural elements necessary for writing
@@ -22,6 +23,11 @@ module Beaker
22
23
  # step 'Test the things' do
23
24
  # ...tests...
24
25
  # end
26
+ #
27
+ # step 'Expect this to fail' do
28
+ # expect_failure('expected to fail due to PE-1234') do
29
+ # assert_equal(400, response.code, 'bad response code from API call')
30
+ # end
25
31
  # end
26
32
  #
27
33
  module Structure
@@ -55,9 +61,70 @@ module Beaker
55
61
  # on(master, puppet_resource('file', '/etc/puppet/modules',
56
62
  # 'ensure=absent', 'purge=true'))
57
63
  # end
64
+ # @api dsl
58
65
  def teardown &block
59
66
  @teardown_procs << block
60
67
  end
68
+
69
+ # Wrap an assert that is supposed to fail due to a product bug, an
70
+ # undelivered feature, or some similar situation.
71
+ #
72
+ # This converts failing asserts into passing asserts (so we can continue to
73
+ # run the test even though there are underlying product bugs), and converts
74
+ # passing asserts into failing asserts (so we know when the underlying product
75
+ # bug has been fixed).
76
+ #
77
+ # Pass an assert as a code block, and pass an explanatory message as a
78
+ # parameter. The assert's logic will be inverted (so passes turn into fails
79
+ # and fails turn into passes).
80
+ #
81
+ # @example Typical usage
82
+ # expect_failure('expected to fail due to PE-1234') do
83
+ # assert_equal(400, response.code, 'bad response code from API call')
84
+ # end
85
+ #
86
+ # @example Output when a product bug would normally cause the assert to fail
87
+ # Warning: An assertion was expected to fail, and did.
88
+ # This is probably due to a known product bug, and is probably not a problem.
89
+ # Additional info: 'expected to fail due to PE-6995'
90
+ # Failed assertion: 'bad response code from API call.
91
+ # <400> expected but was <409>.'
92
+ #
93
+ # @example Output when the product bug has been fixed
94
+ # <RuntimeError: An assertion was expected to fail, but passed.
95
+ # This is probably because a product bug was fixed, and "expect_failure()"
96
+ # needs to be removed from this assert.
97
+ # Additional info: 'expected to fail due to PE-6996'>
98
+ #
99
+ # @param [String] explanation A description of why this assert is expected to
100
+ # fail
101
+ # @param block [Proc] block of code is expected to either raise an
102
+ # {Beaker::Assertions} or else return a value that
103
+ # will be ignored
104
+ # @raise [RuntimeError] if the code block passed to this method does not raise
105
+ # a {Beaker::Assertions} (i.e., if the assert
106
+ # passes)
107
+ # @author Chris Cowell-Shah (<tt>ccs@puppetlabs.com</tt>)
108
+ # @api dsl
109
+ def expect_failure(explanation, &block)
110
+ begin
111
+ yield if block_given? # code block should contain an assert that you expect to fail
112
+ rescue Beaker::DSL::Assertions, Minitest::Assertion => failed_assertion
113
+ # Yay! The assert in the code block failed, as expected.
114
+ # Swallow the failure so the test passes.
115
+ logger.notify 'An assertion was expected to fail, and did. ' +
116
+ 'This is probably due to a known product bug, ' +
117
+ 'and is probably not a problem. ' +
118
+ "Additional info: '#{explanation}' " +
119
+ "Failed assertion: '#{failed_assertion}'"
120
+ return
121
+ end
122
+ # Uh-oh! The assert in the code block unexpectedly passed.
123
+ fail('An assertion was expected to fail, but passed. ' +
124
+ 'This is probably because a product bug was fixed, and ' +
125
+ '"expect_failure()" needs to be removed from this test. ' +
126
+ "Additional info: '#{explanation}'")
127
+ end
61
128
  end
62
129
  end
63
130
  end
data/lib/beaker/host.rb CHANGED
@@ -28,7 +28,12 @@ module Beaker
28
28
  def self.create name, options
29
29
  case options['HOSTS'][name]['platform']
30
30
  when /windows/
31
- Windows::Host.new name, options
31
+ cygwin = options['HOSTS'][name]['is_cygwin']
32
+ if cygwin.nil? or cygwin == true
33
+ Windows::Host.new name, options
34
+ else
35
+ PSWindows::Host.new name, options
36
+ end
32
37
  when /aix/
33
38
  Aix::Host.new name, options
34
39
  when /osx/
@@ -49,7 +54,6 @@ module Beaker
49
54
  # related through 'type' and the differences between the assumption of our two
50
55
  # configurations we have for many of our products
51
56
  type = @options.get_type
52
- type = :foss if type == :aio && !@options['HOSTS'][@name]['roles'].include?('agent')
53
57
  @defaults = merge_defaults_for_type @options, type
54
58
  pkg_initialize
55
59
  end
@@ -295,7 +299,13 @@ module Beaker
295
299
  # @param [String] dir The directory structure to create on the host
296
300
  # @return [Boolean] True, if directory construction succeeded, otherwise False
297
301
  def mkdir_p dir
298
- result = exec(Beaker::Command.new("mkdir -p #{dir}"), :acceptable_exit_codes => [0, 1])
302
+ if host['is_cygwin'].nil? or host['is_cygwin'] == true
303
+ cmd = "mkdir -p #{dir}"
304
+ else
305
+ cmd = "if not exist #{dir.gsub!('/','\\')} (md #{dir.gsub!('/','\\')})"
306
+ end
307
+
308
+ result = exec(Beaker::Command.new(cmd), :acceptable_exit_codes => [0, 1])
299
309
  result.exit_code == 0
300
310
  end
301
311
 
@@ -381,7 +391,7 @@ module Beaker
381
391
 
382
392
  end
383
393
 
384
- [ 'windows', 'unix', 'aix', 'mac' ].each do |lib|
394
+ [ 'windows', 'pswindows', 'unix', 'aix', 'mac' ].each do |lib|
385
395
  require "beaker/host/#{lib}"
386
396
  end
387
397
  end
@@ -25,6 +25,8 @@ module Mac
25
25
  'puppetserver-confdir' => '/etc/puppetlabs/puppetserver/conf.d',
26
26
  'puppetservice' => 'pe-httpd',
27
27
  'puppetpath' => '/etc/puppetlabs/puppet',
28
+ 'puppetconfdir' => '/etc/puppetlabs/puppet',
29
+ 'puppetcodedir' => '/etc/puppetlabs/puppet',
28
30
  'puppetbin' => '/opt/puppet/bin/puppet',
29
31
  'puppetbindir' => '/opt/puppet/bin',
30
32
  'puppetsbindir' => '/opt/puppet/sbin',
@@ -45,6 +47,8 @@ module Mac
45
47
  'puppetserver-confdir' => '/etc/puppetserver/conf.d',
46
48
  'puppetservice' => 'puppetmaster',
47
49
  'puppetpath' => '/etc/puppet',
50
+ 'puppetconfdir' => '/etc/puppet',
51
+ 'puppetcodedir' => '/etc/puppet',
48
52
  'puppetvardir' => '/var/lib/puppet',
49
53
  'puppetbin' => '/usr/bin/puppet',
50
54
  'puppetbindir' => '/usr/bin',
@@ -0,0 +1,79 @@
1
+ [ 'host', 'command_factory', 'command', 'options' ].each do |lib|
2
+ require "beaker/#{lib}"
3
+ end
4
+
5
+ module PSWindows
6
+ class Host < Beaker::Host
7
+ [ 'user', 'group', 'exec', 'pkg', 'file' ].each do |lib|
8
+ require "beaker/host/pswindows/#{lib}"
9
+ end
10
+
11
+ include PSWindows::User
12
+ include PSWindows::Group
13
+ include PSWindows::File
14
+ include PSWindows::Exec
15
+ include PSWindows::Pkg
16
+
17
+ def self.pe_defaults
18
+ h = Beaker::Options::OptionsHash.new
19
+ h.merge({
20
+ 'user' => 'Administrator',
21
+ 'group' => 'Administrators',
22
+ 'distmoduledir' => 'C:\\ProgramData\\PuppetLabs\\puppet\\etc\\modules',
23
+ 'sitemoduledir' => 'C:\\usr\\share\\puppet\\modules',
24
+ 'puppetservice' => 'pe-httpd',
25
+ 'pathseparator' => ';',
26
+ 'puppetpath' => 'C:\\ProgramData\\PuppetLabs\\puppet\\etc',
27
+ 'puppetconfdir' => 'C:\\ProgramData\\PuppetLabs\\puppet\\etc',
28
+ 'puppetcodedir' => 'C:\\ProgramData\\PuppetLabs\\puppet\\etc',
29
+ 'hieraconf' => 'C:\\ProgramData\\PuppetLabs\\puppet\\etc\\hiera.yaml',
30
+ 'puppetvardir' => 'C:\\ProgramData\\PuppetLabs\\puppet\\var',
31
+ })
32
+
33
+ if platform.include?('amd64')
34
+ h.merge({
35
+ 'puppetbindir' => 'C:\\Program Files (x86)\\PuppetLabs\\Puppet Enterprise\\bin'
36
+ })
37
+ else
38
+ h.merge({
39
+ 'puppetbindir' => 'C:\\Program Files\\PuppetLabs\\Puppet Enterprise\\bin'
40
+ })
41
+ end
42
+ end
43
+
44
+ def self.foss_defaults
45
+ h = Beaker::Options::OptionsHash.new
46
+ h.merge({
47
+ 'user' => 'Administrator',
48
+ 'group' => 'Administrators',
49
+ 'distmoduledir' => 'C:\\ProgramData\\PuppetLabs\\puppet\\etc\\modules',
50
+ 'sitemoduledir' => 'C:\\usr\\share\\puppet\\modules',
51
+ 'hieralibdir' => 'C:\\opt\\puppet-git-repos\\hiera\\lib',
52
+ 'hierapuppetlibdir' => 'C:\\opt\\puppet-git-repos\\hiera-puppet\\lib',
53
+ 'hierabindir' => 'C:\\opt\\puppet-git-repos\\hiera\\bin',
54
+ 'pathseparator' => ';'
55
+ })
56
+
57
+ if h['platform'] && h['platform'].include?('amd64')
58
+ h.merge({
59
+ 'puppetpath' => "C:\\Program Files (x86)\\Puppet Labs\\Puppet\\etc",
60
+ 'puppetconfdir' => "C:\\Program Files (x86)\\Puppet Labs\\Puppet\\etc",
61
+ 'puppetcodedir' => "C:\\Program Files (x86)\\Puppet Labs\\Puppet\\etc",
62
+ 'hieraconf' => "C:\\Program Files (x86)\\Puppet Labs\\Puppet\\etc\\hiera.yaml",
63
+ 'puppetvardir' => 'C:\\Program Files (x86)\\Puppet Labs\\Puppet\\var',
64
+ 'puppetbindir' => "C:\\Program Files (x86)\\Puppet Labs\\Puppet\\bin"
65
+ })
66
+ else
67
+ h.merge({
68
+ 'puppetpath' => "C:\\Program Files\\Puppet Labs\\Puppet\\etc",
69
+ 'puppetconfdir' => "C:\\Program Files\\Puppet Labs\\Puppet\\etc",
70
+ 'puppetcodedir' => "C:\\Program Files\\Puppet Labs\\Puppet\\etc",
71
+ 'hieraconf' => "C:\\Program Files\\Puppet Labs\\Puppet\\etc\\hiera.yaml",
72
+ 'puppetvardir' => 'C:\\Program Files\\Puppet Labs\\Puppet\\var',
73
+ 'puppetbindir' => "C:\\Program Files\\Puppet Labs\\Puppet\\bin"
74
+ })
75
+ end
76
+
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,29 @@
1
+ module PSWindows::Exec
2
+ include Beaker::CommandFactory
3
+
4
+ ABS_CMD = 'c:\\\\windows\\\\system32\\\\cmd.exe'
5
+ CMD = 'cmd.exe'
6
+
7
+ def echo(msg, abs=true)
8
+ (abs ? ABS_CMD : CMD) + " /c echo #{msg}"
9
+ end
10
+
11
+ def touch(file, abs=true)
12
+ (abs ? ABS_CMD : CMD) + " /c echo. 2> #{file}"
13
+ end
14
+
15
+ def path
16
+ 'c:/windows/system32;c:/windows'
17
+ end
18
+
19
+ def get_ip
20
+ ip = execute("for /f \"tokens=14\" %f in ('ipconfig ^| find \"IP Address\"') do @echo %f").strip
21
+ if ip == ''
22
+ ip = execute("for /f \"tokens=14\" %f in ('ipconfig ^| find \"IPv4 Address\"') do @echo %f").strip
23
+ end
24
+ if ip == ''
25
+ ip = execute("for /f \"tokens=14\" %f in ('ipconfig ^| find \"IPv6 Address\"') do @echo %f").strip
26
+ end
27
+ ip
28
+ end
29
+ end
@@ -0,0 +1,15 @@
1
+ module PSWindows::File
2
+ include Beaker::CommandFactory
3
+
4
+ def tmpfile(name)
5
+ execute("echo C:\\Windows\\Temp\\#{name}.XXXXXX")
6
+ end
7
+
8
+ def tmpdir(name)
9
+ execute("echo C:\\Windows\\Temp\\#{name}.XXXXXX")
10
+ end
11
+
12
+ def path_split(paths)
13
+ paths.split(';')
14
+ end
15
+ end
@@ -0,0 +1,36 @@
1
+ module PSWindows::Group
2
+ include Beaker::CommandFactory
3
+
4
+ def group_list(&block)
5
+ execute('cmd /c echo "" | wmic group where localaccount="true" get name /format:value') do |result|
6
+ groups = []
7
+ result.stdout.each_line do |line|
8
+ groups << (line.match(/^Name=(.+)$/) or next)[1]
9
+ end
10
+
11
+ yield result if block_given?
12
+
13
+ groups
14
+ end
15
+ end
16
+
17
+ def group_get(name, &block)
18
+ execute("net localgroup \"#{name}\"") do |result|
19
+ fail_test "failed to get group #{name}" unless result.stdout =~ /^Alias name\s+#{name}/
20
+
21
+ yield result if block_given?
22
+ end
23
+ end
24
+
25
+ def group_gid(name)
26
+ raise NotImplementedError, "Can't retrieve group gid on a Windows host"
27
+ end
28
+
29
+ def group_present(name, &block)
30
+ execute("net localgroup /add \"#{name}\"", {:acceptable_exit_codes => [0,2]}, &block)
31
+ end
32
+
33
+ def group_absent(name, &block)
34
+ execute("net localgroup /delete \"#{name}\"", {:acceptable_exit_codes => [0,2]}, &block)
35
+ end
36
+ end
@@ -0,0 +1,47 @@
1
+ module PSWindows::Pkg
2
+ include Beaker::CommandFactory
3
+
4
+ def check_for_command(name)
5
+ result = exec(Beaker::Command.new("where #{name}"), :acceptable_exit_codes => (0...127))
6
+ result.exit_code == 0
7
+ end
8
+
9
+ def check_for_package(name)
10
+ raise "Cannot check for package #{name} on #{self}"
11
+ end
12
+
13
+ def install_package(name, cmdline_args = '')
14
+ raise "Package #{name} cannot be installed on #{self}"
15
+ end
16
+
17
+ def uninstall_package(name, cmdline_args = '')
18
+ raise "Package #{name} cannot be uninstalled on #{self}"
19
+ end
20
+
21
+ private
22
+
23
+ # @api private
24
+ def identify_windows_architecture
25
+ arch = nil
26
+ execute("echo '' | wmic os get osarchitecture",
27
+ :acceptable_exit_codes => (0...127)) do |result|
28
+
29
+ arch = if result.exit_code == 0
30
+ result.stdout =~ /64/ ? '64' : '32'
31
+ else
32
+ identify_windows_architecture_from_os_name_for_win2003
33
+ end
34
+ end
35
+ arch
36
+ end
37
+
38
+ # @api private
39
+ def identify_windows_architecture_from_os_name_for_win2003
40
+ arch = nil
41
+ execute("echo '' | wmic os get name | grep x64",
42
+ :acceptable_exit_codes => (0...127)) do |result|
43
+ arch = result.exit_code == 0 ? '64' : '32'
44
+ end
45
+ arch
46
+ end
47
+ end
@@ -0,0 +1,32 @@
1
+ module PSWindows::User
2
+ include Beaker::CommandFactory
3
+
4
+ def user_list(&block)
5
+ execute('cmd /c echo "" | wmic useraccount where localaccount="true" get name /format:value') do |result|
6
+ users = []
7
+ result.stdout.each_line do |line|
8
+ users << (line.match(/^Name=([\w ]+)/) or next)[1]
9
+ end
10
+
11
+ yield result if block_given?
12
+
13
+ users
14
+ end
15
+ end
16
+
17
+ def user_get(name, &block)
18
+ execute("net user \"#{name}\"") do |result|
19
+ fail_test "failed to get user #{name}" unless result.stdout =~ /^User name\s+#{name}/
20
+
21
+ yield result if block_given?
22
+ end
23
+ end
24
+
25
+ def user_present(name, &block)
26
+ execute("net user /add \"#{name}\"", {:acceptable_exit_codes => [0,2]}, &block)
27
+ end
28
+
29
+ def user_absent(name, &block)
30
+ execute("net user /delete \"#{name}\"", {:acceptable_exit_codes => [0,2]}, &block)
31
+ end
32
+ end
@@ -22,9 +22,11 @@ module Unix
22
22
  'puppetserver-confdir' => '/etc/puppetlabs/puppetserver/conf.d',
23
23
  'puppetservice' => 'pe-httpd',
24
24
  'puppetpath' => '/etc/puppetlabs/puppet',
25
+ 'puppetconfdir' => '/etc/puppetlabs/puppet',
25
26
  'puppetbin' => '/opt/puppet/bin/puppet',
26
27
  'puppetbindir' => '/opt/puppet/bin',
27
28
  'puppetsbindir' => '/opt/puppet/sbin',
29
+ 'systembindir' => '/opt/puppet/bin',
28
30
  'puppetvardir' => '/var/opt/lib/pe-puppet',
29
31
  'hieradatadir' => '/var/lib/hiera',
30
32
  'hieraconf' => '/etc/puppetlabs/puppet/hiera.yaml',
@@ -42,9 +44,11 @@ module Unix
42
44
  'puppetserver-confdir' => '/etc/puppetserver/conf.d',
43
45
  'puppetservice' => 'puppetmaster',
44
46
  'puppetpath' => '/etc/puppet',
47
+ 'puppetconfdir' => '/etc/puppet',
45
48
  'puppetvardir' => '/var/lib/puppet',
46
49
  'puppetbin' => '/usr/bin/puppet',
47
50
  'puppetbindir' => '/usr/bin',
51
+ 'systembindir' => '/usr/bin',
48
52
  'hieralibdir' => '/opt/puppet-git-repos/hiera/lib',
49
53
  'hierapuppetlibdir' => '/opt/puppet-git-repos/hiera-puppet/lib',
50
54
  'hierabindir' => '/opt/puppet-git-repos/hiera/bin',
@@ -58,12 +62,18 @@ module Unix
58
62
 
59
63
  def self.aio_defaults
60
64
  h = self.foss_defaults
61
- h['puppetbindir'] = '/opt/puppetlabs/agent/bin'
62
- h['puppetpath'] = '/opt/puppetlabs/agent'
63
- h['puppetvardir'] = '/opt/puppetlabs/agent/cache'
64
- h['distmoduledir'] = '/opt/puppetlabs/agent/modules'
65
- h['sitemoduledir'] = '/etc/puppetlabs/agent/modules'
66
- h['hieraconf'] = ' /etc/puppetlabs/agent/hiera.conf'
65
+ h['puppetserver-confdir'] = '/etc/puppetlabs/puppetserver/conf.d'
66
+ h['puppetservice'] = 'puppetserver'
67
+ h['puppetbindir'] = '/opt/puppetlabs/agent/bin'
68
+ h['puppetbin'] = "#{h['puppetbindir']}/puppet"
69
+ h['puppetpath'] = '/etc/puppetlabs/agent'
70
+ h['puppetconfdir'] = "#{h['puppetpath']}/config"
71
+ h['puppetcodedir'] = "#{h['puppetpath']}/code"
72
+ h['puppetvardir'] = '/opt/puppetlabs/agent/cache'
73
+ h['distmoduledir'] = "#{h['puppetcodedir']}/modules"
74
+ h['sitemoduledir'] = '/opt/puppetlabs/agent/modules'
75
+ h['hieraconf'] = "#{h['puppetcodedir']}/hiera.yaml"
76
+ h['hieradatadir'] = "#{h['puppetcodedir']}/hieradata"
67
77
  h
68
78
  end
69
79
  end