PackerFiles 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+