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,44 @@
1
+ # Test file for User
2
+ require 'Core/User'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Core::User do
6
+
7
+ # Check normalize functionalty
8
+ it 'checks normalization #1' do
9
+ user = PackerFiles::Core::User.new
10
+ user.login = 'login'
11
+ user.name = 'NAME'
12
+ user.password = 'password'
13
+ user.normalize
14
+ user.login.should eql('login')
15
+ user.name.should eql('NAME')
16
+ user.password.should eql('password')
17
+ end
18
+
19
+ it 'checks normalization #2' do
20
+ user = PackerFiles::Core::User.new
21
+ begin
22
+ user.normalize
23
+ rescue PackerFiles::Core::NilException => e
24
+ user.login.should be_nil
25
+ user.name.should be_nil
26
+ user.password.should be_nil
27
+ end
28
+ end
29
+
30
+ # Check document generation functionalty
31
+ it 'checks document generation #1' do
32
+ user = PackerFiles::Core::User.new
33
+ user.login = 'login'
34
+ user.name = 'NAME'
35
+ user.password = 'password'
36
+ user.normalize
37
+ File.exist?(user.class.doc_file).should be(true)
38
+ result = PackerFiles.evaluate_erb(user.class.doc_file, {'obj' => user})
39
+ result.should include('login')
40
+ result.should include('NAME')
41
+ result.should include('password')
42
+ end
43
+
44
+ end
@@ -0,0 +1,53 @@
1
+ # Test file for Volume Group
2
+ require 'Core/VolumeGroup'
3
+ require 'Core/LogicalVolume'
4
+
5
+ # Describe test cases
6
+ describe PackerFiles::Core::VolumeGroup do
7
+
8
+ # Check normalize functionalty
9
+ it 'checks normalization #1' do
10
+ lv = PackerFiles::Core::LogicalVolume.new
11
+ vg = PackerFiles::Core::VolumeGroup.new
12
+ lv.name = 'LV'
13
+ lv.size = '2GiB'
14
+ vg.name = 'VG'
15
+ vg.disk_names = ['sda/1', 'sda/2']
16
+ vg.lvs.push(lv)
17
+ vg.normalize
18
+ vg.lvs.first.size.should eql(2048)
19
+ vg.lvs.first.vg_name.should eql('VG')
20
+ end
21
+
22
+ # Check normalize functionalty
23
+ it 'checks normalization #2' do
24
+ lv = PackerFiles::Core::LogicalVolume.new
25
+ lv.name = 'LV'
26
+ lv.size = '2GiB'
27
+ begin
28
+ lv.normalize
29
+ rescue PackerFiles::Core::NilException => e
30
+ lv.size.should eql('2GiB')
31
+ end
32
+ end
33
+
34
+ # Check LogicalVolume instance_eval functionality
35
+ it 'checks lv instance_eval #1' do
36
+ vg = PackerFiles::Core::VolumeGroup.new
37
+ vg.name = 'VG'
38
+ vg.disk_names = ['sda.1', 'sda.2']
39
+ vg.LogicalVolume do |l|
40
+ l.size = '2GiB'
41
+ end
42
+ vg.LogicalVolume do |l|
43
+ l.size = '4GiB'
44
+ end
45
+ vg.normalize
46
+ vg.lvs.size.should eql(2)
47
+ vg.lvs.first.size.should eql(2048)
48
+ vg.lvs.first.vg_name.should eql('VG')
49
+ vg.lvs.last.size.should eql(4096)
50
+ vg.lvs.last.vg_name.should eql('VG')
51
+ end
52
+
53
+ end
@@ -0,0 +1,12 @@
1
+ # Requires
2
+ require 'OS/CentOS/CD'
3
+
4
+ describe PackerFiles::CentOS::CD do
5
+
6
+ # Check CD download URLs
7
+ it 'check CD download #1' do
8
+ cd = PackerFiles::CentOS::CD.new
9
+ cd.index_urls.should_not be_empty
10
+ end
11
+
12
+ end
@@ -0,0 +1,57 @@
1
+ PackerFiles.Generate('CentOS::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.VirtualBox do |v|
39
+ v.cpu_count = 2
40
+ v.ram_size = '1GiB'
41
+ v.use_efi = false
42
+ end
43
+ end
44
+ svr.Provision do |prov|
45
+ prov.InlineScript do |script|
46
+ script.environment_vars = {'ABC' => 123}
47
+ script.execute_command = "sudo -E -S sh '{{ .Path }}'"
48
+ script.inline = <<-eos
49
+ echo $ABC
50
+ yum update --assumeyes
51
+ yum install bison --assumeyes
52
+ eos
53
+ end
54
+ end
55
+
56
+ end
57
+
@@ -0,0 +1,55 @@
1
+ PackerFiles.Generate('CentOS::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.VirtualBox do |v|
39
+ v.cpu_count = 2
40
+ v.ram_size = '1GiB'
41
+ v.use_efi = false
42
+ end
43
+ h.KVM do |k|
44
+ k.cpu_count = 2
45
+ k.ram_size = '1GiB'
46
+ k.use_efi = false
47
+ end
48
+ h.VMWare do |k|
49
+ k.cpu_count = 2
50
+ k.ram_size = '1GiB'
51
+ k.use_efi = false
52
+ end
53
+ end
54
+ end
55
+
@@ -0,0 +1,58 @@
1
+ PackerFiles.Generate('CentOS::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.VirtualBox do |v|
39
+ v.cpu_count = 2
40
+ v.ram_size = '1GiB'
41
+ v.use_efi = false
42
+ end
43
+ end
44
+ svr.Provision do |prov|
45
+ prov.InlineScript do |script|
46
+ script.execute_command = "sudo -E -S sh '{{ .Path }}'"
47
+ script.inline = <<-eos
48
+ yum update --assumeyes
49
+ eos
50
+ end
51
+ prov.ChefSolo do |chef|
52
+ chef.cookbook_paths = [ 'spec/os/debian/data/chef-solo-cookbooks' ]
53
+ chef.run_list = [ 'git_setup' ]
54
+ chef.json = 'spec/os/debian/data/chef-solo.json'
55
+ end
56
+ end
57
+ end
58
+
@@ -0,0 +1,22 @@
1
+ # Test file for Finder
2
+ require 'OS/Finder'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Finder do
6
+
7
+ # Check finder functionality from the top level
8
+ it 'checks finder #1' do
9
+ load('spec/os/centos/data/Server.rb')
10
+ end
11
+
12
+ # Check finder functionality from the top level
13
+ it 'checks Inline Script provisioner' do
14
+ load('spec/os/centos/data/Server-Script-Provisioner.rb')
15
+ end
16
+
17
+ # Check finder functionality from the top level
18
+ it 'checks Chef Solo provisioner' do
19
+ load('spec/os/centos/data/chef-solo-provisioner.rb')
20
+ end
21
+
22
+ end
@@ -0,0 +1,57 @@
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 TestKickstart
10
+ def kickstart_file
11
+ 'http/ks.cfg'
12
+ end
13
+ def http_dir
14
+ 'http'
15
+ end
16
+ end
17
+ file = PackerFiles.DirPath('CentOS/Templates/boot_command_erb.rb').first
18
+ hash = { 'obj' => TestKickstart.new }
19
+ result = PackerFiles.evaluate_erb(file, hash)
20
+ result.should include('ks.cfg')
21
+ result.should_not include('ip')
22
+ end
23
+
24
+ # Check ERB template functionalty
25
+ it 'check erb template #2' do
26
+ class TestKickstart
27
+ def kickstart_file
28
+ 'http/ks.cfg'
29
+ end
30
+ def http_dir
31
+ 'http'
32
+ end
33
+ end
34
+
35
+ net = PackerFiles::Core::Network.new
36
+ net.interface = 'eth0'
37
+ net.type = (PackerFiles::Core::Network::STATIC | PackerFiles::Core::Network::IPV4)
38
+ net.ip = '10.10.10.10'
39
+ net.mask = '255.255.0.0'
40
+ net.gateway = '10.11.12.13'
41
+ net.dns = ['10.20.30.50']
42
+ net.normalize
43
+ net.is_static?.should be(true)
44
+
45
+ file = PackerFiles.DirPath('CentOS/Templates/boot_command_erb.rb').first
46
+ hash = {'obj' => TestKickstart.new, 'network' => net }
47
+ result = PackerFiles.evaluate_erb(file, hash)
48
+ result.should include('ks.cfg')
49
+ result.should include('user')
50
+ result.should include('port')
51
+ result.should include('10.10.10.10')
52
+ result.should include('10.11.12.13')
53
+ result.should include('255.255.0.0')
54
+ result.should include('10.20.30.50')
55
+ end
56
+
57
+ end
@@ -0,0 +1,79 @@
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('CentOS/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('CentOS/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('swap')
46
+ end
47
+
48
+ # Check ERB template functionalty
49
+ it 'check erb template #3' do
50
+ obj = PackerFiles::Core::Disk.new
51
+ obj.name = 'sda'
52
+ obj.size = '6GiB'
53
+ obj.VolumeGroup do |v|
54
+ v.name = 'VG'
55
+ v.disk_names = ['sda']
56
+ v.LogicalVolume do |l|
57
+ l.size = '1GiB'
58
+ l.file_system = 'linux-swap'
59
+ end
60
+ v.LogicalVolume do |l|
61
+ l.size = '4GiB'
62
+ l.file_system = 'ext3'
63
+ l.mount_point = '/abc'
64
+ end
65
+ end
66
+ obj.normalize
67
+ file = PackerFiles.DirPath('CentOS/Templates/Disk_erb.rb').first
68
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
69
+ result.should include('4096')
70
+ result.should include('1024')
71
+ result.should include('/abc')
72
+ result.should include('ext3')
73
+ result.should include('swap')
74
+ result.should include('lv1')
75
+ result.should include('lv0')
76
+ result.should include('VG')
77
+ end
78
+
79
+ 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('CentOS/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,26 @@
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('CentOS/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('CentOS/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
+ 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('CentOS/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('CentOS/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,18 @@
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('CentOS/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
+ result.should include('docker')
16
+ end
17
+
18
+ end
@@ -0,0 +1,37 @@
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('CentOS/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
+ result.should include('utc')
16
+ end
17
+
18
+ it 'check erb template #2' do
19
+ obj = PackerFiles::Core::TimeZone.new
20
+ file = PackerFiles.DirPath('CentOS/Templates/TimeZone_erb.rb').first
21
+ obj.auto = true
22
+ obj.normalize
23
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
24
+ result.should include(obj.zone)
25
+ end
26
+
27
+ it 'check erb template #3' do
28
+ obj = PackerFiles::Core::TimeZone.new
29
+ file = PackerFiles.DirPath('CentOS/Templates/TimeZone_erb.rb').first
30
+ obj.zone = 'US/Eastern'
31
+ obj.utc = false
32
+ obj.normalize
33
+ result = PackerFiles.evaluate_erb(file, {'obj' => obj})
34
+ result.should_not include('utc')
35
+ end
36
+
37
+ end
@@ -0,0 +1,24 @@
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('CentOS/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('password')
19
+ result.should include('admin')
20
+ result.should include('wheel')
21
+ result.should include('sudo')
22
+ end
23
+
24
+ end
@@ -0,0 +1,50 @@
1
+ # Test file for Apt documentation.
2
+ require 'OS/Debian/Apt'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Debian::Apt do
6
+
7
+ # Check Apt normalization
8
+ it 'checks Apt normalize #1' do
9
+ obj = PackerFiles::Debian::Apt.new
10
+ obj.tasks = ['standard', 'laptop']
11
+ obj.kernel = ''
12
+ begin
13
+ obj.normalize
14
+ rescue PackerFiles::Core::NilException => e
15
+ end
16
+ end
17
+
18
+ it 'checks Apt normalize #2' do
19
+ obj = PackerFiles::Debian::Apt.new
20
+ obj.tasks = nil
21
+ obj.kernel = 'linux-virtual'
22
+ begin
23
+ obj.normalize
24
+ rescue PackerFiles::Core::NilException => e
25
+ end
26
+ end
27
+
28
+ it 'checks Apt normalize #3' do
29
+ obj = PackerFiles::Debian::Apt.new
30
+ obj.tasks = []
31
+ obj.kernel = 'linux-virtual'
32
+ begin
33
+ obj.normalize
34
+ rescue PackerFiles::Core::EmptyArrayException => e
35
+ end
36
+ end
37
+
38
+ # Check Apt documetation
39
+ it 'checks Apt documentation #1' do
40
+ obj = PackerFiles::Debian::Apt.new
41
+ obj.tasks = ['standard', 'laptop']
42
+ obj.kernel = 'linux-virtual'
43
+ obj.normalize
44
+ result = PackerFiles.evaluate_erb(obj.class.doc_file, {'obj' => obj})
45
+ result.should include('standard')
46
+ result.should include('laptop')
47
+ result.should include('linux-virtual')
48
+ end
49
+
50
+ end