Lots of improvements everywhere
This commit is contained in:
@@ -5,6 +5,7 @@ output_*
|
|||||||
serial-output*
|
serial-output*
|
||||||
grub.cfg
|
grub.cfg
|
||||||
isolinux.cfg
|
isolinux.cfg
|
||||||
|
Vagrantfile
|
||||||
|
|
||||||
# Generated distros
|
# Generated distros
|
||||||
distros/fedora-rawhide-*.hcl
|
distros/fedora-rawhide-*.hcl
|
||||||
|
|||||||
@@ -22,3 +22,11 @@
|
|||||||
path = http/centos-stream
|
path = http/centos-stream
|
||||||
url = https://github.com/greg-hellings/centos-stream-kickstarts-mirror.git
|
url = https://github.com/greg-hellings/centos-stream-kickstarts-mirror.git
|
||||||
branch = main
|
branch = main
|
||||||
|
[submodule "http/fedora/f37"]
|
||||||
|
path = http/fedora/f37
|
||||||
|
url = https://pagure.io/fedora-kickstarts.git
|
||||||
|
branch = f37
|
||||||
|
[submodule "http/fedora/f38"]
|
||||||
|
path = http/fedora/f38
|
||||||
|
url = https://pagure.io/fedora-kickstarts.git
|
||||||
|
branch = f38
|
||||||
|
|||||||
+1
-6
@@ -5,8 +5,7 @@
|
|||||||
* Date: ${formatdate("DD MMM YYYY", timestamp())}
|
* Date: ${formatdate("DD MMM YYYY", timestamp())}
|
||||||
* Bugs: [vms](https://github.com/greg-hellings/vms/issues)
|
* Bugs: [vms](https://github.com/greg-hellings/vms/issues)
|
||||||
|
|
||||||
A bare-minimum installation of the guest OS. x86_64/amd64 builds are done on
|
A bare-minimum installation of the guest OS.
|
||||||
[Github Actions](https://github.com/greg-hellings/vms/actions) at regular intervals.
|
|
||||||
|
|
||||||
If you encounter a bug in the box, please file an issue. If you
|
If you encounter a bug in the box, please file an issue. If you
|
||||||
want a newer version of your desired operating system or want to add a distribution to this
|
want a newer version of your desired operating system or want to add a distribution to this
|
||||||
@@ -17,7 +16,3 @@ works.
|
|||||||
The goal is to have the bare minimum software to be considered a basic installation of the guest
|
The goal is to have the bare minimum software to be considered a basic installation of the guest
|
||||||
OS that is still accessible with Vagrant. Straggling packages or leftover files from the build
|
OS that is still accessible with Vagrant. Straggling packages or leftover files from the build
|
||||||
process should be considered as bugs to be filed.
|
process should be considered as bugs to be filed.
|
||||||
|
|
||||||
A big shoutout to Github Actions for offering a full VM experience, by default, and generous
|
|
||||||
execution times ranging up to 6 hours per task, which allows use of their platform to build
|
|
||||||
these boxes with no additional cost to the community.
|
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
CentOS 7 with virtualbox-iso does not auto-build. Network will not enable by default during building
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
# backwards compatibility). Please don't change it unless you know what
|
# backwards compatibility). Please don't change it unless you know what
|
||||||
# you're doing.
|
# you're doing.
|
||||||
Vagrant.configure("2") do |config|
|
Vagrant.configure("2") do |config|
|
||||||
config.vm.box = "test"
|
config.vm.box = "@@BOX@@"
|
||||||
|
|
||||||
# Create a private network, which allows host-only access to the machine
|
# Create a private network, which allows host-only access to the machine
|
||||||
# using a specific IP.
|
# using a specific IP.
|
||||||
@@ -38,6 +38,7 @@ Vagrant.configure("2") do |config|
|
|||||||
# documentation for more information about their specific syntax and use.
|
# documentation for more information about their specific syntax and use.
|
||||||
config.vm.provision "shell", inline: <<-SHELL
|
config.vm.provision "shell", inline: <<-SHELL
|
||||||
set -ex
|
set -ex
|
||||||
ls -l /
|
cat /etc/os-release
|
||||||
|
cat /etc/vagrant_box_build_time
|
||||||
SHELL
|
SHELL
|
||||||
end
|
end
|
||||||
@@ -1,11 +1,16 @@
|
|||||||
- name: install guest additions
|
- name: install guest additions
|
||||||
hosts: default
|
hosts: default
|
||||||
pre_tasks:
|
pre_tasks:
|
||||||
|
- name: Pause for a moment in case we need cloud-init to finish
|
||||||
|
ansible.builtin.pause:
|
||||||
|
seconds: 20
|
||||||
|
|
||||||
- name: Update all the things
|
- name: Update all the things
|
||||||
become: true
|
become: true
|
||||||
ansible.builtin.package: # noqa package-latest
|
ansible.builtin.package: # noqa package-latest
|
||||||
name: "*"
|
name: "*"
|
||||||
state: latest
|
state: latest
|
||||||
|
update_cache: true
|
||||||
when: ansible_facts.pkg_mgr not in ['atomic_container']
|
when: ansible_facts.pkg_mgr not in ['atomic_container']
|
||||||
register: _update_all
|
register: _update_all
|
||||||
retries: 3
|
retries: 3
|
||||||
@@ -23,12 +28,15 @@
|
|||||||
- name: Restart the machine
|
- name: Restart the machine
|
||||||
become: true
|
become: true
|
||||||
ansible.builtin.reboot:
|
ansible.builtin.reboot:
|
||||||
|
when: (_update_atomic is changed) or (_update_all is changed)
|
||||||
roles:
|
roles:
|
||||||
- role: devroles.system.epel
|
- role: devroles.system.epel
|
||||||
- role: virtualbox
|
- role: virtualbox
|
||||||
when: packer_builder_type == 'virtualbox-iso'
|
when: packer_builder_type == 'virtualbox-iso'
|
||||||
- role: vmware
|
- role: vmware
|
||||||
when: packer_builder_type == 'vmware-iso'
|
when: packer_builder_type == 'vmware-iso'
|
||||||
|
- role: qemu
|
||||||
|
when: packer_builder_type == 'qemu'
|
||||||
- role: init
|
- role: init
|
||||||
- role: locale
|
- role: locale
|
||||||
- role: vagrant
|
- role: vagrant
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
- name: Install qemu-guest-agent
|
||||||
|
become: true
|
||||||
|
ansible.builtin.package:
|
||||||
|
name:
|
||||||
|
- qemu-guest-agent
|
||||||
|
state: present
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
- name: get build time
|
- name: get build time
|
||||||
become: true
|
become: true
|
||||||
ansible.builtin.copy:
|
ansible.builtin.copy:
|
||||||
content: "{{ ansible_facts.date_time.date }}"
|
content: "{{ ansible_facts.date_time.date }} {{ ansible_facts.date_time.hour }}:{{ ansible_facts.date_time.minute }}"
|
||||||
dest: /etc/vagrant_box_build_time
|
dest: /etc/vagrant_box_build_time
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
|
|||||||
@@ -1,15 +1,5 @@
|
|||||||
virtualbox_packages:
|
virtualbox_packages:
|
||||||
- kernel
|
- virtualbox-guest-additions
|
||||||
- kernel-devel
|
virtualbox_services: []
|
||||||
- kernel-headers
|
virtualbox_from_iso: false
|
||||||
- gcc
|
|
||||||
- make
|
|
||||||
- perl
|
|
||||||
- elfutils-libelf-devel
|
|
||||||
- tar
|
|
||||||
- bzip2
|
|
||||||
- dkms
|
|
||||||
virtualbox_services:
|
|
||||||
- dkms
|
|
||||||
virtualbox_from_iso: true
|
|
||||||
virtualbox_pre_commands: []
|
virtualbox_pre_commands: []
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Name of the file to write out
|
|
||||||
name="${0%.sh}"
|
|
||||||
|
|
||||||
checksums="$(mktemp)"
|
|
||||||
until curl -f -L -o "${checksums}" "http://mirror.stream.centos.org/9-stream/BaseOS/x86_64/iso/CentOS-Stream-9-latest-x86_64-boot.iso.SHA256SUM"; do
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
sha="$(cat "${checksums}" | grep SHA256 | cut -d' ' -f 4)"
|
|
||||||
|
|
||||||
cat << EOF > "${name}"
|
|
||||||
distro = "centos"
|
|
||||||
version = "9stream"
|
|
||||||
iso = {
|
|
||||||
url = "http://mirror.stream.centos.org/9-stream/BaseOS/x86_64/iso/CentOS-Stream-9-latest-x86_64-boot.iso"
|
|
||||||
checksum = "${sha}"
|
|
||||||
}
|
|
||||||
boot_command = [
|
|
||||||
"<esc><wait>",
|
|
||||||
"linux net.ifnames=0 biosdevnames=0 inst.ks=http://{{.HTTPIP}}:{{.HTTPPort}}/centos/9stream-x86_64.ks console=ttyS0",
|
|
||||||
"<enter>"
|
|
||||||
]
|
|
||||||
EOF
|
|
||||||
@@ -6,6 +6,6 @@ iso = {
|
|||||||
}
|
}
|
||||||
boot_command = [
|
boot_command = [
|
||||||
"<esc><wait>",
|
"<esc><wait>",
|
||||||
"linux net.ifnames=0 biosdevnames=0 inst.ks=http://{{.HTTPIP}}:{{.HTTPPort}}/centos/7-x86_64.ks console=ttyS0",
|
"linux inst.ks=cdrom:/http/centos/7-x86_64.ks console=ttyS0",
|
||||||
"<enter>"
|
"<enter>"
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ iso = {
|
|||||||
checksum = "${sha}"
|
checksum = "${sha}"
|
||||||
}
|
}
|
||||||
boot_command = [
|
boot_command = [
|
||||||
"<esc><wait>",
|
"<up><tab><wait><bs><bs><bs><bs><bs>",
|
||||||
"linux net.ifnames=0 biosdevnames=0 inst.ks=http://{{.HTTPIP}}:{{.HTTPPort}}/centos/8stream/x86_64.ks console=ttyS0",
|
"inst.text inst.ks=cdrom:/http/centos/8stream/x86_64.ks console=ttyS0",
|
||||||
"<enter>"
|
"<enter><wait>"
|
||||||
]
|
]
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
Executable
+28
@@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
# Name of the file to write out
|
||||||
|
name="${0%.sh}"
|
||||||
|
|
||||||
|
baseurl="https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/iso/CentOS-Stream-9-latest-x86_64-boot.iso"
|
||||||
|
checksums="$(mktemp)"
|
||||||
|
until curl -f -L -o "${checksums}" "${baseurl}.SHA256SUM"; do
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
sha="$(cat "${checksums}" | awk '/SHA256/ {print $4}')"
|
||||||
|
rm "${checksums}"
|
||||||
|
|
||||||
|
cat << EOF > "${name}"
|
||||||
|
distro = "centos"
|
||||||
|
version = "9stream"
|
||||||
|
iso = {
|
||||||
|
url = "${baseurl}"
|
||||||
|
checksum = "${sha}"
|
||||||
|
}
|
||||||
|
boot_command = [
|
||||||
|
"<up><tab><wait><bs><bs><bs><bs><bs>",
|
||||||
|
"inst.text inst.ks=cdrom:/http/centos/9stream-x86_64.ks console=tty0",
|
||||||
|
"<enter><wait>"
|
||||||
|
]
|
||||||
|
EOF
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
distro = "debian"
|
distro = "debian"
|
||||||
version = "10"
|
version = "10"
|
||||||
iso = {
|
iso = {
|
||||||
url = "https://cdimage.debian.org/cdimage/archive/10.11.0/amd64/iso-cd/debian-10.11.0-amd64-netinst.iso"
|
url = "https://cdimage.debian.org/cdimage/archive/10.13.0/amd64/iso-cd/debian-10.13.0-amd64-netinst.iso"
|
||||||
checksum = "133430141272d8bf96cfb10b6bfd1c945f5a59ea0efc2bcb56d1033c7f2866ea"
|
checksum = "75aa64071060402a594dcf1e14afd669ca0f8bf757b56d4c9c1a31b8f7c8f931"
|
||||||
}
|
}
|
||||||
boot_command = [
|
boot_command = [
|
||||||
"<esc><wait>",
|
"<esc><wait>",
|
||||||
@@ -12,5 +12,6 @@ boot_command = [
|
|||||||
"biosdevnames=0 ",
|
"biosdevnames=0 ",
|
||||||
"preseed/url=http://{{.HTTPIP}}:{{ .HTTPPort }}/debian/10-preseed.cfg ",
|
"preseed/url=http://{{.HTTPIP}}:{{ .HTTPPort }}/debian/10-preseed.cfg ",
|
||||||
"console=ttyS0 ",
|
"console=ttyS0 ",
|
||||||
|
"console=tty0 ",
|
||||||
"<enter>"
|
"<enter>"
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
distro = "debian"
|
distro = "debian"
|
||||||
version = "11"
|
version = "11"
|
||||||
iso = {
|
iso = {
|
||||||
url = "https://cdimage.debian.org/cdimage/archive/11.2.0/amd64/iso-cd/debian-11.2.0-amd64-netinst.iso"
|
url = "https://cdimage.debian.org/cdimage/archive/11.7.0/amd64/iso-cd/debian-11.7.0-amd64-netinst.iso"
|
||||||
checksum = "45c9feabba213bdc6d72e7469de71ea5aeff73faea6bfb109ab5bad37c3b43bd"
|
checksum = "eb3f96fd607e4b67e80f4fc15670feb7d9db5be50f4ca8d0bf07008cb025766b"
|
||||||
}
|
}
|
||||||
boot_command = [
|
boot_command = [
|
||||||
"<esc><wait>",
|
"<esc><wait>",
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
distro = "debian"
|
||||||
|
version = "12"
|
||||||
|
iso = {
|
||||||
|
url = "https://cdimage.debian.org/cdimage/archive/12.0.0/amd64/iso-cd/debian-12.0.0-amd64-netinst.iso"
|
||||||
|
checksum = "3b0e9718e3653435f20d8c2124de6d363a51a1fd7f911b9ca0c6db6b3d30d53e"
|
||||||
|
}
|
||||||
|
boot_command = [
|
||||||
|
"<esc><wait>",
|
||||||
|
"auto ",
|
||||||
|
"DEBIAN_FRONTEND=text ",
|
||||||
|
"net.ifnames=0 ",
|
||||||
|
"biosdevnames=0 ",
|
||||||
|
"preseed/url=http://{{.HTTPIP}}:{{ .HTTPPort }}/debian/12-preseed.cfg ",
|
||||||
|
"console=ttyS0 ",
|
||||||
|
"<enter>"
|
||||||
|
]
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
distro = "fedora"
|
||||||
|
version = "37"
|
||||||
|
iso = {
|
||||||
|
url = "https://download.fedoraproject.org/pub/fedora/linux/releases/37/Server/x86_64/iso/Fedora-Server-dvd-x86_64-37-1.7.iso"
|
||||||
|
checksum = "0a4de5157af47b41a07a53726cd62ffabd04d5c1a4afece5ee7c7a84c1213e4f"
|
||||||
|
}
|
||||||
|
boot_command = [
|
||||||
|
"<up>e<down><down><end> ",
|
||||||
|
"net.ifnames=0 biosdevnames=0 inst.ks=cdrom:/http/fedora/37-x86_64.ks console=tty0 console=ttyS0<f10>"
|
||||||
|
]
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
distro = "fedora"
|
||||||
|
version = "38"
|
||||||
|
iso = {
|
||||||
|
url = "https://download.fedoraproject.org/pub/fedora/linux/releases/38/Server/x86_64/iso/Fedora-Server-dvd-x86_64-38-1.6.iso"
|
||||||
|
checksum = "66b52d7cb39386644cd740930b0bef0a5a2f2be569328fef6b1f9b3679fdc54d"
|
||||||
|
}
|
||||||
|
boot_command = [
|
||||||
|
"<up>e<down><down><end> ",
|
||||||
|
"net.ifnames=0 biosdevnames=0 inst.ks=cdrom:/http/fedora/38-x86_64.ks console=tty0 console=ttyS0<f10>"
|
||||||
|
]
|
||||||
@@ -35,7 +35,7 @@ iso = {
|
|||||||
}
|
}
|
||||||
boot_command = [
|
boot_command = [
|
||||||
"<up>e<down><down><end><bs><bs><bs><bs><bs>",
|
"<up>e<down><down><end><bs><bs><bs><bs><bs>",
|
||||||
"edd=off net.ifnames=0 biosdevnames=0 inst.ks=http://{{.HTTPIP}}:{{.HTTPPort}}/fedora/rawhide-x86_64.ks console=ttyS0<f10>"
|
"net.ifnames=0 biosdevnames=0 inst.ks=cdrom:/http/fedora/rawhide-x86_64.ks console=tty0 console=ttyS0<f10>"
|
||||||
]
|
]
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
distro = "ubuntu"
|
distro = "ubuntu"
|
||||||
version = "18.04"
|
version = "18.04"
|
||||||
iso = {
|
iso = {
|
||||||
#url = "http://releases.ubuntu.com/18.04/ubuntu-18.04.6-live-server-amd64.iso"
|
|
||||||
#checksum = "6c647b1ab4318e8c560d5748f908e108be654bad1e165f7cf4f3c1fc43995934"
|
|
||||||
url = "http://cdimage.ubuntu.com/ubuntu/releases/18.04/release/ubuntu-18.04.6-server-amd64.iso"
|
url = "http://cdimage.ubuntu.com/ubuntu/releases/18.04/release/ubuntu-18.04.6-server-amd64.iso"
|
||||||
checksum = "f5cbb8104348f0097a8e513b10173a07dbc6684595e331cb06f93f385d0aecf6"
|
checksum = "f5cbb8104348f0097a8e513b10173a07dbc6684595e331cb06f93f385d0aecf6"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
distro = "ubuntu"
|
distro = "ubuntu"
|
||||||
version = "20.04"
|
version = "20.04"
|
||||||
iso = {
|
iso = {
|
||||||
url = "https://releases.ubuntu.com/20.04/ubuntu-20.04.4-live-server-amd64.iso"
|
url = "https://releases.ubuntu.com/20.04/ubuntu-20.04.6-live-server-amd64.iso"
|
||||||
checksum = "28ccdb56450e643bad03bb7bcf7507ce3d8d90e8bf09e38f6bd9ac298a98eaad"
|
checksum = "b8f31413336b9393ad5d8ef0282717b2ab19f007df2e9ed5196c13d8f9153c8b"
|
||||||
}
|
}
|
||||||
boot_wait = "3s"
|
boot_wait = "3s"
|
||||||
boot_command = [
|
boot_command = [
|
||||||
@@ -10,5 +10,8 @@ boot_command = [
|
|||||||
"console=ttyS0 ",
|
"console=ttyS0 ",
|
||||||
"console=tty0 ",
|
"console=tty0 ",
|
||||||
"fsck.mode=skip ",
|
"fsck.mode=skip ",
|
||||||
|
"locale=en_US ",
|
||||||
|
"auto=true ",
|
||||||
|
"priority=critical ",
|
||||||
"autoinstall ds=nocloud-net;s=http://{{.HTTPIP}}:{{.HTTPPort}}/ubuntu/20.04/<enter><wait>"
|
"autoinstall ds=nocloud-net;s=http://{{.HTTPIP}}:{{.HTTPPort}}/ubuntu/20.04/<enter><wait>"
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,12 +1,15 @@
|
|||||||
distro = "ubuntu"
|
distro = "ubuntu"
|
||||||
version = "22.04"
|
version = "22.04"
|
||||||
iso = {
|
iso = {
|
||||||
url = "https://releases.ubuntu.com/jammy/ubuntu-22.04-live-server-amd64.iso"
|
url = "https://releases.ubuntu.com/jammy/ubuntu-22.04.2-live-server-amd64.iso"
|
||||||
checksum = "84aeaf7823c8c61baa0ae862d0a06b03409394800000b3235854a6b38eb4856f"
|
checksum = "5e38b55d57d94ff029719342357325ed3bda38fa80054f9330dc789cd2d43931"
|
||||||
}
|
}
|
||||||
boot_command = [
|
boot_command = [
|
||||||
"e<down><down><down><end><bs><bs><bs>",
|
"e<down><down><down><end><bs><bs><bs>",
|
||||||
"console=ttyS0 ",
|
|
||||||
"fsck.mode=skip ",
|
"fsck.mode=skip ",
|
||||||
"autoinstall ds=\"nocloud-net;s=http://{{.HTTPIP}}:{{.HTTPPort}}/ubuntu/22.04/\" console=ttyS0<F10>"
|
"net.ifnames=0 biosdevnames=0 ",
|
||||||
|
"locale=en_US ",
|
||||||
|
"auto=true ",
|
||||||
|
"priority=critical ",
|
||||||
|
"autoinstall ds=\"nocloud-net;s=http://{{.HTTPIP}}:{{.HTTPPort}}/ubuntu/22.04/\" console=tty0<F10> ",
|
||||||
]
|
]
|
||||||
|
|||||||
+1
-1
Submodule http/centos-stream updated: 9dd286be86...37e76497fe
@@ -1,19 +1,18 @@
|
|||||||
|
%include /tmp/packer_ks/centos-stream/CentOS-8-Stream-x86_64-Vagrant.ks
|
||||||
|
|
||||||
url --mirrorlist=http://mirrorlist.centos.org/?release=8-stream&arch=x86_64&repo=BaseOS&infra=stock
|
url --mirrorlist=http://mirrorlist.centos.org/?release=8-stream&arch=x86_64&repo=BaseOS&infra=stock
|
||||||
repo --name=AppStream --mirrorlist=http://mirrorlist.centos.org/?release=8-stream&arch=x86_64&repo=AppStream&infra=stock
|
repo --name=AppStream --mirrorlist=http://mirrorlist.centos.org/?release=8-stream&arch=x86_64&repo=AppStream&infra=stock
|
||||||
|
network --bootproto=dhcp --activate
|
||||||
%include /tmp/packer_ks/centos-upstream/CentOS-8-Stream-x86_64-Vagrant.ks
|
reboot
|
||||||
|
|
||||||
%pre --interpreter /bin/bash --log /tmp/greg
|
%pre --interpreter /bin/bash --log /tmp/greg
|
||||||
# This gets us the upstream kickstarter files
|
set -ex
|
||||||
cmdline=$(cat /proc/cmdline)
|
|
||||||
ks=$(printf "${cmdline}" | sed -E -e 's/.*inst\.ks=([^ ]*).*/\1/')
|
|
||||||
mkdir -p /tmp/packer_ks
|
|
||||||
cd /tmp/packer_ks
|
|
||||||
# 3 levels up!
|
|
||||||
wget -m -nH "$(dirname "$(dirname "$(dirname "${ks}")")")"
|
|
||||||
|
|
||||||
# This allows us to support virtualbox
|
# This allows us to support virtualbox
|
||||||
|
mkdir /tmp/sr1
|
||||||
|
mount /dev/sr1 /tmp/sr1
|
||||||
|
cp -r /tmp/sr1/http /tmp/packer_ks
|
||||||
|
|
||||||
if [ ! -e /dev/vda ]; then
|
if [ ! -e /dev/vda ]; then
|
||||||
sed -i -e 's/drives=vda/drives=sda/' -e 's/ondisk=vda/ondisk=sda/' -e 's/shutdown/reboot/' /tmp/packer_ks/centos-upstream/*
|
sed -i -e 's/drives=vda/drives=sda/' -e 's/ondisk=vda/ondisk=sda/' /tmp/packer_ks/centos-stream/*
|
||||||
fi
|
fi
|
||||||
%end
|
%end
|
||||||
|
|||||||
@@ -1,19 +1,17 @@
|
|||||||
url --mirrorlist=http://mirrorlist.centos.org/?release=9-stream&arch=x86_64&repo=BaseOS&infra=stock
|
|
||||||
repo --name=AppStream --mirrorlist=http://mirrorlist.centos.org/?release=9-stream&arch=x86_64&repo=AppStream&infra=stock
|
|
||||||
|
|
||||||
%include /tmp/packer_ks/centos-stream/CentOS-9-Stream-x86_64-Vagrant.ks
|
%include /tmp/packer_ks/centos-stream/CentOS-9-Stream-x86_64-Vagrant.ks
|
||||||
|
|
||||||
%pre --interpreter /bin/bash --log /tmp/greg
|
url --metalink=https://mirrors.centos.org/metalink?arch=x86_64&repo=centos-baseos-9-stream
|
||||||
# This gets us the upstream kickstarter files
|
repo --name=AppStream --metalink=https://mirrors.centos.org/metalink?arch=x86_64&repo=centos-appstream-9-stream
|
||||||
cmdline=$(cat /proc/cmdline)
|
reboot
|
||||||
ks=$(printf "${cmdline}" | sed -E -e 's/.*inst\.ks=([^ ]*).*/\1/')
|
|
||||||
mkdir -p /tmp/packer_ks
|
|
||||||
cd /tmp/packer_ks
|
|
||||||
# 3 levels up!
|
|
||||||
wget -m -nH "$(dirname "$(dirname "${ks}")")"
|
|
||||||
|
|
||||||
|
%pre --interpreter /bin/bash --log /tmp/greg
|
||||||
|
set -ex
|
||||||
# This allows us to support virtualbox
|
# This allows us to support virtualbox
|
||||||
|
mkdir /tmp/sr1
|
||||||
|
mount /dev/sr1 /tmp/sr1
|
||||||
|
cp -r /tmp/sr1/http /tmp/packer_ks
|
||||||
|
|
||||||
if [ ! -e /dev/vda ]; then
|
if [ ! -e /dev/vda ]; then
|
||||||
sed -i -e 's/drives=vda/drives=sda/' -e 's/ondisk=vda/ondisk=sda/' -e 's/shutdown/reboot/' /tmp/packer_ks/centos-stream/*
|
sed -i -e 's/drives=vda/drives=sda/' -e 's/ondisk=vda/ondisk=sda/' /tmp/packer_ks/centos-stream/*
|
||||||
fi
|
fi
|
||||||
%end
|
%end
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
d-i debian-installer/locale string en_US
|
||||||
|
d-i keyboard-configuration/xkb-keymap select us
|
||||||
|
|
||||||
|
d-i passwd/root-password-again password vagrant
|
||||||
|
d-i passwd/root-password password vagrant
|
||||||
|
d-i passwd/user-fullname string vagrant
|
||||||
|
d-i passwd/username string vagrant
|
||||||
|
d-i passwd/user-password password vagrant
|
||||||
|
d-i passwd/user-password-again password vagrant
|
||||||
|
|
||||||
|
d-i time/zone string UTC
|
||||||
|
|
||||||
|
d-i partman-auto/method string regular
|
||||||
|
d-i partman-auto/expert_recipe string \
|
||||||
|
scheme :: \
|
||||||
|
200 0 200 ext4 \
|
||||||
|
$primary{ } \
|
||||||
|
$bootable{ } \
|
||||||
|
method{ format } \
|
||||||
|
format{ } \
|
||||||
|
use_filesystem{ } \
|
||||||
|
filesystem{ ext4 } \
|
||||||
|
mountpoint{ /boot } . \
|
||||||
|
200% 0 200% linux-swap \
|
||||||
|
$primary{ } \
|
||||||
|
method{ swap } \
|
||||||
|
format{ } . \
|
||||||
|
1 0 -1 ext4 \
|
||||||
|
$primary{ } \
|
||||||
|
method{ format } \
|
||||||
|
format{ } \
|
||||||
|
use_filesystem{ } \
|
||||||
|
filesystem{ ext4 } \
|
||||||
|
mountpoint{ / } .
|
||||||
|
d-i partman-partitioning/confirm_write_new_label boolean true
|
||||||
|
d-i partman/choose_partition select finish
|
||||||
|
d-i partman/confirm boolean true
|
||||||
|
d-i partman/confirm_nooverwrite boolean true
|
||||||
|
|
||||||
|
d-i apt-setup/non-free boolean true
|
||||||
|
d-i apt-setup/contrib boolean true
|
||||||
|
|
||||||
|
tasksel tasksel/first multiselect
|
||||||
|
d-i pkgsel/include string curl openssh-server sudo python3
|
||||||
|
|
||||||
|
d-i grub-installer/bootdev string default
|
||||||
|
|
||||||
|
d-i finish-install/reboot_in_progress note
|
||||||
|
|
||||||
|
d-i preseed/early_command string \
|
||||||
|
sed -i \
|
||||||
|
-e "/in-target/i echo 'd() { /sbin/discover \"\$@\" | grep -v virtualbox; }' > /target/etc/discover-pkginstall.conf" \
|
||||||
|
-e "/in-target/i echo 'discover=d' >> /target/etc/discover-pkginstall.conf" \
|
||||||
|
/usr/lib/pre-pkgsel.d/20install-hwpackages
|
||||||
|
d-i preseed/late_command string \
|
||||||
|
echo 'Defaults:vagrant !requiretty' > /target/etc/sudoers.d/vagrant; \
|
||||||
|
echo 'vagrant ALL=(ALL) NOPASSWD: ALL' >> /target/etc/sudoers.d/vagrant; \
|
||||||
|
chmod 440 /target/etc/sudoers.d/vagrant
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
%include /tmp/packer_ks/fedora/f37/fedora-cloud-base-vagrant.ks
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
%packages
|
||||||
|
# There is weirdness with the /etc/resolv.conf in the target system
|
||||||
|
# that causes some of the imported systems to fail. Hopefully this
|
||||||
|
# prevents that.
|
||||||
|
-systemd-resolved
|
||||||
|
NetworkManager
|
||||||
|
%end
|
||||||
|
|
||||||
|
%pre --interpreter /bin/bash --log /tmp/greg
|
||||||
|
set -ex
|
||||||
|
# This allows us to support virtualbox
|
||||||
|
mkdir /tmp/sr1
|
||||||
|
mount /dev/sr1 /tmp/sr1
|
||||||
|
cp -r /tmp/sr1/http /tmp/packer_ks
|
||||||
|
|
||||||
|
if [ ! -e /dev/vda ]; then
|
||||||
|
ln -s /dev/sda /dev/vda
|
||||||
|
fi
|
||||||
|
%end
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
%include /tmp/packer_ks/fedora/f38/fedora-cloud-base-vagrant.ks
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
%packages
|
||||||
|
# There is weirdness with the /etc/resolv.conf in the target system
|
||||||
|
# that causes some of the imported systems to fail. Hopefully this
|
||||||
|
# prevents that.
|
||||||
|
-systemd-resolved
|
||||||
|
NetworkManager
|
||||||
|
%end
|
||||||
|
|
||||||
|
%pre --interpreter /bin/bash --log /tmp/greg
|
||||||
|
set -ex
|
||||||
|
# This allows us to support virtualbox
|
||||||
|
mkdir /tmp/sr1
|
||||||
|
mount /dev/sr1 /tmp/sr1
|
||||||
|
cp -r /tmp/sr1/http /tmp/packer_ks
|
||||||
|
|
||||||
|
if [ ! -e /dev/vda ]; then
|
||||||
|
ln -s /dev/sda /dev/vda
|
||||||
|
fi
|
||||||
|
%end
|
||||||
Submodule
+1
Submodule http/fedora/f37 added at dc9e3b2cea
Submodule
+1
Submodule http/fedora/f38 added at 69c726f753
+1
-1
Submodule http/fedora/rawhide updated: 0d98964c73...fe345ff841
+11
-75
@@ -2,82 +2,19 @@
|
|||||||
# vim: set ft=yaml:
|
# vim: set ft=yaml:
|
||||||
autoinstall:
|
autoinstall:
|
||||||
version: 1
|
version: 1
|
||||||
apt:
|
|
||||||
preserve_sources_list: false
|
|
||||||
primary:
|
|
||||||
- arches: [i386, amd64]
|
|
||||||
uri: http://archive.ubuntu.com/ubuntu
|
|
||||||
- arches: [default]
|
|
||||||
uri: http://ports.ubuntu.com/ubuntu-ports
|
|
||||||
geoip: false
|
|
||||||
network: # Should disable networking, workaround for unattended-updates failing in install
|
network: # Should disable networking, workaround for unattended-updates failing in install
|
||||||
version: 2
|
version: 2
|
||||||
|
ethernets:
|
||||||
|
eth0:
|
||||||
|
dhcp4: yes
|
||||||
|
dhcp6: no
|
||||||
refresh-installer:
|
refresh-installer:
|
||||||
update: no
|
update: no
|
||||||
keyboard:
|
keyboard:
|
||||||
layout: us
|
layout: us
|
||||||
variant: ""
|
|
||||||
toggle: null
|
toggle: null
|
||||||
storage:
|
variant: ''
|
||||||
config:
|
locale: en_US.UTF-8
|
||||||
- id: drive
|
|
||||||
type: disk
|
|
||||||
ptable: gpt
|
|
||||||
name: hard-drive
|
|
||||||
preserve: false
|
|
||||||
grub_device: true
|
|
||||||
wipe: superblock
|
|
||||||
- id: bios-grub
|
|
||||||
type: partition
|
|
||||||
device: drive
|
|
||||||
size: 1M
|
|
||||||
flag: bios_grub
|
|
||||||
- id: boot-partition
|
|
||||||
type: partition
|
|
||||||
device: drive
|
|
||||||
size: 1G
|
|
||||||
name: boot
|
|
||||||
- id: swap-partition
|
|
||||||
type: partition
|
|
||||||
device: drive
|
|
||||||
size: 10%
|
|
||||||
name: swap
|
|
||||||
flag: swap
|
|
||||||
- id: root-partition
|
|
||||||
type: partition
|
|
||||||
device: drive
|
|
||||||
name: root
|
|
||||||
size: -1
|
|
||||||
- id: boot-format
|
|
||||||
type: format
|
|
||||||
fstype: ext4
|
|
||||||
volume: boot-partition
|
|
||||||
label: boot
|
|
||||||
preserve: false
|
|
||||||
- id: swap-format
|
|
||||||
type: format
|
|
||||||
fstype: swap
|
|
||||||
volume: swap-partition
|
|
||||||
label: swap
|
|
||||||
preserve: false
|
|
||||||
- id: root-format
|
|
||||||
type: format
|
|
||||||
fstype: ext4
|
|
||||||
volume: root-partition
|
|
||||||
label: root
|
|
||||||
preserve: false
|
|
||||||
- type: mount
|
|
||||||
id: root-mount
|
|
||||||
device: root-format
|
|
||||||
path: /
|
|
||||||
- type: mount
|
|
||||||
id: boot-mount
|
|
||||||
device: boot-format
|
|
||||||
path: /boot
|
|
||||||
- type: mount
|
|
||||||
id: swap-mount
|
|
||||||
device: swap-format
|
|
||||||
path: none
|
|
||||||
identity:
|
identity:
|
||||||
hostname: vagrant
|
hostname: vagrant
|
||||||
username: vagrant
|
username: vagrant
|
||||||
@@ -89,18 +26,17 @@ autoinstall:
|
|||||||
allow-pw: yes
|
allow-pw: yes
|
||||||
user-data:
|
user-data:
|
||||||
disable_root: false
|
disable_root: false
|
||||||
|
package_update: false # These will be done by Ansible after install
|
||||||
|
package_upgrade: false
|
||||||
late-commands:
|
late-commands:
|
||||||
- echo 'Defaults:vagrant !requiretty' > /target/etc/sudoers.d/vagrant
|
- echo 'Defaults:vagrant !requiretty' > /target/etc/sudoers.d/vagrant
|
||||||
- echo 'vagrant ALL=(ALL) NOPASSWD:ALL' >> /target/etc/sudoers.d/vagrant
|
- echo 'vagrant ALL=(ALL) NOPASSWD:ALL' >> /target/etc/sudoers.d/vagrant
|
||||||
- chmod 440 /target/etc/sudoers.d/vagrant
|
- chmod 440 /target/etc/sudoers.d/vagrant
|
||||||
# Restore network after bypassing unattended updates
|
# Restore network after bypassing unattended updates
|
||||||
- "echo -n 'network:\n version: 2\n ethernets:\n eth0:\n dhcp4: true\n dhcp-identifier: mac' > /target/etc/netplan/00-installer-config.yaml"
|
|
||||||
- netplan apply
|
|
||||||
- sed -i -E -e 's/GRUB_CMDLINE_LINUX="(.*)"/GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevnames=0\1"/' /target/etc/default/grub
|
- sed -i -E -e 's/GRUB_CMDLINE_LINUX="(.*)"/GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevnames=0\1"/' /target/etc/default/grub
|
||||||
- mount -o bind /dev /target/dev
|
- curtin in-target --target=/target -- update-grub
|
||||||
- mount -o bind /sys /target/sys
|
- curtin in-target --target=/target -- logger "finished late-commands"
|
||||||
- mount -o bind /proc /target/proc
|
|
||||||
- chroot /target /usr/sbin/update-grub
|
|
||||||
packages:
|
packages:
|
||||||
|
- ca-certificates
|
||||||
- curl
|
- curl
|
||||||
- sudo
|
- sudo
|
||||||
|
|||||||
+12
-66
@@ -4,70 +4,17 @@ autoinstall:
|
|||||||
version: 1
|
version: 1
|
||||||
network: # Should disable networking, workaround for unattended-updates failing in install
|
network: # Should disable networking, workaround for unattended-updates failing in install
|
||||||
version: 2
|
version: 2
|
||||||
|
ethernets:
|
||||||
|
eth0:
|
||||||
|
dhcp4: yes
|
||||||
|
dhcp6: no
|
||||||
refresh-installer:
|
refresh-installer:
|
||||||
update: no
|
update: no
|
||||||
keyboard:
|
keyboard:
|
||||||
layout: us
|
layout: us
|
||||||
storage:
|
toggle: null
|
||||||
config:
|
variant: ''
|
||||||
- id: drive
|
locale: en_US.UTF-8
|
||||||
type: disk
|
|
||||||
ptable: gpt
|
|
||||||
name: hard-drive
|
|
||||||
preserve: false
|
|
||||||
grub_device: true
|
|
||||||
wipe: superblock
|
|
||||||
- id: bios-grub
|
|
||||||
type: partition
|
|
||||||
device: drive
|
|
||||||
size: 1M
|
|
||||||
flag: bios_grub
|
|
||||||
- id: boot-partition
|
|
||||||
type: partition
|
|
||||||
device: drive
|
|
||||||
size: 1G
|
|
||||||
name: boot
|
|
||||||
- id: swap-partition
|
|
||||||
type: partition
|
|
||||||
device: drive
|
|
||||||
size: 10%
|
|
||||||
name: swap
|
|
||||||
flag: swap
|
|
||||||
- id: root-partition
|
|
||||||
type: partition
|
|
||||||
device: drive
|
|
||||||
name: root
|
|
||||||
size: -1
|
|
||||||
- id: boot-format
|
|
||||||
type: format
|
|
||||||
fstype: ext4
|
|
||||||
volume: boot-partition
|
|
||||||
label: boot
|
|
||||||
preserve: false
|
|
||||||
- id: swap-format
|
|
||||||
type: format
|
|
||||||
fstype: swap
|
|
||||||
volume: swap-partition
|
|
||||||
label: swap
|
|
||||||
preserve: false
|
|
||||||
- id: root-format
|
|
||||||
type: format
|
|
||||||
fstype: ext4
|
|
||||||
volume: root-partition
|
|
||||||
label: root
|
|
||||||
preserve: false
|
|
||||||
- type: mount
|
|
||||||
id: root-mount
|
|
||||||
device: root-format
|
|
||||||
path: /
|
|
||||||
- type: mount
|
|
||||||
id: boot-mount
|
|
||||||
device: boot-format
|
|
||||||
path: /boot
|
|
||||||
- type: mount
|
|
||||||
id: swap-mount
|
|
||||||
device: swap-format
|
|
||||||
path: none
|
|
||||||
identity:
|
identity:
|
||||||
hostname: vagrant
|
hostname: vagrant
|
||||||
username: vagrant
|
username: vagrant
|
||||||
@@ -79,18 +26,17 @@ autoinstall:
|
|||||||
allow-pw: yes
|
allow-pw: yes
|
||||||
user-data:
|
user-data:
|
||||||
disable_root: false
|
disable_root: false
|
||||||
|
package_update: false
|
||||||
|
package_upgrade: false
|
||||||
late-commands:
|
late-commands:
|
||||||
- echo 'Defaults:vagrant !requiretty' > /target/etc/sudoers.d/vagrant
|
- echo 'Defaults:vagrant !requiretty' > /target/etc/sudoers.d/vagrant
|
||||||
- echo 'vagrant ALL=(ALL) NOPASSWD:ALL' >> /target/etc/sudoers.d/vagrant
|
- echo 'vagrant ALL=(ALL) NOPASSWD:ALL' >> /target/etc/sudoers.d/vagrant
|
||||||
- chmod 440 /target/etc/sudoers.d/vagrant
|
- chmod 440 /target/etc/sudoers.d/vagrant
|
||||||
# Restore network after bypassing unattended updates
|
# Restore network after bypassing unattended updates
|
||||||
- "echo -n 'network:\n version: 2\n ethernets:\n eth0:\n dhcp4: true\n dhcp-identifier: mac' > /target/etc/netplan/00-installer-config.yaml"
|
|
||||||
- netplan apply
|
|
||||||
- sed -i -E -e 's/GRUB_CMDLINE_LINUX="(.*)"/GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevnames=0\1"/' /target/etc/default/grub
|
- sed -i -E -e 's/GRUB_CMDLINE_LINUX="(.*)"/GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevnames=0\1"/' /target/etc/default/grub
|
||||||
- mount -o bind /dev /target/dev
|
- curtin in-target --target=/target -- update-grub
|
||||||
- mount -o bind /sys /target/sys
|
- curtin in-target --target=/target -- logger "finished late-commands"
|
||||||
- mount -o bind /proc /target/proc
|
|
||||||
- chroot /target /usr/sbin/update-grub
|
|
||||||
packages:
|
packages:
|
||||||
|
- ca-certificates
|
||||||
- curl
|
- curl
|
||||||
- sudo
|
- sudo
|
||||||
|
|||||||
+20
-3
@@ -1,3 +1,20 @@
|
|||||||
|
packer {
|
||||||
|
required_plugins {
|
||||||
|
qemu = {
|
||||||
|
source = "github.com/hashicorp/qemu"
|
||||||
|
version = "~> 1"
|
||||||
|
}
|
||||||
|
ansible = {
|
||||||
|
source = "github.com/hashicorp/ansible"
|
||||||
|
version = "~> 1"
|
||||||
|
}
|
||||||
|
vagrant = {
|
||||||
|
source = "github.com/hashicorp/vagrant"
|
||||||
|
version = "~> 1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
build {
|
build {
|
||||||
sources = [
|
sources = [
|
||||||
"source.qemu.x86_64",
|
"source.qemu.x86_64",
|
||||||
@@ -10,9 +27,9 @@ build {
|
|||||||
user = local.ssh.username
|
user = local.ssh.username
|
||||||
use_sftp = true
|
use_sftp = true
|
||||||
ansible_ssh_extra_args = [
|
ansible_ssh_extra_args = [
|
||||||
"-o HostKeyAlgorithms=+ssh-rsa ",
|
#"-o", "HostKeyAlgorithms=+ssh-rsa",
|
||||||
"-o PubkeyAcceptedKeyTypes=+ssh-rsa ",
|
#"-o", "PubkeyAcceptedKeyTypes=+ssh-rsa",
|
||||||
"-o IdentitiesOnly=yes"
|
"-o", "IdentitiesOnly=yes"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -49,6 +49,16 @@ variable "build" {
|
|||||||
default = "0.1"
|
default = "0.1"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
variable "cd_files" {
|
||||||
|
type = list(string)
|
||||||
|
default = []
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "cd_label" {
|
||||||
|
type = string
|
||||||
|
default = "cidata"
|
||||||
|
}
|
||||||
|
|
||||||
locals {
|
locals {
|
||||||
name = "${var.distro}-${var.version}-${var.arch}"
|
name = "${var.distro}-${var.version}-${var.arch}"
|
||||||
description = templatefile("../README.box.md", {
|
description = templatefile("../README.box.md", {
|
||||||
@@ -66,5 +76,6 @@ locals {
|
|||||||
password = "vagrant"
|
password = "vagrant"
|
||||||
handshake_attempts = 1000
|
handshake_attempts = 1000
|
||||||
timeout = "5h45m"
|
timeout = "5h45m"
|
||||||
|
private_key_file = "vagrant/insecure_key"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ source "qemu" "x86_64" {
|
|||||||
ssh_username = local.ssh.username
|
ssh_username = local.ssh.username
|
||||||
ssh_password = local.ssh.password
|
ssh_password = local.ssh.password
|
||||||
ssh_handshake_attempts = local.ssh.handshake_attempts
|
ssh_handshake_attempts = local.ssh.handshake_attempts
|
||||||
|
ssh_private_key_file = local.ssh.private_key_file
|
||||||
|
|
||||||
vm_name = "packer-${local.name}"
|
vm_name = "packer-${local.name}"
|
||||||
disk_size = "${local.disk_size}G"
|
disk_size = "${local.disk_size}G"
|
||||||
@@ -23,11 +24,15 @@ source "qemu" "x86_64" {
|
|||||||
headless = var.headless
|
headless = var.headless
|
||||||
disk_cache = "writeback"
|
disk_cache = "writeback"
|
||||||
format = "qcow2"
|
format = "qcow2"
|
||||||
|
cpu_model = "host"
|
||||||
|
|
||||||
qemuargs = [
|
qemuargs = [
|
||||||
["-chardev", "stdio,id=char0,logfile=serial-output-qemu-${var.arch}-${var.distro}-${var.version},signal=off"],
|
["-chardev", "stdio,id=char0,logfile=serial-output-qemu-${var.arch}-${var.distro}-${var.version},signal=off"],
|
||||||
["-serial", "chardev:char0"]
|
["-serial", "chardev:char0"]
|
||||||
]
|
]
|
||||||
http_directory = "http"
|
|
||||||
accelerator = var.qemu_accelerator
|
accelerator = var.qemu_accelerator
|
||||||
|
|
||||||
|
http_directory = "http"
|
||||||
|
cd_files = var.cd_files
|
||||||
|
cd_label = var.cd_label
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,13 +18,15 @@ source "virtualbox-iso" "x86_64" {
|
|||||||
cpus = local.cpus
|
cpus = local.cpus
|
||||||
memory = local.memory
|
memory = local.memory
|
||||||
headless = var.headless
|
headless = var.headless
|
||||||
guest_os_type = "${var.distro}_64"
|
nic_type = "virtio"
|
||||||
guest_additions_url = "http://download.virtualbox.org/virtualbox/6.1.34/VBoxGuestAdditions_6.1.34.iso"
|
guest_os_type = "RedHat_64"
|
||||||
guest_additions_sha256 = "88f86fa0e6970b6a7c80d714b7a91a8c425ff8ef53a3e73fc80781191a87257b"
|
guest_additions_url = "http://download.virtualbox.org/virtualbox/7.0.10/VBoxGuestAdditions_7.0.10.iso"
|
||||||
|
guest_additions_sha256 = "bbabd89b8fff38a257bab039a278f0c4dc4426eff6e4238c1db01edb7284186a"
|
||||||
vboxmanage = [
|
vboxmanage = [
|
||||||
["modifyvm", "{{ .Name }}", "--uart1", "0x3F8", "4"],
|
["modifyvm", "{{ .Name }}", "--uart1", "0x3F8", "4"],
|
||||||
["modifyvm", "{{ .Name }}", "--uartmode1", "file", "serial-output-virtualbox-${var.arch}-${var.distro}-${var.version}"]
|
["modifyvm", "{{ .Name }}", "--uartmode1", "file", "serial-output-virtualbox-${var.arch}-${var.distro}-${var.version}"]
|
||||||
]
|
]
|
||||||
|
|
||||||
http_directory = "http"
|
http_directory = "http"
|
||||||
|
cd_files = [ "http/${var.cd_files_path}" ]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
#!env bash
|
|
||||||
|
|
||||||
set -exo pipefail
|
|
||||||
|
|
||||||
build="${1}"
|
|
||||||
provider=virtualbox-iso.x86_64
|
|
||||||
#provider=qemu.x86_64
|
|
||||||
|
|
||||||
packer build -on-error=ask -var headless=false -var-file distros/${build}.pkrvars.hcl -except=upload -only=${provider} sources/
|
|
||||||
vagrant box add -f --name test ${build}.box
|
|
||||||
vagrant up
|
|
||||||
vagrant ssh -c "ls -la ~/"
|
|
||||||
vagrant destroy -f
|
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
#!env xonsh
|
||||||
|
# vim: set ft=xonsh:
|
||||||
|
import argparse
|
||||||
|
import pathlib
|
||||||
|
import re
|
||||||
|
import time
|
||||||
|
|
||||||
|
|
||||||
|
def get_vagrant_provider(provider):
|
||||||
|
"Vagrant provider is not always the same as Packer provider"
|
||||||
|
if provider.startswith("qemu"):
|
||||||
|
return "libvirt"
|
||||||
|
elif provider.startswith("virtualbox"):
|
||||||
|
return "virtualbox"
|
||||||
|
|
||||||
|
|
||||||
|
def get_providers():
|
||||||
|
"List of providers as defined in sources/"
|
||||||
|
providers: list[str] = [
|
||||||
|
"virtualbox-iso.x86_64",
|
||||||
|
"qemu.x86_64"
|
||||||
|
]
|
||||||
|
return providers
|
||||||
|
|
||||||
|
|
||||||
|
def get_builds():
|
||||||
|
"List of builds as supported in distros/"
|
||||||
|
base = pathlib.Path(__file__)
|
||||||
|
distros = base.parent / "distros"
|
||||||
|
builds = [str(p.stem).rsplit(".", 1)[0] for p in distros.glob("**/*.pkrvars.hcl")]
|
||||||
|
return builds
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# Equivalent of `set -e` in Bash
|
||||||
|
$RAISE_SUBPROC_ERROR = True
|
||||||
|
|
||||||
|
# Parse user arguments
|
||||||
|
parser = argparse.ArgumentParser("Test script")
|
||||||
|
parser.add_argument("--build", "-b", required=True, choices=get_builds())
|
||||||
|
parser.add_argument("--provider", "-p", default="virtualbox-iso.x86_64", choices=get_providers())
|
||||||
|
parser.add_argument("--headless", action="store_true")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if args.headless:
|
||||||
|
headless = "headless=true"
|
||||||
|
else:
|
||||||
|
headless = "headless=false"
|
||||||
|
|
||||||
|
packer build -var @(headless) -var-file distros/@(args.build).pkrvars.hcl -except=upload -only=@(args.provider) sources/
|
||||||
|
vagrant box add --force --name @(args.build) @(args.build).box
|
||||||
|
sed -e f's/@@BOX@@/{args.build}/' Vagrantfile.in > Vagrantfile
|
||||||
|
vagrant up --provider @(get_vagrant_provider(args.provider)) --provision
|
||||||
|
vagrant ssh -c "ls -la ~/"
|
||||||
|
vagrant destroy -f
|
||||||
|
rm -r .vagrant
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
Executable
+16
@@ -0,0 +1,16 @@
|
|||||||
|
#!/usr/bin/env xonsh
|
||||||
|
source test.xsh
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# Equivalent of `set -e` in Bash
|
||||||
|
$RAISE_SUBPROC_ERROR = True
|
||||||
|
for distro in get_builds():
|
||||||
|
print(f"Trying {distro}")
|
||||||
|
./test.xsh -b @(distro) -p qemu.x86_64 --headless
|
||||||
|
rm -r serial-output-qemu* output_qemu* *.box
|
||||||
|
for x in range(10):
|
||||||
|
print("***" * 20)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
@@ -5,9 +5,11 @@ Vagrant.configure('2') do |c|
|
|||||||
v.driver = 'kvm'
|
v.driver = 'kvm'
|
||||||
v.connect_via_ssh = false
|
v.connect_via_ssh = false
|
||||||
v.username = 'root'
|
v.username = 'root'
|
||||||
|
v.memory = 2048
|
||||||
end
|
end
|
||||||
c.vm.provider :virtualbox do |v|
|
c.vm.provider :virtualbox do |v|
|
||||||
v.gui = false
|
v.gui = false
|
||||||
|
v.memory = 2048
|
||||||
end
|
end
|
||||||
c.vm.provider :vmware_fusion do |v|
|
c.vm.provider :vmware_fusion do |v|
|
||||||
v.gui = false
|
v.gui = false
|
||||||
|
|||||||
Reference in New Issue
Block a user