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,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