PackerFiles 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|