PackerFiles 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (195) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/PackerFiles.gemspec +36 -0
  6. data/README.md +32 -0
  7. data/Rakefile +21 -0
  8. data/bin/pkf +5 -0
  9. data/lib/PackerFiles/CLI/OS.rb +44 -0
  10. data/lib/PackerFiles/CLI/Root.rb +41 -0
  11. data/lib/PackerFiles/Core/Base.rb +23 -0
  12. data/lib/PackerFiles/Core/CDImage.rb +185 -0
  13. data/lib/PackerFiles/Core/Disk.rb +135 -0
  14. data/lib/PackerFiles/Core/Exceptions.rb +65 -0
  15. data/lib/PackerFiles/Core/Hypervisor.rb +96 -0
  16. data/lib/PackerFiles/Core/Keyboard.rb +38 -0
  17. data/lib/PackerFiles/Core/Locale.rb +62 -0
  18. data/lib/PackerFiles/Core/LogicalVolume.rb +41 -0
  19. data/lib/PackerFiles/Core/Network.rb +67 -0
  20. data/lib/PackerFiles/Core/Packages.rb +30 -0
  21. data/lib/PackerFiles/Core/Partition.rb +41 -0
  22. data/lib/PackerFiles/Core/TimeZone.rb +45 -0
  23. data/lib/PackerFiles/Core/User.rb +46 -0
  24. data/lib/PackerFiles/Core/VolumeGroup.rb +50 -0
  25. data/lib/PackerFiles/Core/example/CDImage.txt +75 -0
  26. data/lib/PackerFiles/Core/example/Disk.txt +29 -0
  27. data/lib/PackerFiles/Core/example/Hypervisor.txt +111 -0
  28. data/lib/PackerFiles/Core/example/Keyboard.txt +28 -0
  29. data/lib/PackerFiles/Core/example/Locale.txt +31 -0
  30. data/lib/PackerFiles/Core/example/Network.txt +68 -0
  31. data/lib/PackerFiles/Core/example/Packages.txt +22 -0
  32. data/lib/PackerFiles/Core/example/TimeZone.txt +36 -0
  33. data/lib/PackerFiles/Core/example/User.txt +48 -0
  34. data/lib/PackerFiles/OS/Builder.rb +116 -0
  35. data/lib/PackerFiles/OS/CentOS/CD.rb +81 -0
  36. data/lib/PackerFiles/OS/CentOS/Kickstart.rb +64 -0
  37. data/lib/PackerFiles/OS/CentOS/Server.rb +170 -0
  38. data/lib/PackerFiles/OS/CentOS/Templates/Base_erb.rb +4 -0
  39. data/lib/PackerFiles/OS/CentOS/Templates/Disk_erb.rb +35 -0
  40. data/lib/PackerFiles/OS/CentOS/Templates/Keyboard_erb.rb +4 -0
  41. data/lib/PackerFiles/OS/CentOS/Templates/Locale_erb.rb +4 -0
  42. data/lib/PackerFiles/OS/CentOS/Templates/Network_erb.rb +17 -0
  43. data/lib/PackerFiles/OS/CentOS/Templates/Packages_erb.rb +34 -0
  44. data/lib/PackerFiles/OS/CentOS/Templates/Tail_erb.rb +15 -0
  45. data/lib/PackerFiles/OS/CentOS/Templates/TimeZone_erb.rb +10 -0
  46. data/lib/PackerFiles/OS/CentOS/Templates/User_erb.rb +20 -0
  47. data/lib/PackerFiles/OS/CentOS/Templates/boot_command_erb.rb +16 -0
  48. data/lib/PackerFiles/OS/CentOS/Templates/command_as_root_erb.rb +1 -0
  49. data/lib/PackerFiles/OS/CentOS/Templates/disable_root_erb.rb +1 -0
  50. data/lib/PackerFiles/OS/CentOS/Templates/enable_root_erb.rb +1 -0
  51. data/lib/PackerFiles/OS/CentOS/Templates/shutdown_command_erb.rb +1 -0
  52. data/lib/PackerFiles/OS/Debian/Apt.rb +42 -0
  53. data/lib/PackerFiles/OS/Debian/CD.rb +65 -0
  54. data/lib/PackerFiles/OS/Debian/Mirrors.rb +73 -0
  55. data/lib/PackerFiles/OS/Debian/Preseed.rb +64 -0
  56. data/lib/PackerFiles/OS/Debian/Server.rb +169 -0
  57. data/lib/PackerFiles/OS/Debian/Templates/Apt_erb.rb +18 -0
  58. data/lib/PackerFiles/OS/Debian/Templates/Disk_erb.rb +69 -0
  59. data/lib/PackerFiles/OS/Debian/Templates/Keyboard_erb.rb +5 -0
  60. data/lib/PackerFiles/OS/Debian/Templates/Locale_erb.rb +7 -0
  61. data/lib/PackerFiles/OS/Debian/Templates/Mirrors_erb.rb +9 -0
  62. data/lib/PackerFiles/OS/Debian/Templates/Network_erb.rb +19 -0
  63. data/lib/PackerFiles/OS/Debian/Templates/Packages_erb.rb +6 -0
  64. data/lib/PackerFiles/OS/Debian/Templates/TimeZone_erb.rb +6 -0
  65. data/lib/PackerFiles/OS/Debian/Templates/User_erb.rb +14 -0
  66. data/lib/PackerFiles/OS/Debian/Templates/boot_command_erb.rb +24 -0
  67. data/lib/PackerFiles/OS/Debian/Templates/command_as_root_erb.rb +1 -0
  68. data/lib/PackerFiles/OS/Debian/Templates/disable_root_erb.rb +5 -0
  69. data/lib/PackerFiles/OS/Debian/Templates/enable_root_erb.rb +1 -0
  70. data/lib/PackerFiles/OS/Debian/Templates/shutdown_command_erb.rb +1 -0
  71. data/lib/PackerFiles/OS/Debian/example/Apt.txt +55 -0
  72. data/lib/PackerFiles/OS/DocGenerator.rb +51 -0
  73. data/lib/PackerFiles/OS/Finder.rb +96 -0
  74. data/lib/PackerFiles/OS/RHEL/CD.rb +32 -0
  75. data/lib/PackerFiles/OS/RHEL/Fedora.rb +59 -0
  76. data/lib/PackerFiles/OS/RHEL/FedoraCD.rb +68 -0
  77. data/lib/PackerFiles/OS/RHEL/Server.rb +32 -0
  78. data/lib/PackerFiles/OS/RHEL/Templates/Fedora_Tail_erb.rb +14 -0
  79. data/lib/PackerFiles/OS/RHEL/Templates/boot_command_fedora_erb.rb +16 -0
  80. data/lib/PackerFiles/OS/SUSE/Templates/Base_erb.xml +32 -0
  81. data/lib/PackerFiles/OS/SUSE/Templates/Disk_erb.xml +110 -0
  82. data/lib/PackerFiles/OS/SUSE/Templates/Keyboard_erb.xml +7 -0
  83. data/lib/PackerFiles/OS/SUSE/Templates/Locale_erb.xml +18 -0
  84. data/lib/PackerFiles/OS/SUSE/Templates/Network_erb.xml +143 -0
  85. data/lib/PackerFiles/OS/SUSE/Templates/Packages_erb.xml +29 -0
  86. data/lib/PackerFiles/OS/SUSE/Templates/Tail_erb.xml +4 -0
  87. data/lib/PackerFiles/OS/SUSE/Templates/TimeZone_erb.xml +15 -0
  88. data/lib/PackerFiles/OS/SUSE/Templates/User_erb.xml +57 -0
  89. data/lib/PackerFiles/OS/SUSE/Templates/boot_command_erb.rb +23 -0
  90. data/lib/PackerFiles/OS/SUSE/Templates/command_as_root_erb.rb +1 -0
  91. data/lib/PackerFiles/OS/SUSE/Templates/disable_root_erb.rb +1 -0
  92. data/lib/PackerFiles/OS/SUSE/Templates/enable_root_erb.rb +1 -0
  93. data/lib/PackerFiles/OS/SUSE/Templates/shutdown_command_erb.rb +1 -0
  94. data/lib/PackerFiles/OS/Ubuntu/CD.rb +81 -0
  95. data/lib/PackerFiles/OS/Ubuntu/Desktop.rb +50 -0
  96. data/lib/PackerFiles/OS/Ubuntu/DesktopCD.rb +16 -0
  97. data/lib/PackerFiles/OS/Ubuntu/Mirrors.rb +103 -0
  98. data/lib/PackerFiles/OS/Ubuntu/Server.rb +78 -0
  99. data/lib/PackerFiles/OS/Ubuntu/Templates/Apt_erb.rb +18 -0
  100. data/lib/PackerFiles/OS/Ubuntu/Templates/boot_command_desktop_erb.rb +36 -0
  101. data/lib/PackerFiles/OS/Ubuntu/Templates/boot_command_erb.rb +30 -0
  102. data/lib/PackerFiles/OS/Ubuntu/Templates/ubiquity_erb.rb +8 -0
  103. data/lib/PackerFiles/OS/example/Doc.txt +8 -0
  104. data/lib/PackerFiles/Provision/Base.rb +20 -0
  105. data/lib/PackerFiles/Provision/ChefSolo.rb +90 -0
  106. data/lib/PackerFiles/Provision/ChefSoloHelper.rb +72 -0
  107. data/lib/PackerFiles/Provision/Copy.rb +22 -0
  108. data/lib/PackerFiles/Provision/ExternalScript.rb +43 -0
  109. data/lib/PackerFiles/Provision/InlineScript.rb +37 -0
  110. data/lib/PackerFiles/Provision/Provisioners.rb +87 -0
  111. data/lib/PackerFiles/Provision/example/Provisioners.txt +21 -0
  112. data/lib/PackerFiles/Utils/AutoZone.rb +96 -0
  113. data/lib/PackerFiles/Utils/FastestURL.rb +73 -0
  114. data/lib/PackerFiles/Utils/Generator.rb +34 -0
  115. data/lib/PackerFiles/Utils/HashSerializer.rb +110 -0
  116. data/lib/PackerFiles/Utils/Size.rb +44 -0
  117. data/lib/PackerFiles/Utils/TypeAccessor.rb +71 -0
  118. data/lib/PackerFiles/Virtual/Hypervisors.rb +72 -0
  119. data/lib/PackerFiles/Virtual/KVM.rb +119 -0
  120. data/lib/PackerFiles/Virtual/KVMConverter.rb +79 -0
  121. data/lib/PackerFiles/Virtual/VMWare.rb +108 -0
  122. data/lib/PackerFiles/Virtual/VMWareConverter.rb +78 -0
  123. data/lib/PackerFiles/Virtual/VirtualBox.rb +98 -0
  124. data/lib/PackerFiles/Virtual/VirtualBoxConverter.rb +75 -0
  125. data/lib/PackerFiles/Virtual/example/Hypervisors.txt +23 -0
  126. data/lib/PackerFiles/version.rb +3 -0
  127. data/lib/PackerFiles.rb +44 -0
  128. data/spec/core/builder_spec.rb +84 -0
  129. data/spec/core/cdimage_spec.rb +159 -0
  130. data/spec/core/disk_spec.rb +191 -0
  131. data/spec/core/keyboard_spec.rb +36 -0
  132. data/spec/core/locale_spec.rb +73 -0
  133. data/spec/core/network_spec.rb +96 -0
  134. data/spec/core/packages_spec.rb +18 -0
  135. data/spec/core/timezone_spec.rb +43 -0
  136. data/spec/core/user_spec.rb +44 -0
  137. data/spec/core/volume_group_spec.rb +53 -0
  138. data/spec/os/centos/cd_spec.rb +12 -0
  139. data/spec/os/centos/data/Server-Script-Provisioner.rb +57 -0
  140. data/spec/os/centos/data/Server.rb +55 -0
  141. data/spec/os/centos/data/chef-solo-provisioner.rb +58 -0
  142. data/spec/os/centos/finder_spec.rb +22 -0
  143. data/spec/os/centos/templates/boot_command_spec.rb +57 -0
  144. data/spec/os/centos/templates/disk_spec.rb +79 -0
  145. data/spec/os/centos/templates/keyboard_spec.rb +18 -0
  146. data/spec/os/centos/templates/locale_spec.rb +26 -0
  147. data/spec/os/centos/templates/network_spec.rb +38 -0
  148. data/spec/os/centos/templates/packages_spec.rb +18 -0
  149. data/spec/os/centos/templates/timezone_spec.rb +37 -0
  150. data/spec/os/centos/templates/user_spec.rb +24 -0
  151. data/spec/os/debian/apt_spec.rb +50 -0
  152. data/spec/os/debian/cd_spec.rb +30 -0
  153. data/spec/os/debian/data/7zip.tar.gz +0 -0
  154. data/spec/os/debian/data/All-sections.rb +60 -0
  155. data/spec/os/debian/data/Chef-Solo-Provisioner.rb +60 -0
  156. data/spec/os/debian/data/Copy-Provisioner.rb +61 -0
  157. data/spec/os/debian/data/External-Script-Provisioner.rb +69 -0
  158. data/spec/os/debian/data/Missing-CDImage.rb +53 -0
  159. data/spec/os/debian/data/Missing-VMWare-KVM-sections.rb +51 -0
  160. data/spec/os/debian/data/Missing-sections.rb +53 -0
  161. data/spec/os/debian/data/Script-Provisioner.rb +62 -0
  162. data/spec/os/debian/data/chef-solo-cookbooks/git_setup/Berksfile.lock +32 -0
  163. data/spec/os/debian/data/chef-solo-cookbooks/git_setup/README.md +81 -0
  164. data/spec/os/debian/data/chef-solo-cookbooks/git_setup/attributes/default.rb +3 -0
  165. data/spec/os/debian/data/chef-solo-cookbooks/git_setup/metadata.rb +11 -0
  166. data/spec/os/debian/data/chef-solo-cookbooks/git_setup/recipes/default.rb +30 -0
  167. data/spec/os/debian/data/chef-solo.json +5 -0
  168. data/spec/os/debian/data/test-script.sh +4 -0
  169. data/spec/os/debian/finder_spec.rb +59 -0
  170. data/spec/os/debian/mirrors_spec.rb +18 -0
  171. data/spec/os/debian/preseed_spec.rb +56 -0
  172. data/spec/os/debian/server_spec.rb +59 -0
  173. data/spec/os/debian/templates/apt_spec.rb +20 -0
  174. data/spec/os/debian/templates/boot_command_spec.rb +56 -0
  175. data/spec/os/debian/templates/disk_spec.rb +81 -0
  176. data/spec/os/debian/templates/keyboard_spec.rb +18 -0
  177. data/spec/os/debian/templates/locale_spec.rb +36 -0
  178. data/spec/os/debian/templates/mirrors_spec.rb +16 -0
  179. data/spec/os/debian/templates/network_spec.rb +38 -0
  180. data/spec/os/debian/templates/packages_spec.rb +17 -0
  181. data/spec/os/debian/templates/timezone_spec.rb +36 -0
  182. data/spec/os/debian/templates/user_spec.rb +25 -0
  183. data/spec/os/finder_spec.rb +21 -0
  184. data/spec/os/rhel/data/Fedora.rb +45 -0
  185. data/spec/os/rhel/data/Server-Custom.rb +54 -0
  186. data/spec/os/rhel/data/Server.rb +45 -0
  187. data/spec/os/rhel/finder_spec.rb +21 -0
  188. data/spec/os/ubuntu/cd_spec.rb +28 -0
  189. data/spec/os/ubuntu/data/Desktop.rb +61 -0
  190. data/spec/os/ubuntu/data/Server.rb +61 -0
  191. data/spec/os/ubuntu/finder_spec.rb +17 -0
  192. data/spec/os/ubuntu/mirrors_spec.rb +18 -0
  193. data/spec/utils/autozone_spec.rb +33 -0
  194. data/spec/virtual/virtual_box_spec.rb +16 -0
  195. metadata +405 -0
@@ -0,0 +1,59 @@
1
+ # Test file for Finder
2
+ require 'OS/Finder'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Finder do
6
+
7
+ # Check missing accessor functionality.
8
+ it 'checks missing accessors' do
9
+ begin
10
+ load('spec/os/debian/data/Missing-sections.rb')
11
+ rescue PackerFiles::Utils::MissingAccessor => e
12
+ e.message.should include('Apt')
13
+ end
14
+ end
15
+
16
+ # Check missing Hypervisor functionality.
17
+ it 'checks missing Hypervisor accessors' do
18
+ begin
19
+ load('spec/os/debian/data/Missing-VMWare-KVM-sections.rb')
20
+ rescue PackerFiles::Utils::MissingAccessor => e
21
+ e.message.should include('Hypervisors')
22
+ end
23
+ end
24
+
25
+ # Check missing CDImage functionality.
26
+ it 'checks missing CDImage accessors' do
27
+ begin
28
+ load('spec/os/debian/data/Missing-CDImage.rb')
29
+ rescue PackerFiles::Utils::MissingAccessor => e
30
+ e.message.should include('CDImage')
31
+ end
32
+ end
33
+
34
+ # Check finder functionality from the top level
35
+ it 'checks finder #1' do
36
+ load('spec/os/debian/data/All-sections.rb')
37
+ end
38
+
39
+ # Check finder functionality from the top level
40
+ it 'checks copy provisioner' do
41
+ load('spec/os/debian/data/Copy-Provisioner.rb')
42
+ end
43
+
44
+ # Check finder functionality from the top level
45
+ it 'checks Inline Script provisioner' do
46
+ load('spec/os/debian/data/Script-Provisioner.rb')
47
+ end
48
+
49
+ # Check finder functionality from the top level
50
+ it 'checks External Script provisioner' do
51
+ load('spec/os/debian/data/External-Script-Provisioner.rb')
52
+ end
53
+
54
+ # Check finder functionality from the top level
55
+ it 'checks Chef Solo provisioner' do
56
+ load('spec/os/debian/data/Chef-Solo-Provisioner.rb')
57
+ end
58
+
59
+ end
@@ -0,0 +1,18 @@
1
+ # Test file for Mirror class in Debian Server OS
2
+ require 'OS/Debian/Mirrors'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Debian::Mirrors do
6
+
7
+ # Check if we are able to get a mirror.
8
+ it 'checks mirror' do
9
+ mirrors = PackerFiles::Debian::Mirrors.new
10
+ mirrors.hosts.should_not be_nil
11
+ mirrors.hosts.should_not be_empty
12
+ mirrors.best.should_not be_nil
13
+ mirrors.best.host.should_not be_nil
14
+ mirrors.best.path.should_not be_nil
15
+ mirrors.best.scheme.should eql('http')
16
+ end
17
+
18
+ end
@@ -0,0 +1,56 @@
1
+ # Test file for Preseed class in Debian Server OS
2
+ require 'OS/Debian/Server'
3
+ require 'OS/Debian/Preseed'
4
+
5
+ # Describe test cases
6
+ describe PackerFiles::Debian::Server do
7
+
8
+ # Check if we are able to succesfully do an instance eval on
9
+ # all type accessor methods
10
+ it 'checks builder instance_eval #1' do
11
+ server = PackerFiles::Debian::Server.new
12
+ server.Locale do |l|
13
+ l.default = 'en_IN'
14
+ end
15
+ server.Locale.normalize
16
+ server.User do |u|
17
+ u.login = 'login'
18
+ u.name = 'NAME'
19
+ u.password = 'password'
20
+ end
21
+ server.User.normalize
22
+ server.Keyboard do |k|
23
+ k.variant = 'us'
24
+ k.layout = 'us'
25
+ end
26
+ server.Keyboard.normalize
27
+ server.TimeZone do |t|
28
+ t.auto = false
29
+ end
30
+ server.TimeZone.normalize
31
+ server.Disk do |d|
32
+ d.name = 'sda'
33
+ d.size = '10GiB'
34
+ d.VolumeGroup do |v|
35
+ v.name = 'VG'
36
+ v.disk_names = ['sda']
37
+ v.LogicalVolume do |l|
38
+ l.size = '2GiB'
39
+ end
40
+ v.LogicalVolume do |l|
41
+ l.size = '4GiB'
42
+ end
43
+ end
44
+ end
45
+ server.Disk.normalize
46
+ preseed = PackerFiles::Debian::Preseed.new('preseed.cfg')
47
+ preseed.convert server.Locale, 'Debian/Templates'
48
+ preseed.convert server.User, 'Debian/Templates'
49
+ preseed.convert server.Keyboard, 'Debian/Templates'
50
+ preseed.convert server.TimeZone , 'Debian/Templates'
51
+ preseed.convert server.Disk, 'Debian/Templates'
52
+ File.exist?('preseed.cfg').should be(true)
53
+ File.unlink('preseed.cfg')
54
+ end
55
+
56
+ end
@@ -0,0 +1,59 @@
1
+ # Test file for Debian Server OS
2
+ require 'OS/Debian/Server'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Debian::Server do
6
+
7
+ # Check if we are able to succesfully do an instance eval on
8
+ # all type accessor methods
9
+ it 'checks builder instance_eval #1' do
10
+ server = PackerFiles::Debian::Server.new do |svr|
11
+ svr.Locale do |l|
12
+ l.default = 'en_IN'
13
+ end
14
+ svr.Locale.normalize
15
+ svr.User do |u|
16
+ u.login = 'login'
17
+ u.name = 'NAME'
18
+ u.password = 'password'
19
+ end
20
+ svr.User.normalize
21
+ svr.Keyboard do |k|
22
+ k.variant = 'us'
23
+ k.layout = 'us'
24
+ end
25
+ svr.Keyboard.normalize
26
+ svr.TimeZone do |t|
27
+ t.auto = false
28
+ end
29
+ svr.TimeZone.normalize
30
+ svr.Disk do |d|
31
+ d.name = 'sda'
32
+ d.size = '10GiB'
33
+ d.VolumeGroup do |v|
34
+ v.name = 'VG'
35
+ v.disk_names = ['sda']
36
+ v.LogicalVolume do |l|
37
+ l.size = '2GiB'
38
+ end
39
+ v.LogicalVolume do |l|
40
+ l.size = '4GiB'
41
+ end
42
+ end
43
+ end
44
+ svr.Disk.normalize
45
+ end
46
+ server.Locale.default.should eql('en_IN.UTF-8')
47
+ server.User.login.should eql('login')
48
+ server.User.name.should eql('NAME')
49
+ server.User.password.should eql('password')
50
+ server.Keyboard.layout.should eql('us')
51
+ server.TimeZone.zone.should be_nil
52
+ server.Disk.vg.lvs.size.should eql(2)
53
+ server.Disk.vg.lvs.first.size.should eql(2048)
54
+ server.Disk.vg.lvs.first.vg_name.should eql('VG')
55
+ server.Disk.vg.lvs.last.size.should eql(4096)
56
+ server.Disk.vg.lvs.last.vg_name.should eql('VG')
57
+ end
58
+
59
+ end
@@ -0,0 +1,20 @@
1
+ # Test file for ERB Apt
2
+ require 'OS/Debian/Apt'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Debian::Apt do
6
+
7
+ # Check ERB template functionalty
8
+ it 'check erb template #1' do
9
+ obj = PackerFiles::Debian::Apt.new
10
+ file = PackerFiles.DirPath('Debian/Templates/Apt_erb.rb').first
11
+ obj.tasks = ['standard', 'laptop']
12
+ obj.kernel = 'linux-virtual'
13
+ obj.normalize
14
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
15
+ result.should include('standard')
16
+ result.should include('laptop')
17
+ result.should include('linux-virtual')
18
+ end
19
+
20
+ end
@@ -0,0 +1,56 @@
1
+ # Test file for ERB Boot Command
2
+ require 'Core/Network'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Core::Network do
6
+
7
+ # Check ERB template functionalty
8
+ it 'check erb template #1' do
9
+ class TestPreseed
10
+ def preseed_file
11
+ 'http/preseed.cfg'
12
+ end
13
+ def http_dir
14
+ 'http'
15
+ end
16
+ end
17
+ file = PackerFiles.DirPath('Debian/Templates/boot_command_erb.rb').first
18
+ hash = { 'obj' => TestPreseed.new }
19
+ result = PackerFiles.evaluate_erb(file, hash)
20
+ result.should include('preseed.cfg')
21
+ result.should_not include('netcfg')
22
+ end
23
+
24
+ # Check ERB template functionalty
25
+ it 'check erb template #2' do
26
+ class TestPreseed
27
+ def preseed_file
28
+ 'http/preseed.cfg'
29
+ end
30
+ def http_dir
31
+ 'http'
32
+ end
33
+ end
34
+ net = PackerFiles::Core::Network.new
35
+ net.interface = 'eth0'
36
+ net.type = (PackerFiles::Core::Network::STATIC | PackerFiles::Core::Network::IPV4)
37
+ net.ip = '10.10.10.10'
38
+ net.mask = '255.255.0.0'
39
+ net.gateway = '10.11.12.13'
40
+ net.dns = ['10.20.30.50']
41
+ net.normalize
42
+ net.is_static?.should be(true)
43
+
44
+ file = PackerFiles.DirPath('Debian/Templates/boot_command_erb.rb').first
45
+ hash = {'obj' => TestPreseed.new, 'network' => net }
46
+ result = PackerFiles.evaluate_erb(file, hash)
47
+ result.should include('preseed.cfg')
48
+ result.should include('user')
49
+ result.should include('port')
50
+ result.should include('10.10.10.10')
51
+ result.should include('10.11.12.13')
52
+ result.should include('255.255.0.0')
53
+ result.should include('10.20.30.50')
54
+ end
55
+
56
+ end
@@ -0,0 +1,81 @@
1
+ # Test file for ERB Disk
2
+ require 'Core/Disk'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Core::Disk do
6
+
7
+ # Check ERB template functionalty
8
+ it 'check erb template #1' do
9
+ obj = PackerFiles::Core::Disk.new
10
+ obj.name = 'sda'
11
+ obj.size = '2GiB'
12
+ obj.normalize
13
+ file = PackerFiles.DirPath('Debian/Templates/Disk_erb.rb').first
14
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
15
+ result.should_not include('2048')
16
+ end
17
+
18
+ # Check ERB template functionalty
19
+ it 'check erb template #2' do
20
+ obj = PackerFiles::Core::Disk.new
21
+ obj.name = 'sda'
22
+ obj.size = '6GiB'
23
+ obj.Partition do |p|
24
+ p.size = '4GiB'
25
+ p.file_system = 'ext3'
26
+ p.mount_point = '/'
27
+ p.boot = true
28
+ end
29
+ obj.Partition do |p|
30
+ p.size = '1GiB'
31
+ p.file_system = 'linux-swap'
32
+ end
33
+ obj.Partition do |p|
34
+ p.size = '1GiB'
35
+ p.file_system = 'ext3'
36
+ p.mount_point = '/abc'
37
+ end
38
+ obj.normalize
39
+ file = PackerFiles.DirPath('Debian/Templates/Disk_erb.rb').first
40
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
41
+ result.should include('4096')
42
+ result.should include('1024')
43
+ result.should include('/abc')
44
+ result.should include('ext3')
45
+ result.should include('linux-swap')
46
+ result.should include('$primary')
47
+ result.should include('$boot')
48
+ end
49
+
50
+ # Check ERB template functionalty
51
+ it 'check erb template #3' do
52
+ obj = PackerFiles::Core::Disk.new
53
+ obj.name = 'sda'
54
+ obj.size = '6GiB'
55
+ obj.VolumeGroup do |v|
56
+ v.name = 'VG'
57
+ v.disk_names = ['sda']
58
+ v.LogicalVolume do |l|
59
+ l.size = '1GiB'
60
+ l.file_system = 'linux-swap'
61
+ end
62
+ v.LogicalVolume do |l|
63
+ l.size = '4GiB'
64
+ l.file_system = 'ext3'
65
+ l.mount_point = '/abc'
66
+ end
67
+ end
68
+ obj.normalize
69
+ file = PackerFiles.DirPath('Debian/Templates/Disk_erb.rb').first
70
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
71
+ result.should include('4096')
72
+ result.should include('1024')
73
+ result.should include('/abc')
74
+ result.should include('ext3')
75
+ result.should include('linux-swap')
76
+ result.should include('lv1')
77
+ result.should include('lv0')
78
+ result.should include('VG')
79
+ end
80
+
81
+ end
@@ -0,0 +1,18 @@
1
+ # Test file for ERB Keyboard
2
+ require 'Core/Keyboard'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Core::Keyboard do
6
+
7
+ # Check ERB template functionalty
8
+ it 'check erb template #1' do
9
+ obj = PackerFiles::Core::Keyboard.new
10
+ file = PackerFiles.DirPath('Debian/Templates/Keyboard_erb.rb').first
11
+ obj.variant = 'us'
12
+ obj.layout = 'us'
13
+ obj.normalize
14
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
15
+ result.should include('us')
16
+ end
17
+
18
+ end
@@ -0,0 +1,36 @@
1
+ # Test file for ERB locale
2
+ require 'Core/Locale'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Core::Locale do
6
+
7
+ # Check ERB template functionalty
8
+ it 'check erb template #1' do
9
+ obj = PackerFiles::Core::Locale.new
10
+ file = PackerFiles.DirPath('Debian/Templates/Locale_erb.rb').first
11
+ obj.default = 'en_IN'
12
+ obj.normalize
13
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
14
+ result.should include('en_IN.UTF-8')
15
+ end
16
+
17
+ it 'check erb template #2' do
18
+ obj = PackerFiles::Core::Locale.new
19
+ file = PackerFiles.DirPath('Debian/Templates/Locale_erb.rb').first
20
+ obj.default = 'en_IN'
21
+ obj.normalize(false)
22
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
23
+ result.should include('en_IN')
24
+ end
25
+
26
+ it 'check erb template #2' do
27
+ obj = PackerFiles::Core::Locale.new
28
+ file = PackerFiles.DirPath('Debian/Templates/Locale_erb.rb').first
29
+ obj.default = 'en_IN'
30
+ obj.supported = ['en_US']
31
+ obj.normalize
32
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
33
+ result.should include('en_US.UTF-8')
34
+ end
35
+
36
+ end
@@ -0,0 +1,16 @@
1
+ # Test file for ERB debian mirror
2
+ require 'OS/Debian/Mirrors'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Debian::Mirrors do
6
+
7
+ # Check ERB template functionalty
8
+ it 'check erb template #1' do
9
+ obj = PackerFiles::Debian::Mirrors.new
10
+ file = PackerFiles.DirPath('Debian/Templates/Mirrors_erb.rb').first
11
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
12
+ result.should include(obj.best.host)
13
+ result.should include(obj.best.path.chop)
14
+ end
15
+
16
+ end
@@ -0,0 +1,38 @@
1
+ # Test file for ERB Network
2
+ require 'Core/Network'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Core::Network do
6
+
7
+ # Check ERB template functionalty
8
+ it 'check erb template #1' do
9
+ obj = PackerFiles::Core::Network.new
10
+ file = PackerFiles.DirPath('Debian/Templates/Network_erb.rb').first
11
+ obj.interface = 'eth0'
12
+ obj.type = PackerFiles::Core::Network::IPV4
13
+ obj.normalize
14
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
15
+ result.should include('eth0')
16
+ result.should include('dhcp')
17
+ end
18
+
19
+ it 'checks erb template #2' do
20
+ obj = PackerFiles::Core::Network.new
21
+ obj.interface = 'eth0'
22
+ obj.type = PackerFiles::Core::Network::STATIC | PackerFiles::Core::Network::IPV4
23
+ obj.ip = '10.10.10.10'
24
+ obj.mask = '255.255.0.0'
25
+ obj.gateway = '10.11.12.13'
26
+ obj.dns = ['10.20.30.50', '10.20.30.49']
27
+ obj.normalize
28
+ file = PackerFiles.DirPath('Debian/Templates/Network_erb.rb').first
29
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
30
+ result.should include('eth0')
31
+ result.should include('10.10.10.10')
32
+ result.should include('255.255.0.0')
33
+ result.should include('10.11.12.13')
34
+ result.should include('10.20.30.49')
35
+ result.should include('10.20.30.50')
36
+ end
37
+
38
+ end
@@ -0,0 +1,17 @@
1
+ # Test file for ERB Packages
2
+ require 'Core/Packages'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Core::Packages do
6
+
7
+ # Check ERB template functionalty
8
+ it 'check erb template #1' do
9
+ obj = PackerFiles::Core::Packages.new
10
+ file = PackerFiles.DirPath('Debian/Templates/Packages_erb.rb').first
11
+ obj.list = ['open-ssh-server', 'docker']
12
+ obj.normalize
13
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
14
+ result.should include('open-ssh-server')
15
+ end
16
+
17
+ end
@@ -0,0 +1,36 @@
1
+ # Test file for ERB TimeZone
2
+ require 'Core/TimeZone'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Core::TimeZone do
6
+
7
+ # Check ERB template functionalty
8
+ it 'check erb template #1' do
9
+ obj = PackerFiles::Core::TimeZone.new
10
+ file = PackerFiles.DirPath('Debian/Templates/TimeZone_erb.rb').first
11
+ obj.zone = 'US/Eastern'
12
+ obj.normalize
13
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
14
+ result.should include('US/Eastern')
15
+ end
16
+
17
+ it 'check erb template #2' do
18
+ obj = PackerFiles::Core::TimeZone.new
19
+ file = PackerFiles.DirPath('Debian/Templates/TimeZone_erb.rb').first
20
+ obj.auto = true
21
+ obj.normalize
22
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
23
+ result.should include(obj.zone)
24
+ end
25
+
26
+ it 'check erb template #3' do
27
+ obj = PackerFiles::Core::TimeZone.new
28
+ file = PackerFiles.DirPath('Debian/Templates/TimeZone_erb.rb').first
29
+ obj.zone = 'US/Eastern'
30
+ obj.utc = false
31
+ obj.normalize
32
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
33
+ result.should include('false')
34
+ end
35
+
36
+ end
@@ -0,0 +1,25 @@
1
+ # Test file for ERB User
2
+ require 'Core/User'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Core::User do
6
+
7
+ # Check ERB template functionalty
8
+ it 'check erb template #1' do
9
+ obj = PackerFiles::Core::User.new
10
+ file = PackerFiles.DirPath('Debian/Templates/User_erb.rb').first
11
+ obj.login = 'login'
12
+ obj.name = 'NAME'
13
+ obj.password = 'password'
14
+ obj.groups = ['admin', 'wheel', 'sudo']
15
+ obj.normalize
16
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
17
+ result.should include('login')
18
+ result.should include('NAME')
19
+ result.should include('password')
20
+ result.should include('admin')
21
+ result.should include('wheel')
22
+ result.should include('sudo')
23
+ end
24
+
25
+ end
@@ -0,0 +1,21 @@
1
+ # Test file for Finder
2
+ require 'OS/Finder'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Finder do
6
+
7
+ # Check finder functionalty
8
+ it 'checks finder #1' do
9
+ finder = PackerFiles::Finder.new
10
+ finder.class_name('Debian::Server').should_not be_nil
11
+ end
12
+
13
+ # Checks finder list functionality
14
+ it 'checks finder #2' do
15
+ finder = PackerFiles::Finder.new
16
+ classes = finder.class_names
17
+ classes.should_not be_nil
18
+ classes.should_not be_empty
19
+ end
20
+
21
+ end
@@ -0,0 +1,45 @@
1
+ PackerFiles.Generate('RHEL::Fedora') do |svr|
2
+ svr.OutDir = File.join(Dir.pwd, 'tmp/abcde')
3
+ svr.Locale do |l|
4
+ l.default = 'en_US'
5
+ end
6
+ svr.Keyboard do |k|
7
+ k.variant = 'us'
8
+ k.layout = 'us'
9
+ end
10
+ svr.TimeZone do |t|
11
+ t.zone = 'US/Eastern'
12
+ end
13
+ svr.Network do |n|
14
+ n.interface = 'eth0'
15
+ n.type = PackerFiles::Core::Network::IPV4
16
+ end
17
+ svr.User do |u|
18
+ u.login = 'vagrant'
19
+ u.name = 'vagrant'
20
+ u.password = 'vagrant'
21
+ u.uid = 900
22
+ end
23
+ svr.Disk do |d|
24
+ d.name = 'sda'
25
+ d.size = '20GiB'
26
+ end
27
+ svr.Packages do |p|
28
+ p.list = %w[
29
+ openssh-clients sudo kernel-headers kernel-devel
30
+ gcc make perl curl wget nfs-utils -fprintd-pam -intltool
31
+ ]
32
+ end
33
+ svr.CDImage do |var|
34
+ var.release = '18'
35
+ var.arch = 'x86_64'
36
+ end
37
+ svr.Hypervisors do |h|
38
+ h.VirtualBox do |v|
39
+ v.cpu_count = 2
40
+ v.ram_size = '1GiB'
41
+ v.use_efi = false
42
+ end
43
+ end
44
+ end
45
+
@@ -0,0 +1,54 @@
1
+ PackerFiles.Generate('RHEL::Server') do |svr|
2
+ svr.OutDir = File.join(Dir.pwd, 'tmp/abcde')
3
+ svr.Locale do |l|
4
+ l.default = 'en_US'
5
+ end
6
+ svr.Keyboard do |k|
7
+ k.variant = 'us'
8
+ k.layout = 'us'
9
+ end
10
+ svr.TimeZone do |t|
11
+ t.zone = 'US/Eastern'
12
+ end
13
+ svr.Network do |n|
14
+ n.interface = 'eth0'
15
+ n.type = PackerFiles::Core::Network::IPV4
16
+ end
17
+ svr.User do |u|
18
+ u.login = 'vagrant'
19
+ u.name = 'vagrant'
20
+ u.password = 'vagrant'
21
+ u.uid = 900
22
+ end
23
+ svr.Disk do |d|
24
+ d.name = 'sda'
25
+ d.size = '20GiB'
26
+ end
27
+ svr.Packages do |p|
28
+ p.list = %w[
29
+ openssh-clients sudo kernel-headers kernel-devel
30
+ gcc make perl curl wget nfs-utils -fprintd-pam -intltool
31
+ ]
32
+ end
33
+ svr.CDImage do |var|
34
+ var.release = '6.5'
35
+ var.arch = 'x86_64'
36
+ end
37
+ svr.Hypervisors do |h|
38
+ h.VMWare do |v|
39
+ v.cpu_count = 2
40
+ v.ram_size = '1GiB'
41
+ v.use_efi = false
42
+ v.Custom do |vmware|
43
+ vmware.remote_cache_datastore = "ds1"
44
+ vmware.remote_cache_directory = "ds1/dir1"
45
+ vmware.remote_datastore = "ds11"
46
+ vmware.remote_host = "remotehost.com"
47
+ vmware.remote_password = "remote_password"
48
+ vmware.remote_type = "esx5"
49
+ vmware.remote_username = "remote_user"
50
+ end
51
+ end
52
+ end
53
+ end
54
+