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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/PackerFiles.gemspec +36 -0
- data/README.md +32 -0
- data/Rakefile +21 -0
- data/bin/pkf +5 -0
- data/lib/PackerFiles/CLI/OS.rb +44 -0
- data/lib/PackerFiles/CLI/Root.rb +41 -0
- data/lib/PackerFiles/Core/Base.rb +23 -0
- data/lib/PackerFiles/Core/CDImage.rb +185 -0
- data/lib/PackerFiles/Core/Disk.rb +135 -0
- data/lib/PackerFiles/Core/Exceptions.rb +65 -0
- data/lib/PackerFiles/Core/Hypervisor.rb +96 -0
- data/lib/PackerFiles/Core/Keyboard.rb +38 -0
- data/lib/PackerFiles/Core/Locale.rb +62 -0
- data/lib/PackerFiles/Core/LogicalVolume.rb +41 -0
- data/lib/PackerFiles/Core/Network.rb +67 -0
- data/lib/PackerFiles/Core/Packages.rb +30 -0
- data/lib/PackerFiles/Core/Partition.rb +41 -0
- data/lib/PackerFiles/Core/TimeZone.rb +45 -0
- data/lib/PackerFiles/Core/User.rb +46 -0
- data/lib/PackerFiles/Core/VolumeGroup.rb +50 -0
- data/lib/PackerFiles/Core/example/CDImage.txt +75 -0
- data/lib/PackerFiles/Core/example/Disk.txt +29 -0
- data/lib/PackerFiles/Core/example/Hypervisor.txt +111 -0
- data/lib/PackerFiles/Core/example/Keyboard.txt +28 -0
- data/lib/PackerFiles/Core/example/Locale.txt +31 -0
- data/lib/PackerFiles/Core/example/Network.txt +68 -0
- data/lib/PackerFiles/Core/example/Packages.txt +22 -0
- data/lib/PackerFiles/Core/example/TimeZone.txt +36 -0
- data/lib/PackerFiles/Core/example/User.txt +48 -0
- data/lib/PackerFiles/OS/Builder.rb +116 -0
- data/lib/PackerFiles/OS/CentOS/CD.rb +81 -0
- data/lib/PackerFiles/OS/CentOS/Kickstart.rb +64 -0
- data/lib/PackerFiles/OS/CentOS/Server.rb +170 -0
- data/lib/PackerFiles/OS/CentOS/Templates/Base_erb.rb +4 -0
- data/lib/PackerFiles/OS/CentOS/Templates/Disk_erb.rb +35 -0
- data/lib/PackerFiles/OS/CentOS/Templates/Keyboard_erb.rb +4 -0
- data/lib/PackerFiles/OS/CentOS/Templates/Locale_erb.rb +4 -0
- data/lib/PackerFiles/OS/CentOS/Templates/Network_erb.rb +17 -0
- data/lib/PackerFiles/OS/CentOS/Templates/Packages_erb.rb +34 -0
- data/lib/PackerFiles/OS/CentOS/Templates/Tail_erb.rb +15 -0
- data/lib/PackerFiles/OS/CentOS/Templates/TimeZone_erb.rb +10 -0
- data/lib/PackerFiles/OS/CentOS/Templates/User_erb.rb +20 -0
- data/lib/PackerFiles/OS/CentOS/Templates/boot_command_erb.rb +16 -0
- data/lib/PackerFiles/OS/CentOS/Templates/command_as_root_erb.rb +1 -0
- data/lib/PackerFiles/OS/CentOS/Templates/disable_root_erb.rb +1 -0
- data/lib/PackerFiles/OS/CentOS/Templates/enable_root_erb.rb +1 -0
- data/lib/PackerFiles/OS/CentOS/Templates/shutdown_command_erb.rb +1 -0
- data/lib/PackerFiles/OS/Debian/Apt.rb +42 -0
- data/lib/PackerFiles/OS/Debian/CD.rb +65 -0
- data/lib/PackerFiles/OS/Debian/Mirrors.rb +73 -0
- data/lib/PackerFiles/OS/Debian/Preseed.rb +64 -0
- data/lib/PackerFiles/OS/Debian/Server.rb +169 -0
- data/lib/PackerFiles/OS/Debian/Templates/Apt_erb.rb +18 -0
- data/lib/PackerFiles/OS/Debian/Templates/Disk_erb.rb +69 -0
- data/lib/PackerFiles/OS/Debian/Templates/Keyboard_erb.rb +5 -0
- data/lib/PackerFiles/OS/Debian/Templates/Locale_erb.rb +7 -0
- data/lib/PackerFiles/OS/Debian/Templates/Mirrors_erb.rb +9 -0
- data/lib/PackerFiles/OS/Debian/Templates/Network_erb.rb +19 -0
- data/lib/PackerFiles/OS/Debian/Templates/Packages_erb.rb +6 -0
- data/lib/PackerFiles/OS/Debian/Templates/TimeZone_erb.rb +6 -0
- data/lib/PackerFiles/OS/Debian/Templates/User_erb.rb +14 -0
- data/lib/PackerFiles/OS/Debian/Templates/boot_command_erb.rb +24 -0
- data/lib/PackerFiles/OS/Debian/Templates/command_as_root_erb.rb +1 -0
- data/lib/PackerFiles/OS/Debian/Templates/disable_root_erb.rb +5 -0
- data/lib/PackerFiles/OS/Debian/Templates/enable_root_erb.rb +1 -0
- data/lib/PackerFiles/OS/Debian/Templates/shutdown_command_erb.rb +1 -0
- data/lib/PackerFiles/OS/Debian/example/Apt.txt +55 -0
- data/lib/PackerFiles/OS/DocGenerator.rb +51 -0
- data/lib/PackerFiles/OS/Finder.rb +96 -0
- data/lib/PackerFiles/OS/RHEL/CD.rb +32 -0
- data/lib/PackerFiles/OS/RHEL/Fedora.rb +59 -0
- data/lib/PackerFiles/OS/RHEL/FedoraCD.rb +68 -0
- data/lib/PackerFiles/OS/RHEL/Server.rb +32 -0
- data/lib/PackerFiles/OS/RHEL/Templates/Fedora_Tail_erb.rb +14 -0
- data/lib/PackerFiles/OS/RHEL/Templates/boot_command_fedora_erb.rb +16 -0
- data/lib/PackerFiles/OS/SUSE/Templates/Base_erb.xml +32 -0
- data/lib/PackerFiles/OS/SUSE/Templates/Disk_erb.xml +110 -0
- data/lib/PackerFiles/OS/SUSE/Templates/Keyboard_erb.xml +7 -0
- data/lib/PackerFiles/OS/SUSE/Templates/Locale_erb.xml +18 -0
- data/lib/PackerFiles/OS/SUSE/Templates/Network_erb.xml +143 -0
- data/lib/PackerFiles/OS/SUSE/Templates/Packages_erb.xml +29 -0
- data/lib/PackerFiles/OS/SUSE/Templates/Tail_erb.xml +4 -0
- data/lib/PackerFiles/OS/SUSE/Templates/TimeZone_erb.xml +15 -0
- data/lib/PackerFiles/OS/SUSE/Templates/User_erb.xml +57 -0
- data/lib/PackerFiles/OS/SUSE/Templates/boot_command_erb.rb +23 -0
- data/lib/PackerFiles/OS/SUSE/Templates/command_as_root_erb.rb +1 -0
- data/lib/PackerFiles/OS/SUSE/Templates/disable_root_erb.rb +1 -0
- data/lib/PackerFiles/OS/SUSE/Templates/enable_root_erb.rb +1 -0
- data/lib/PackerFiles/OS/SUSE/Templates/shutdown_command_erb.rb +1 -0
- data/lib/PackerFiles/OS/Ubuntu/CD.rb +81 -0
- data/lib/PackerFiles/OS/Ubuntu/Desktop.rb +50 -0
- data/lib/PackerFiles/OS/Ubuntu/DesktopCD.rb +16 -0
- data/lib/PackerFiles/OS/Ubuntu/Mirrors.rb +103 -0
- data/lib/PackerFiles/OS/Ubuntu/Server.rb +78 -0
- data/lib/PackerFiles/OS/Ubuntu/Templates/Apt_erb.rb +18 -0
- data/lib/PackerFiles/OS/Ubuntu/Templates/boot_command_desktop_erb.rb +36 -0
- data/lib/PackerFiles/OS/Ubuntu/Templates/boot_command_erb.rb +30 -0
- data/lib/PackerFiles/OS/Ubuntu/Templates/ubiquity_erb.rb +8 -0
- data/lib/PackerFiles/OS/example/Doc.txt +8 -0
- data/lib/PackerFiles/Provision/Base.rb +20 -0
- data/lib/PackerFiles/Provision/ChefSolo.rb +90 -0
- data/lib/PackerFiles/Provision/ChefSoloHelper.rb +72 -0
- data/lib/PackerFiles/Provision/Copy.rb +22 -0
- data/lib/PackerFiles/Provision/ExternalScript.rb +43 -0
- data/lib/PackerFiles/Provision/InlineScript.rb +37 -0
- data/lib/PackerFiles/Provision/Provisioners.rb +87 -0
- data/lib/PackerFiles/Provision/example/Provisioners.txt +21 -0
- data/lib/PackerFiles/Utils/AutoZone.rb +96 -0
- data/lib/PackerFiles/Utils/FastestURL.rb +73 -0
- data/lib/PackerFiles/Utils/Generator.rb +34 -0
- data/lib/PackerFiles/Utils/HashSerializer.rb +110 -0
- data/lib/PackerFiles/Utils/Size.rb +44 -0
- data/lib/PackerFiles/Utils/TypeAccessor.rb +71 -0
- data/lib/PackerFiles/Virtual/Hypervisors.rb +72 -0
- data/lib/PackerFiles/Virtual/KVM.rb +119 -0
- data/lib/PackerFiles/Virtual/KVMConverter.rb +79 -0
- data/lib/PackerFiles/Virtual/VMWare.rb +108 -0
- data/lib/PackerFiles/Virtual/VMWareConverter.rb +78 -0
- data/lib/PackerFiles/Virtual/VirtualBox.rb +98 -0
- data/lib/PackerFiles/Virtual/VirtualBoxConverter.rb +75 -0
- data/lib/PackerFiles/Virtual/example/Hypervisors.txt +23 -0
- data/lib/PackerFiles/version.rb +3 -0
- data/lib/PackerFiles.rb +44 -0
- data/spec/core/builder_spec.rb +84 -0
- data/spec/core/cdimage_spec.rb +159 -0
- data/spec/core/disk_spec.rb +191 -0
- data/spec/core/keyboard_spec.rb +36 -0
- data/spec/core/locale_spec.rb +73 -0
- data/spec/core/network_spec.rb +96 -0
- data/spec/core/packages_spec.rb +18 -0
- data/spec/core/timezone_spec.rb +43 -0
- data/spec/core/user_spec.rb +44 -0
- data/spec/core/volume_group_spec.rb +53 -0
- data/spec/os/centos/cd_spec.rb +12 -0
- data/spec/os/centos/data/Server-Script-Provisioner.rb +57 -0
- data/spec/os/centos/data/Server.rb +55 -0
- data/spec/os/centos/data/chef-solo-provisioner.rb +58 -0
- data/spec/os/centos/finder_spec.rb +22 -0
- data/spec/os/centos/templates/boot_command_spec.rb +57 -0
- data/spec/os/centos/templates/disk_spec.rb +79 -0
- data/spec/os/centos/templates/keyboard_spec.rb +18 -0
- data/spec/os/centos/templates/locale_spec.rb +26 -0
- data/spec/os/centos/templates/network_spec.rb +38 -0
- data/spec/os/centos/templates/packages_spec.rb +18 -0
- data/spec/os/centos/templates/timezone_spec.rb +37 -0
- data/spec/os/centos/templates/user_spec.rb +24 -0
- data/spec/os/debian/apt_spec.rb +50 -0
- data/spec/os/debian/cd_spec.rb +30 -0
- data/spec/os/debian/data/7zip.tar.gz +0 -0
- data/spec/os/debian/data/All-sections.rb +60 -0
- data/spec/os/debian/data/Chef-Solo-Provisioner.rb +60 -0
- data/spec/os/debian/data/Copy-Provisioner.rb +61 -0
- data/spec/os/debian/data/External-Script-Provisioner.rb +69 -0
- data/spec/os/debian/data/Missing-CDImage.rb +53 -0
- data/spec/os/debian/data/Missing-VMWare-KVM-sections.rb +51 -0
- data/spec/os/debian/data/Missing-sections.rb +53 -0
- data/spec/os/debian/data/Script-Provisioner.rb +62 -0
- data/spec/os/debian/data/chef-solo-cookbooks/git_setup/Berksfile.lock +32 -0
- data/spec/os/debian/data/chef-solo-cookbooks/git_setup/README.md +81 -0
- data/spec/os/debian/data/chef-solo-cookbooks/git_setup/attributes/default.rb +3 -0
- data/spec/os/debian/data/chef-solo-cookbooks/git_setup/metadata.rb +11 -0
- data/spec/os/debian/data/chef-solo-cookbooks/git_setup/recipes/default.rb +30 -0
- data/spec/os/debian/data/chef-solo.json +5 -0
- data/spec/os/debian/data/test-script.sh +4 -0
- data/spec/os/debian/finder_spec.rb +59 -0
- data/spec/os/debian/mirrors_spec.rb +18 -0
- data/spec/os/debian/preseed_spec.rb +56 -0
- data/spec/os/debian/server_spec.rb +59 -0
- data/spec/os/debian/templates/apt_spec.rb +20 -0
- data/spec/os/debian/templates/boot_command_spec.rb +56 -0
- data/spec/os/debian/templates/disk_spec.rb +81 -0
- data/spec/os/debian/templates/keyboard_spec.rb +18 -0
- data/spec/os/debian/templates/locale_spec.rb +36 -0
- data/spec/os/debian/templates/mirrors_spec.rb +16 -0
- data/spec/os/debian/templates/network_spec.rb +38 -0
- data/spec/os/debian/templates/packages_spec.rb +17 -0
- data/spec/os/debian/templates/timezone_spec.rb +36 -0
- data/spec/os/debian/templates/user_spec.rb +25 -0
- data/spec/os/finder_spec.rb +21 -0
- data/spec/os/rhel/data/Fedora.rb +45 -0
- data/spec/os/rhel/data/Server-Custom.rb +54 -0
- data/spec/os/rhel/data/Server.rb +45 -0
- data/spec/os/rhel/finder_spec.rb +21 -0
- data/spec/os/ubuntu/cd_spec.rb +28 -0
- data/spec/os/ubuntu/data/Desktop.rb +61 -0
- data/spec/os/ubuntu/data/Server.rb +61 -0
- data/spec/os/ubuntu/finder_spec.rb +17 -0
- data/spec/os/ubuntu/mirrors_spec.rb +18 -0
- data/spec/utils/autozone_spec.rb +33 -0
- data/spec/virtual/virtual_box_spec.rb +16 -0
- 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,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
|