Automating the Building of VMs with Packer

This page summarizes the projects mentioned and recommended in the original post on dev.to

InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
www.influxdata.com
featured
Stream - Scalable APIs for Chat, Feeds, Moderation, & Video.
Stream helps developers build engaging apps that scale to millions with performant and flexible Chat, Feeds, Moderation, and Video APIs and SDKs powered by a global edge network and enterprise-grade infrastructure.
getstream.io
featured
  1. autoinstall-desktop

    Traditionally, to support unattended installations, so-called preseed files were used. However, in recent releases, these have been deprecated in favor of autoinstall, a tool that allows for unattended OS installations with the help of cloud-init. Instead of booting an ISO image and manually selecting options, one can describe the system installation in a YAML file (the reference can be found here) and boot the system with specific options. Internally, cloud-init will start and check for special files, meta-data, and user-data, in the specified location. The only drawback is that this solution is available for server releases. However, here is a link to official Canonical user-data files that can be used as a reference for installing the desktop environment. The following is an example of user-data that was used to prepare the server:

  2. InfluxDB

    InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.

    InfluxDB logo
  3. packer_templates

    You can find the complete code used in this article here.

  4. Vagrant

    Vagrant is a tool for building and distributing development environments.

    Another important tool from the same organization is Vagrant, which provides extra help in running VMs built with Packer. Of course, the choice of a VM provider is also very important, as some VM providers may not be supported on certain platforms. For example, there are no VMware or VirtualBox releases that support Apple Silicon. However, QEMU is supported on most platforms, including Apple Silicon, which is why this provider was chosen here.

  5. QEMU

    Official QEMU mirror. Please see https://www.qemu.org/contribute/ for how to submit changes to QEMU. Pull Requests are ignored. Please only use release tarballs from the QEMU website.

    Another important tool from the same organization is Vagrant, which provides extra help in running VMs built with Packer. Of course, the choice of a VM provider is also very important, as some VM providers may not be supported on certain platforms. For example, there are no VMware or VirtualBox releases that support Apple Silicon. However, QEMU is supported on most platforms, including Apple Silicon, which is why this provider was chosen here.

  6. Packer

    Packer is a tool for creating identical machine images for multiple platforms from a single source configuration.

    Setting up the VM and all the necessary tools usually takes time and effort. Automating this process would be much faster, more convenient, and significantly less error-prone. While one can write scripts to set up VMs, this approach requires new implementations for each virtualization software technology. Various tools exist for this purpose, but I am going to use Packer because it is open source, widely adopted, and well-supported. It supports all modern VM providers, such as VirtualBox, VMware, KVM, and various cloud providers. It is also highly configurable and can be extended if you need functionality not yet supported by the tool.

  7. ubuntu.com

    The official website for the Ubuntu operating system

    The next important question is choosing the Linux distro. One of the most popular Linux distros is Ubuntu, which will be considered here.

  8. kubernetes

    Production-Grade Container Scheduling and Management

    Learning new tools like Kubernetes and explore different ways of installing it, experimenting with various plugins, etc. If these tools are installed natively on the host and something goes wrong, it might require resetting the host.

  9. Stream

    Stream - Scalable APIs for Chat, Feeds, Moderation, & Video. Stream helps developers build engaging apps that scale to millions with performant and flexible Chat, Feeds, Moderation, and Video APIs and SDKs powered by a global edge network and enterprise-grade infrastructure.

    Stream logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • wait-for VS Wait4X - a user suggested alternative

    2 projects | 19 Mar 2025
  • AWS open source newsletter, #207

    4 projects | dev.to | 27 Feb 2025
  • The Home Server Journey - 1: Motivation and Approach

    2 projects | dev.to | 15 Sep 2024
  • Go is my hammer, and everything is a nail

    24 projects | news.ycombinator.com | 12 Aug 2024
  • Mitigating disruption during Amazon EKS cluster upgrade with blue/green deployment

    4 projects | dev.to | 26 Jun 2024

Did you know that Go is
the 4th most popular programming language
based on number of references?