{"id":32730766,"url":"https://github.com/rreye/packer-vagrant-boxes","last_synced_at":"2026-07-02T13:34:48.319Z","repository":{"id":321450551,"uuid":"1085872827","full_name":"rreye/packer-vagrant-boxes","owner":"rreye","description":"Packer factory for Vagrant Linux boxes","archived":false,"fork":false,"pushed_at":"2026-05-29T10:36:52.000Z","size":421,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-29T11:07:51.732Z","etag":null,"topics":["aarch64","alpine","amd64","arm64","libvirt","packer","qemu","rockylinux","ubuntu","vagrant","virtualbox","vmware","x86-64"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rreye.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-29T16:17:52.000Z","updated_at":"2026-05-29T10:36:56.000Z","dependencies_parsed_at":"2026-02-25T14:08:23.223Z","dependency_job_id":null,"html_url":"https://github.com/rreye/packer-vagrant-boxes","commit_stats":null,"previous_names":["rreye/packer-vagrant-boxes"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rreye/packer-vagrant-boxes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rreye%2Fpacker-vagrant-boxes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rreye%2Fpacker-vagrant-boxes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rreye%2Fpacker-vagrant-boxes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rreye%2Fpacker-vagrant-boxes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rreye","download_url":"https://codeload.github.com/rreye/packer-vagrant-boxes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rreye%2Fpacker-vagrant-boxes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35050017,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-02T02:00:06.368Z","response_time":173,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aarch64","alpine","amd64","arm64","libvirt","packer","qemu","rockylinux","ubuntu","vagrant","virtualbox","vmware","x86-64"],"created_at":"2025-11-03T05:00:47.545Z","updated_at":"2026-07-02T13:34:48.313Z","avatar_url":"https://github.com/rreye.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Packer Vagrant Box Factory (ARM64 \u0026 AMD64)\n\nThis repository contains Packer templates to build Vagrant boxes for both **`arm64` (aarch64 / Apple Silicon)** and **`amd64` (x86_64)** architectures.\n\nIt provides two distinct build pipelines, organized by build type:\n1.  **Customize from Base Box:** (Fast) Takes an existing box from Vagrant Cloud (e.g., `generic/ubuntu2404`) and provisions it.\n2.  **Build from ISO:** (Slow) Builds a box from scratch using an OS installer ISO and an unattended installation.\n\nAll builds are automated using GitHub Actions and a master Packer template.\n\n## 🏗️ Repository Structure\n\nThis repository uses a refactored structure to separate build types and keep templates DRY (Don't Repeat Yourself).\n\n*   `.github/`\n    *   `workflows/`\n        *   `build_from_box.yml`: Workflow for customizing boxes.\n        *   `build_from_iso.yml`: Workflow for building boxes from scratch.\n*   `os_configs/`\n    *   `\u003cos_name\u003e/` (e.g., `ubuntu`, `alpine`)\n        *   `\u003cos_version\u003e/` (e.g., `24.04`, `3.20`)\n            *   `box/`: Files for customizing an existing Vagrant box.\n                *   `box.pkrvars.hcl`: Defines the base box and provisioning scripts.\n                *   `scripts/`: Custom provisioning scripts for this OS.\n            *   `iso/`: Files for building a box from an installer ISO.\n                *   `common.pkrvars.hcl`: Defines common variables (e.g., guest OS type, boot commands).\n                *   `versions/`: Contains version-specific ISO details (URLs, checksums).\n                *   `http/`: Unattended installation files (e.g., `user-data`, `ks.cfg`).\n                *   `scripts/`: Custom provisioning scripts for this OS.\n*   `scripts/`:\n    *   `common/`: Common provisioning scripts shared across all builds (e.g., `vagrant.sh`, `sshd.sh`).\n*   `template.pkr.hcl`: The master Packer template used for all builds.\n*   `Vagrantfile.template`: A template for the `Vagrantfile` inside the generated box.\n\n---\n\n## 🚀 How to Build a Box\n\nThere are two separate workflows. Choose the one that matches your goal.\n\n### Method 1: Customize an Existing Box (Fast)\n\nUse this to apply custom provisioning to an existing Vagrant Cloud box.\n\n1.  Go to the **\"Actions\"** tab in the repository.\n2.  In the left sidebar, click on the **\"Build Vagrant Boxes (from other boxes)\"** workflow.\n3.  Click the **\"Run workflow\"** dropdown button.\n4.  Select the **`distro`** you want to build (e.g., `ubuntu-24.04`). This must match a corresponding directory in `os_configs/`.\n5.  Select the **`architecture`** (`amd64` or `arm64`).\n6.  Select the **`provider`** (`virtualbox`, `vmware`, or `libvirt`).\n7.  Click the green **\"Run workflow\"** button.\n\n### Method 2: Build from an ISO (Slow)\n\nUse this to create a new box from an OS installer ISO.\n\n1.  Go to the **\"Actions\"** tab.\n2.  In the left sidebar, click on the **\"Build Vagrant Boxes (from ISO)\"** workflow.\n3.  Click the **\"Run workflow\"** dropdown button.\n4.  Select the **`distro`** (e.g., `ubuntu-24.04`, `rocky-9`). This must match a directory in `os_configs/`.\n5.  Optionally, specify the **`iso_version`** to build (e.g., `24.04.3`). If left empty, the latest version will be used.\n6.  Select the **`architecture`** (`amd64` or `arm64`).\n7.  Select the **`provider`** (`virtualbox-iso`, `vmware-iso`, or `qemu`).\n8.  Click the green **\"Run workflow\"** button.\n\n### Downloading the Box\n\nAfter a workflow is complete, you can download your `.box` file from the **\"Artifacts\"** section on that workflow's summary page. Artifacts are automatically deleted after 14 days.\n\n---\n\n## ✨ How to Add a New Box\n\n### Adding a \"Customize from Box\" Configuration (e.g., Debian 12)\n\n1.  Create the directory structure: `os_configs/debian/12/box/scripts/`.\n2.  Add your custom provisioning scripts in the `scripts/` directory (e.g., `provision.sh`).\n3.  Create the variable definitions file: `os_configs/debian/12/box/box.pkrvars.hcl`.\n    ```hcl\n    // File: os_configs/debian/12/box/box.pkrvars.hcl\n    base_box         = \"generic/debian12\"\n    base_box_version = \"\u003e= 4.3.0\"\n    \n    box_provision_scripts = [\n      \"os_configs/debian/12/box/scripts/provision.sh\"\n    ]\n    ```\n4.  Go to `.github/workflows/build_from_box.yml` and add `debian-12` to the `options` list for the `distro` input.\n\n### Adding a \"Build from ISO\" Configuration (e.g., Fedora 40)\n\n1.  Create the directory structure: `os_configs/fedora/40/iso/http/` and `os_configs/fedora/40/iso/scripts/`.\n2.  Place unattended install files (e.g., `ks.cfg`) in the `http/` directory.\n3.  Add provisioning scripts in the `scripts/` directory.\n4.  Create the common variables file: `os_configs/fedora/40/iso/common.pkrvars.hcl`.\n    ```hcl\n    // File: os_configs/fedora/40/iso/common.pkrvars.hcl\n    box_name           = \"fedora-40\"\n    guest_os_type_vbox = \"Fedora_64\"\n    # ... other common variables ...\n\n    boot_command = [\n      \"\u003ctab\u003e\",\n      \" inst.ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks.cfg\",\n      \"\u003center\u003e\"\n    ]\n    ```\n5.  Create a version-specific file, e.g., `os_configs/fedora/40/iso/versions/40.20240422.pkrvars.hcl`.\n    ```hcl\n    // File: os_configs/fedora/40/iso/versions/40.20240422.pkrvars.hcl\n    box_version        = \"1.0.0\"\n    iso_url_amd64      = \"https://.../Fedora-Server-40-1.14-x86_64.iso\"\n    iso_checksum_amd64 = \"sha256:...\"\n    # ... other version-specific variables ...\n    ```\n6.  Go to `.github/workflows/build_from_iso.yml` and add `fedora-40` to the `options` list for the `distro` input.\n\n## 📜 License\n\nThis project is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frreye%2Fpacker-vagrant-boxes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frreye%2Fpacker-vagrant-boxes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frreye%2Fpacker-vagrant-boxes/lists"}