Pārlūkot izejas kodu

packer: Initial packer config

Michael Aldridge 6 gadi atpakaļ
vecāks
revīzija
5859e79c29

+ 2 - 0
.gitignore

@@ -4,7 +4,9 @@
 *.iso
 *.raw
 *.tar.gz
+*.box
 xbps-cache
 xbps-cachedir*
 stamps*
 !dracut/*/*.sh
+!packer/scripts/*.sh

+ 82 - 0
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
+}

+ 21 - 0
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

+ 51 - 0
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": [
+                "<tab><wait>",
+                "auto autourl=http://{{ .HTTPIP }}:{{ .HTTPPort }}/autoinstall.cfg",
+                "<enter>"
+            ],
+            "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`}}"
+            }
+        ]
+    ]
+}