diff --git a/.gitignore b/.gitignore index 8b26762..fa64bc2 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,9 @@ *.iso *.raw *.tar.gz +*.box xbps-cache xbps-cachedir* stamps* !dracut/*/*.sh +!packer/scripts/*.sh diff --git a/packer/http/autoinstall.cfg b/packer/http/autoinstall.cfg new file mode 100644 index 0000000..45baaea --- /dev/null +++ b/packer/http/autoinstall.cfg @@ -0,0 +1,82 @@ +#!/bin/sh +# Void Linux Automatic Install Configuration + +# === +# Disk Configuration +# === +# disk: the disk to install to +# default: the first disk that isn't the installer +#disk=/dev/hda + +# bootpartitionsize: controls how large the boot partition will be +# default: 500M +#bootpartitionsize=500M + +# swapsize: how large should the swap partition be +# default: equal to the installed physical memory +#swapsize= + +# === +# XBPS Configuration +# === +# xbpsrepository: which repo should the install pull from +# default: http://repo.voidlinux.eu/current + +# pkgs: additional packages to install into the target +# default: none +#pkgs="" + +# === +# Default User +# === +# username: the username of the user to be created +# default: voidlinux +username="vagrant" + +# password: password to set for the new user +# default: unset (will prompt during install) +# Warning: This does not work in musl! +password="vagrant" + +# === +# Misc. Options +# === +# timezone: Timezone in TZ format +# default: America/Chicago +#timezone="America/Chicago" + +# keymap: Keymap to use by default +# default: us +#keymap + +# locale: initial glibc locale +# default: en_US.UTF-8 +#libclocale=en.US.UTF-8 + +# hostname: static hostname for the system +# default: derived from DNS +#hostname=VoidLinux + +# end_action: what to do at the end of the install +# default: shutdown +# alternate values: reboot, script +end_action=func + +# end_script: script to optionally run at end of install +# the user script must reside somewhere xbps-uhelper fetch +# can retrieve it from +# default: not set + +end_function() { + printf "Linking default services" + chroot ${target} ln -s /etc/sv/dhcpcd /etc/runit/runsvdir/default/dhcpcd + chroot ${target} ln -s /etc/sv/sshd /etc/runit/runsvdir/default/sshd + + xbps-install -r ${target} -Sy dbus virtualbox-ose-guest + + chroot ${target} ln -s /etc/sv/dbus /etc/runit/runsvdir/default/dbus + chroot ${target} ln -s /etc/sv/vboxservice /etc/runit/runsvdir/default/vboxservice + + sync + reboot -f +} diff --git a/packer/scripts/vagrant.sh b/packer/scripts/vagrant.sh new file mode 100644 index 0000000..8de4bd4 --- /dev/null +++ b/packer/scripts/vagrant.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Set up sudo +echo '%vagrant ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/vagrant +echo 'Defaults:vagrant !requiretty' >> /etc/sudoers.d/vagrant +chmod 0440 /etc/sudoers.d/vagrant + +gpasswd -d vagrant wheel + +sudo xbps-install -Sy wget + +# Installing vagrant keys +mkdir /home/vagrant/.ssh +chmod 700 /home/vagrant/.ssh +cd /home/vagrant/.ssh +wget --no-check-certificate 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub' -O authorized_keys +chmod 600 /home/vagrant/.ssh/authorized_keys +chown -R vagrant /home/vagrant/.ssh + +# Install NFS for Vagrant +xbps-install -Sy nfs-utils diff --git a/packer/templates/vagrant-glibc64.json b/packer/templates/vagrant-glibc64.json new file mode 100644 index 0000000..29c2b3e --- /dev/null +++ b/packer/templates/vagrant-glibc64.json @@ -0,0 +1,51 @@ +{ + "variables": { + "version": "{{env `RELEASE`}}" + }, + "builders": [ + { + "type": "virtualbox-iso", + "vboxmanage": [ + ["modifyvm", "{{.Name}}", "--nictype1", "virtio"] + ], + "iso_url": "https://alpha.de.repo.voidlinux.org/live/20190217/void-live-x86_64-20190217.iso", + "iso_checksum": "b6884f6ea435e242c29a5778ced7a1ce187cef2f07eb9543765064a1256030e9", + "iso_checksum_type": "sha256", + "boot_wait": "5s", + "boot_command": [ + "", + "auto autourl=http://{{ .HTTPIP }}:{{ .HTTPPort }}/autoinstall.cfg", + "" + ], + "guest_os_type": "Linux_64", + "http_directory": "http", + "shutdown_command": "echo 'vagrant' | sudo -S shutdown -P now", + "ssh_wait_timeout": "20m", + "virtualbox_version_file": ".vbox_version", + "guest_additions_mode": "disable", + "ssh_username": "vagrant", + "ssh_password": "vagrant" + } + ], + + "provisioners": [ + { + "type": "shell", + "script": "scripts/vagrant.sh", + "execute_command": "echo 'vagrant' | {{.Vars}} sudo -E -S bash '{{.Path}}'" + } + ], + + "post-processors": [ + [ + { + "type": "vagrant" + }, + { + "type": "vagrant-cloud", + "box_tag": "voidlinux/glibc64", + "version": "{{user `version`}}" + } + ] + ] +}