1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Verify whether required plugins are installed.
required_plugins = [ "vagrant-disksize" ]
required_plugins.each do |plugin|
if not Vagrant.has_plugin?(plugin)
raise "The vagrant plugin #{plugin} is required. Please run `vagrant plugin install #{plugin}`"
end
end
Vagrant.configure(2) do |config|
# Configure all VM specs.
config.vm.provider "virtualbox" do |v|
v.memory = 8192
v.cpus = 8
end
# Configure the disk size.
disk_size = "160GB"
# The below options are good enough for the 'mini' flavor but
# make sure you export the variables to match the flavor you want to test.
config.vm.define "ubuntu1604" do |xenial|
xenial.vm.box = "ubuntu/xenial64"
xenial.disksize.size = disk_size
config.vm.provision "shell"do |s|
s.privileged = false
s.inline = <<-SHELL
cd /vagrant
export XCI_FLAVOR=${XCI_FLAVOR:-mini}
export VM_CPU=${VM_CPU:-2}
export VM_DISK=${VM_DISK:-40}
export VM_MEMORY_SIZE=${VM_MEMORY_SIZE:-2048}
export VM_DOMAIN_TYPE=qemu
[[ ! -e ${HOME}/.ssh/id_rsa ]] && ssh-keygen -q -P '' -f ${HOME}/.ssh/id_rsa
./xci-deploy.sh
SHELL
s.env = {
"XCI_FLAVOR" => "#{ENV['XCI_FLAVOR']}",
"VM_CPU" => "#{ENV['VM_CPU']}",
"VM_DISK" => "#{ENV['VM_DISK']}",
"VM_MEMORY_SIZE" => "#{ENV['VM_MEMORY_SIZE']}"
}
end
end
config.vm.define "centos7" do |centos7|
centos7.vm.box = "centos/7"
centos7.disksize.size = disk_size
# The CentOS build does not have growroot, so we
# have to do it ourselves.
config.vm.provision "shell" do |s|
s.privileged = false
s.inline = <<-SHELL
cd /vagrant
PART_START=$(parted /dev/sda --script unit MB print | awk '/^ 3 / {print $3}')
parted /dev/sda --script unit MB mkpart primary ${PART_START} 100%
parted /dev/sda --script set 4 lvm on
pvcreate /dev/sda4
vgextend VolGroup00 /dev/sda4
lvextend -l +100%FREE /dev/mapper/VolGroup00-LogVol00
xfs_growfs /dev/mapper/VolGroup00-LogVol00
export XCI_FLAVOR=${XCI_FLAVOR:-mini}
export VM_CPU=${VM_CPU:-2}
export VM_DISK=${VM_DISK:-40}
export VM_MEMORY_SIZE=${VM_MEMORY_SIZE:-2048}
export VM_DOMAIN_TYPE=qemu
[[ ! -e ${HOME}/.ssh/id_rsa ]] && ssh-keygen -q -P '' -f ${HOME}/.ssh/id_rsa
./xci-deploy.sh
SHELL
s.env = {
"XCI_FLAVOR" => "#{ENV['XCI_FLAVOR']}",
"VM_CPU" => "#{ENV['VM_CPU']}",
"VM_DISK" => "#{ENV['VM_DISK']}",
"VM_MEMORY_SIZE" => "#{ENV['VM_MEMORY_SIZE']}"
}
end
end
config.vm.define "opensuse422" do |leap422|
leap422.disksize.size = disk_size
leap422.vm.box = "opensuse/openSUSE-42.2-x86_64"
leap422.vm.provision "shell" do |s|
# NOTE(hwoarang) The parted version in Leap 42.2 can't do an online
# partition resize so we must create a new one and attach it to the
# btrfs filesystem.
s.privileged = true,
s.inline = <<-SHELL
cd /vagrant
echo -e 'd\n2\nn\np\n\n\n\nn\nw' | fdisk /dev/sda
PART_END=$(fdisk -l /dev/sda | grep ^/dev/sda2 | awk '{print $4}')
resizepart /dev/sda 2 $PART_END
btrfs fi resize max /
export XCI_FLAVOR=${XCI_FLAVOR:-mini}
export VM_CPU=${VM_CPU:-2}
export VM_DISK=${VM_DISK:-40}
export VM_MEMORY_SIZE=${VM_MEMORY_SIZE:-2048}
export VM_DOMAIN_TYPE=qemu
[[ ! -e ${HOME}/.ssh/id_rsa ]] && ssh-keygen -q -P '' -f ${HOME}/.ssh/id_rsa
./xci-deploy.sh
SHELL
end
end
config.vm.define "opensuse423" do |leap423|
leap423.disksize.size = disk_size
leap423.vm.box = "opensuse/openSUSE-42.3-x86_64"
leap423.vm.provision "shell" do |s|
# NOTE(hwoarang) The parted version in Leap 42.3 can't do an online
# partition resize so we must create a new one and attach it to the
# btrfs filesystem.
s.privileged = true,
s.inline = <<-SHELL
cd /vagrant
echo -e 'd\n2\nn\np\n\n\n\nn\nw' | fdisk /dev/sda
PART_END=$(fdisk -l /dev/sda | grep ^/dev/sda2 | awk '{print $4}')
resizepart /dev/sda 2 $PART_END
btrfs fi resize max /
export XCI_FLAVOR=${XCI_FLAVOR:-mini}
export VM_CPU=${VM_CPU:-2}
export VM_DISK=${VM_DISK:-40}
export VM_MEMORY_SIZE=${VM_MEMORY_SIZE:-2048}
export VM_DOMAIN_TYPE=qemu
[[ ! -e ${HOME}/.ssh/id_rsa ]] && ssh-keygen -q -P '' -f ${HOME}/.ssh/id_rsa
./xci-deploy.sh
SHELL
end
end
end
|