Skip to content

Instantly share code, notes, and snippets.

@takumin
Created April 12, 2014 02:51
Show Gist options
  • Save takumin/10516421 to your computer and use it in GitHub Desktop.
Save takumin/10516421 to your computer and use it in GitHub Desktop.
{
"builders": [
{
"type": "virtualbox-iso",
"vm_name": "freebsd64-100r",
"boot_wait": "15s",
"hard_drive_interface": "sata",
"disk_size": 4096,
"guest_os_type": "FreeBSD_64",
"iso_checksum": "fd25619fa0d69c29bea8347b1070ac75",
"iso_checksum_type": "md5",
"iso_url": "http://ftp.jaist.ac.jp/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/10.0/FreeBSD-10.0-RELEASE-amd64-disc1.iso",
"ssh_username": "vagrant",
"ssh_password": "vagrant",
"shutdown_command": "echo 'shutdown -p now' | su -",
"vboxmanage": [
[ "modifyvm", "{{.Name}}", "--memory", "512" ],
[ "modifyvm", "{{.Name}}", "--cpus", "1" ],
[ "modifyvm", "{{.Name}}", "--nictype1", "virtio" ],
[ "modifyvm", "{{.Name}}", "--audio", "none" ],
[ "modifyvm", "{{.Name}}", "--usb", "off" ]
],
"http_directory": ".",
"boot_command": [
"<enter><wait10><wait5>",
"l<enter><wait>",
"root<enter><wait>",
"dhclient vtnet0<enter><wait5>",
"fetch -o /tmp/install.sh http://{{.HTTPIP}}:{{.HTTPPort}}/install.sh && chmod +x /tmp/install.sh && /tmp/install.sh {{.Name}}<enter>",
"<wait10><wait10><wait10><wait10><wait10><wait10>"
]
}
],
"provisioners": [
{
"type": "shell",
"script": "postinstall.sh",
"override": {
"virtualbox-iso": {
"execute_command": "cat '{{.Path}}' | su -"
}
}
}
],
"post-processors": [
{
"type": "vagrant",
"only": ["virtualbox-iso"],
"output": "freebsd64-100r.box"
}
]
}
#!/bin/sh
NAME=$1
gpart create -s gpt ada0
gpart add -s 64k -t freebsd-boot -l boot ada0
gpart add -s 1g -t freebsd-swap -l swap ada0
gpart add -t freebsd-ufs -l disk ada0
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0
newfs -Ujl /dev/gpt/disk
tunefs -a enable /dev/gpt/disk
tunefs -N enable /dev/gpt/disk
mount /dev/gpt/disk /mnt
tar -xUpf /usr/freebsd-dist/base.txz -C /mnt
tar -xUpf /usr/freebsd-dist/kernel.txz -C /mnt
cat > /mnt/etc/fstab << __EOF__
# Device Mountpoint FStype Options Dump Pass #
/dev/gpt/swap none swap sw 0 0
/dev/gpt/disk / ufs rw 1 1
procfs /proc procfs rw 0 0
__EOF__
sysrc -R /mnt hostname=${NAME}
sysrc -R /mnt ifconfig_DEFAULT=DHCP
sysrc -R /mnt sshd_enable=YES
chroot /mnt pw useradd -n vagrant -c "Vagrant User" -G wheel,operator -m -s /bin/csh -h -
echo -n "vagrant" | pw -V /mnt/etc usermod -n vagrant -h 0
mkdir /mnt/home/vagrant/.ssh
echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key" > /mnt/home/vagrant/.ssh/authorized_keys
chmod 0700 /mnt/home/vagrant/.ssh
chown -R 1001:1001 /mnt/home/vagrant/.ssh
shutdown -r now
#!/bin/sh
rm /home/vagrant/*.iso
env ASSUME_ALWAYS_YES=yes pkg update -q
echo Install virtualbox-ose-additions.
pkg install -qy emulators/virtualbox-ose-additions
echo Install bash.
pkg install -qy shells/bash
echo Install sudo.
pkg install -qy security/sudo
echo Install puppet.
pkg install -qy sysutils/puppet
echo Install chef.
pkg install -qy sysutils/rubygem-chef
sysrc vboxguest_enable=YES
sysrc vboxservice_enable=YES
sysrc vboxservice_flags=--disable-timesync
pw usermod vagrant -s /usr/local/bin/bash
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment