⚠️ Outdated repository
This GitHub repository is outdated and no longer actively maintained. Feel free to fork it if needed.
Things which may still be handy:
- The packer template build process is using Ansible to configure the Linux/Windows VMs.
- Packer build process is using GitHub Action + MacOS runners to build the images which are uploaded to Vagrant Cloud.
Anyway - I recommend to use some other alternatives...
root
/ Administrator
password is vagrant
or is not set.
Default login credentials:
vagrant
vagrant
Drivers / Devices added for the VMs for specific providers.
Some of the images/templates begins with "my_" - they are preconfigured with Ansible role:
sysprep
: unattended.xmlInstalled during installation:
Installed components via Ansible playbook win-simple.yml for Windows:
If you have necessary software installed+configured on your local machine you can use the following commands to build the images. You can build the images using the build script build.sh or directly with Packer.
Ubuntu requirements:
sudo apt update
sudo apt install -y ansible curl dnsmasq freerdp2-x11 git jq libc6-dev libvirt-daemon-system libvirt-dev python3-winrm qemu-kvm qemu-utils sshpass xorriso unzip virtualbox
PACKER_LATEST_VERSION="$(curl -s https://checkpoint-api.hashicorp.com/v1/check/packer | jq -r -M '.current_version')"
curl "https://releases.hashicorp.com/packer/${PACKER_LATEST_VERSION}/packer_${PACKER_LATEST_VERSION}_linux_amd64.zip" --output /tmp/packer_linux_amd64.zip
sudo unzip /tmp/packer_linux_amd64.zip -d /usr/local/bin/
rm /tmp/packer_linux_amd64.zip
VAGRANT_LATEST_VERSION=$(curl -s https://checkpoint-api.hashicorp.com/v1/check/vagrant | jq -r -M '.current_version')
curl "https://releases.hashicorp.com/vagrant/${VAGRANT_LATEST_VERSION}/vagrant_${VAGRANT_LATEST_VERSION}_x86_64.deb" --output /tmp/vagrant_x86_64.deb
sudo apt install --no-install-recommends -y /tmp/vagrant_x86_64.deb
rm /tmp/vagrant_x86_64.deb
sudo gpasswd -a "${USER}" kvm
sudo gpasswd -a "${USER}" libvirt
sudo gpasswd -a "${USER}" vboxusers
vagrant plugin install vagrant-libvirt
Debian 10+ requirements:
VirtualBox is not in Debian 10 or later. If you need it, you will need to figure out a way to install it.
echo 'deb http://deb.debian.org/debian bullseye main contrib non-free' | sudo tee /etc/apt/sources.list.d/bullseye.list
sudo sed --regexp-extended 's/^([^#].+\s+main)$/\1 contrib non-free/;' --in-place /etc/apt/sources.list ## Ensure required apt components are enabled.
cat << EOF | sudo tee /etc/apt/preferences.d/bullseye.pref
Explanation: Just install packages from bullseye if they are not in buster or buster-backports. Do not upgrade. Delete this file when you want to upgrade to bullseye.
Package: *
Pin: release o=Debian,n=bullseye
Pin-Priority: 50
EOF
sudo apt update
sudo apt install -y ansible curl dnsmasq freerdp2-x11 git jq libc6-dev libvirt-daemon-system libvirt-dev python3-winrm qemu-kvm qemu-utils sshpass xorriso unzip packer/bullseye vagrant vagrant-libvirt
sudo gpasswd -a "${USER}" kvm
sudo gpasswd -a "${USER}" libvirt
sudo gpasswd -a "${USER}" vboxusers ## If you have VirtualBox installed.
Fedora requirements:
sudo dnf install "https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm"
sudo dnf install -y ansible curl freerdp git jq libvirt libvirt-devel qemu-kvm ruby-devel xorriso unzip VirtualBox
PACKER_LATEST_VERSION="$(curl -s https://checkpoint-api.hashicorp.com/v1/check/packer | jq -r -M '.current_version')"
curl "https://releases.hashicorp.com/packer/${PACKER_LATEST_VERSION}/packer_${PACKER_LATEST_VERSION}_linux_amd64.zip" --output /tmp/packer_linux_amd64.zip
sudo unzip /tmp/packer_linux_amd64.zip -d /usr/local/bin/
rm /tmp/packer_linux_amd64.zip
VAGRANT_LATEST_VERSION=$(curl -s https://checkpoint-api.hashicorp.com/v1/check/vagrant | jq -r -M '.current_version')
sudo dnf install -y "https://releases.hashicorp.com/vagrant/${VAGRANT_LATEST_VERSION}/vagrant-${VAGRANT_LATEST_VERSION}-1.x86_64.rpm"
CONFIGURE_ARGS="with-ldflags=-L/opt/vagrant/embedded/lib with-libvirt-include=/usr/include/libvirt with-libvirt-lib=/usr/lib64/libvirt" vagrant plugin install vagrant-libvirt
sudo gpasswd -a "${USER}" kvm
sudo gpasswd -a "${USER}" libvirt
sudo gpasswd -a "${USER}" vboxusers
systemctl start libvirtd
git clone --recurse-submodules https://github.com/ruzickap/packer-templates.git
cd packer-templates || exit
Ubuntu:
# Ubuntu Server
./build.sh ubuntu-{20.04,18.04,16.04}-server-amd64-{libvirt,virtualbox}
# Ubuntu Desktop
./build.sh ubuntu-{20.04,18.04}-desktop-amd64-{libvirt,virtualbox}
# Ubuntu Server - customized
./build.sh my_ubuntu-{20.04,18.04,16.04}-server-amd64-{libvirt,virtualbox}
Windows:
# Windows Server
./build.sh windows-server-2016-standard-x64-eval-{libvirt,virtualbox}
./build.sh windows-server-2019-standard-x64-eval-{libvirt,virtualbox}
./build.sh windows-server-2022-standard-x64-eval-{libvirt,virtualbox}
# Windows 10
./build.sh windows-10-enterprise-x64-eval-{libvirt,virtualbox}
# Windows 10 - customized
./build.sh my_windows-10-enterprise-x64-eval-{libvirt,virtualbox}
Ubuntu:
export PACKER_IMAGES_OUTPUT_DIR="/var/tmp/"
export LOGDIR="/tmp/"
# Ubuntu Server
export NAME="ubuntu-20.04-server-amd64"
export UBUNTU_IMAGES_URL="http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/"
export UBUNTU_TYPE="server"
packer build -only="qemu" ubuntu-server.json
export NAME="ubuntu-18.04-server-amd64"
export UBUNTU_IMAGES_URL="http://archive.ubuntu.com/ubuntu/dists/bionic-updates/main/installer-amd64/current/images/"
export UBUNTU_TYPE="server"
packer build -only="qemu" ubuntu-server.json
export NAME="ubuntu-16.04-server-amd64"
export UBUNTU_IMAGES_URL="http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/installer-amd64/current/images/"
export UBUNTU_TYPE="server"
packer build -only="qemu" ubuntu-server.json
# Ubuntu Desktop
export NAME="ubuntu-20.04-desktop-amd64"
export UBUNTU_IMAGES_URL="http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/"
export UBUNTU_TYPE="desktop"
packer build -only="qemu" ubuntu-desktop.json
# Ubuntu Server - customized
export NAME="my_ubuntu-20.04-server-amd64"
export UBUNTU_IMAGES_URL="http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/"
export UBUNTU_TYPE="server"
packer build -only="qemu" my_ubuntu-server.json
export NAME="my_ubuntu-18.04-server-amd64"
export UBUNTU_IMAGES_URL="http://archive.ubuntu.com/ubuntu/dists/bionic-updates/main/installer-amd64/current/images/"
export UBUNTU_TYPE="server"
packer build -only="qemu" my_ubuntu-server.json
export NAME="my_ubuntu-16.04-server-amd64"
export UBUNTU_IMAGES_URL="http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/installer-amd64/current/images/"
export UBUNTU_TYPE="server"
packer build -only="qemu" my_ubuntu-server.json
Windows:
export PACKER_IMAGES_OUTPUT_DIR="/var/tmp/"
export TMPDIR="/var/tmp"
export LOGDIR="/tmp/"
export VIRTIO_WIN_ISO_DIR="/var/tmp/virtio-win"
curl -L -o "${TMPDIR}/virtio-win.iso" https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso
xorriso -report_about WARNING -osirrox on -indev "${TMPDIR}/virtio-win.iso" -extract / "${VIRTIO_WIN_ISO_DIR}"
find "${VIRTIO_WIN_ISO_DIR}" -type d -exec chmod u+rwx {} \;
# Windows Server
## Windows Server 2022
export NAME="windows-server-2022-standard-x64-eval"
export WINDOWS_VERSION="2022"
export ISO_URL="https://software-static.download.prss.microsoft.com/sg/download/888969d5-f34g-4e03-ac9d-1f9786c66749/SERVER_EVAL_x64FRE_en-us.iso"
packer build -only="qemu" windows.json
## Windows Server 2019
export NAME="windows-server-2019-standard-x64-eval"
export WINDOWS_VERSION="2019"
export ISO_URL="https://software-static.download.prss.microsoft.com/dbazure/988969d5-f34g-4e03-ac9d-1f9786c66749/17763.3650.221105-1748.rs5_release_svc_refresh_SERVER_EVAL_x64FRE_en-us.iso"
packer build -only="qemu" windows.json
## Windows Server 2016
export NAME="windows-server-2016-standard-x64-eval"
export WINDOWS_VERSION="2016"
export ISO_URL="https://software-download.microsoft.com/download/pr/Windows_Server_2016_Datacenter_EVAL_en-us_14393_refresh.ISO"
packer build -only="qemu" windows.json
# Windows 10
export NAME="windows-10-enterprise-x64-eval"
export WINDOWS_VERSION="10"
export VIRTIO_WIN_ISO_DIR="/var/tmp/virtio-win"
export ISO_URL="https://software-static.download.prss.microsoft.com/dbazure/988969d5-f34g-4e03-ac9d-1f9786c66750/19045.2006.220908-0225.22h2_release_svc_refresh_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso"
export PACKER_IMAGES_OUTPUT_DIR="/var/tmp/"
packer build -only="qemu" windows.json
# Windows 10 - customized
export NAME="my_windows-10-enterprise-x64-eval"
export WINDOWS_VERSION="10"
export VIRTIO_WIN_ISO_DIR="/var/tmp/virtio-win"
export ISO_URL="https://software-static.download.prss.microsoft.com/dbazure/988969d5-f34g-4e03-ac9d-1f9786c66750/19045.2006.220908-0225.22h2_release_svc_refresh_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso"
export PACKER_IMAGES_OUTPUT_DIR="/var/tmp/"
packer build -only="qemu" my_windows.json
build.sh
- build single image specified on command-linebuild_all.sh
- builds all imagesbuild_all_remote_ssh.sh
- connects to remote Ubuntu server, install
the necessary packages for building images and execute build_all.sh
vagrant_init_destroy_boxes.sh
- tests all *.box
images in the current
directory using vagrant add/up/ssh/winrm/destroy
GitLab CI configuration (obsolete) can be found here: GitLab_CI_configuration.md