diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml
index 10a648f83..3d16bdca9 100644
--- a/.github/workflows/ci-build.yml
+++ b/.github/workflows/ci-build.yml
@@ -27,14 +27,16 @@ jobs:
#
# powershell-lint:
# uses: chef/github-workflows/.github/workflows/powershell-lint.yml@main
-
- pkr-bld-hyper-v-x64:
- uses: ./.github/workflows/test-pkr-bld-hyperv-x64.yml
- secrets: inherit
- pkr-bld-parallels-x64:
- uses: ./.github/workflows/test-pkr-bld-parallels-x64.yml
- secrets: inherit
-
+#
+# packer-iso-check:
+# uses: chef/github-workflows/.github/workflows/packer-iso-url-checker.yml@main
+# with:
+# EXCLUDE_REGEX: 'amazonlinux-2.*|rhel.*|sles.*|solaris.*|windows-11-aarch64.*,macos-*'
+#
+# packer-lint:
+# uses: chef/github-workflows/.github/workflows/packer-lint.yml@main
+# secrets: inherit
+#
# pkr-bld-amazonlinux-x64:
# uses: ./.github/workflows/pkr-bld-amazonlinux-x64.yml
# secrets: inherit
@@ -84,6 +86,7 @@ jobs:
# - xml-lint
# - powershell-lint
# - shellcheck-lint
+# - packer-lint
# runs-on: Ubuntu-latest
# steps:
# - name: Decide whether the needed jobs succeeded or failed
@@ -92,3 +95,10 @@ jobs:
# allowed-failures:
# allowed-skips: ${{ toJSON(needs) }}
# jobs: ${{ toJSON(needs) }}
+
+ pkr-bld-hyper-v-x64:
+ uses: ./.github/workflows/test-pkr-bld-hyperv-x64.yml
+ secrets: inherit
+ pkr-bld-parallels-x64:
+ uses: ./.github/workflows/test-pkr-bld-parallels-x64.yml
+ secrets: inherit
diff --git a/.github/workflows/old/pkr-bld-amazonlinux-x64.yml b/.github/workflows/old/pkr-bld-amazonlinux-x64.yml
index 033202112..e12c54d14 100644
--- a/.github/workflows/old/pkr-bld-amazonlinux-x64.yml
+++ b/.github/workflows/old/pkr-bld-amazonlinux-x64.yml
@@ -4,51 +4,61 @@ on:
env:
PACKER_GITHUB_API_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+ PACKER_LOG: "1"
jobs:
x86_64:
- runs-on: [self-hosted, X64, virtualbox]
+ runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
os:
- amazonlinux-2
+ - amazonlinux-2023
steps:
+ - name: Install Vagrant and VirtualBox
+ run: |
+ wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
+ wget -O- https://www.virtualbox.org/download/oracle_vbox_2016.asc | gpg --dearmor | sudo tee /usr/share/keyrings/oracle-virtualbox-2016.gpg
+ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
+ echo "deb [signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] https://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
+ sudo apt-get update
+ sudo apt-get install -y software-properties-common vagrant virtualbox-7.0 qemu-utils genisoimage
+ VBoxManage --version
+ vagrant --version
+ - name: Install Chef
+ uses: actionshub/chef-install@3.0.0
+ - name: Setup Packer
+ uses: hashicorp/setup-packer@main
+ with:
+ version: latest
- name: Checkout
uses: actions/checkout@main
-# - name: Setup Packer
-# uses: hashicorp/setup-packer@main
-# with:
-# version: latest
- - name: Packer Init
- run: packer init -upgrade packer_templates
- - name: Packer FMT
- run: if packer fmt -check -recursive .; then exit 0; else echo "Some packer files need to be formatted, run 'packer fmt -recursive .' to fix"; exit 1; fi
- - name: Packer Validate
- run: packer validate -var-file=os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-x86_64.pkrvars.hcl" packer_templates
+ - name: Install Bento
+ run: |
+ eval "$(chef shell-init bash)"
+ gem build bento.gemspec
+ gem install bento-*.gem
- name: Bento build
run: |
+ rm -rf builds
+ sudo mkdir -p /mnt/builds/iso
+ sudo chmod -R 777 /mnt/builds
+ sudo ln -s /mnt/builds ./
eval "$(chef shell-init bash)"
- ./AMZ_build_virtualbox-ovf.sh
- bento build --metadata_only os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-x86_64.pkrvars.hcl"
+ ./${{ matrix.os }}-x86_64-virtualbox-build.sh
ls -alh builds
-# - name: Bento Test
-# run: |
-# eval "$(chef shell-init bash)"
-# bento test
- - name: Remove VM in case of canceled job
- if: cancelled()
- run: |
- echo Powering off and deleting any existing VMs named AmazonLinuxBento
- VBoxManage controlvm AmazonLinuxBento poweroff --type headless 2> /dev/null
- sleep 1
- VBoxManage unregistervm AmazonLinuxBento --delete 2> /dev/null
- sleep 2
+ cat builds/${{ matrix.os }}*-x86_64._metadata.json
- name: Upload build artifact
uses: actions/upload-artifact@main
with:
name: "${{ matrix.os }}-virtualbox-x86_64"
path: |
- builds
- !builds/uploaded/*
+ builds/*.box
+ builds/*.json
retention-days: 10
+ compression-level: 0 # no compression
+ - name: Bento Test
+ run: |
+ eval "$(chef shell-init bash)"
+ bento test
diff --git a/.github/workflows/old/pkr-bld-hyperv-x64.yml b/.github/workflows/old/pkr-bld-hyperv-x64.yml
index fae3953c8..7002d7f76 100644
--- a/.github/workflows/old/pkr-bld-hyperv-x64.yml
+++ b/.github/workflows/old/pkr-bld-hyperv-x64.yml
@@ -4,6 +4,7 @@ on:
env:
PACKER_GITHUB_API_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+ PACKER_LOG: "1"
jobs:
x86_64:
@@ -24,33 +25,24 @@ jobs:
- freebsd-13
- freebsd-14
- opensuse-leap-15
- - oracle-7
- - oracle-8
- - oracle-9
+ - oraclelinux-7
+ - oraclelinux-8
+ - oraclelinux-9
- rockylinux-8
- rockylinux-9
- ubuntu-20.04
- ubuntu-22.04
- - ubuntu-23.10
+ - ubuntu-24.04
provider:
- hyperv-iso
steps:
- name: Checkout
uses: actions/checkout@main
- - name: iso-availability
- shell: pwsh
- run: Invoke-RestMethod -Method Head -Verbose -Uri $(Get-Content os_pkrvars/$('${{ matrix.os }}'.split('-')[0])/${{ matrix.os }}-x86_64.pkrvars.hcl | ConvertFrom-StringData).iso_url.Trim('"')
# - name: Setup Packer
# uses: hashicorp/setup-packer@main
# with:
# version: latest
- - name: Packer Init
- run: packer init -upgrade packer_templates
- - name: Packer FMT
- run: packer fmt -check -recursive .
- - name: Packer Validate
- run: packer validate -var-file="os_pkrvars/$("${{ matrix.os }}".Split('-')[0])/${{ matrix.os }}-x86_64.pkrvars.hcl" packer_templates
- - name: Packer build
+ - name: Bento build
run: packer build -timestamp-ui -only="${{ matrix.provider }}.vm" -var-file="os_pkrvars/$("${{ matrix.os }}".Split('-')[0])/${{ matrix.os }}-x86_64.pkrvars.hcl" packer_templates
- name: Remove VM in case of canceled job
if: cancelled()
@@ -66,4 +58,6 @@ jobs:
name: "${{ matrix.os }}-hyperv-x86_64"
path: |
builds/*.box
+ builds/*.json
retention-days: 10
+ compression-level: 0 # no compression
diff --git a/.github/workflows/old/pkr-bld-parallels-arm64.yml b/.github/workflows/old/pkr-bld-parallels-arm64.yml
index 08ec7d8ab..6934da07f 100644
--- a/.github/workflows/old/pkr-bld-parallels-arm64.yml
+++ b/.github/workflows/old/pkr-bld-parallels-arm64.yml
@@ -4,6 +4,7 @@ on:
env:
PACKER_GITHUB_API_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+ PACKER_LOG: "1"
jobs:
aarch64:
@@ -19,48 +20,35 @@ jobs:
- centos-stream-9
- debian-11
- debian-12
- - fedora-38
- fedora-39
+ - fedora-40
- freebsd-13
- freebsd-14
- opensuse-leap-15
- - oracle-7
- - oracle-8
- - oracle-9
+ - oraclelinux-7
+ - oraclelinux-8
+ - oraclelinux-9
- rockylinux-8
- rockylinux-9
- ubuntu-20.04
- ubuntu-22.04
- - ubuntu-23.10
+ - ubuntu-24.04
provider:
- parallels-iso
steps:
- name: Checkout
uses: actions/checkout@main
- - name: iso-availability
- shell: pwsh
- run: Invoke-RestMethod -Method Head -Verbose -Uri $(Get-Content os_pkrvars/$('${{ matrix.os }}'.split('-')[0])/${{ matrix.os }}-x86_64.pkrvars.hcl | ConvertFrom-StringData).iso_url.Trim('"')
# - name: Setup Packer
# if: steps.verify-changed-files.outputs.files_changed == 'true'
# uses: hashicorp/setup-packer@main
# with:
# version: latest
- - name: Packer Init
- run: packer init -upgrade packer_templates
- - name: Packer FMT
- run: if packer fmt -check -recursive .; then exit 0; else echo "Some packer files need to be formatted, run 'packer fmt -recursive .' to fix"; exit 1; fi
- - name: Packer Validate
- run: packer validate -var-file=os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-aarch64.pkrvars.hcl" packer_templates
- - name: Packer build
-# run: packer build -timestamp-ui -only=${{ matrix.provider }}.vm -var-file=os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-aarch64.pkrvars.hcl" packer_templates
+ - name: Bento build
run: |
eval "$(chef shell-init bash)"
bento build -o ${{ matrix.provider }}.vm os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-aarch64.pkrvars.hcl"
- ls -alh builds
-# - name: Bento Test
-# run: |
-# eval "$(chef shell-init bash)"
-# bento test
+ ls -alh builds/
+ cat builds/${{ matrix.os }}*-aarch64._metadata.json
- name: Remove VM in case of canceled job
if: cancelled()
run: |
@@ -75,6 +63,11 @@ jobs:
with:
name: "${{ matrix.os }}-parallels-aarch64"
path: |
- builds
- !builds/uploaded/*
+ builds/*.box
+ builds/*.json
retention-days: 10
+ compression-level: 0 # no compression
+ - name: Bento Test
+ run: |
+ eval "$(chef shell-init bash)"
+ bento test
diff --git a/.github/workflows/old/pkr-bld-parallels-x64.yml b/.github/workflows/old/pkr-bld-parallels-x64.yml
index 1b9d1d3e2..9af99ba4c 100644
--- a/.github/workflows/old/pkr-bld-parallels-x64.yml
+++ b/.github/workflows/old/pkr-bld-parallels-x64.yml
@@ -4,6 +4,7 @@ on:
env:
PACKER_GITHUB_API_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+ PACKER_LOG: "1"
jobs:
x86_64:
@@ -19,47 +20,34 @@ jobs:
- centos-stream-9
- debian-11
- debian-12
- - fedora-38
- fedora-39
+ - fedora-40
- freebsd-13
- freebsd-14
- opensuse-leap-15
- - oracle-7
- - oracle-8
- - oracle-9
+ - oraclelinux-7
+ - oraclelinux-8
+ - oraclelinux-9
- rockylinux-8
- rockylinux-9
- ubuntu-20.04
- ubuntu-22.04
- - ubuntu-23.10
+ - ubuntu-24.04
provider:
- parallels-iso
steps:
- name: Checkout
uses: actions/checkout@main
- - name: iso-availability
- shell: pwsh
- run: Invoke-RestMethod -Method Head -Verbose -Uri $(Get-Content os_pkrvars/$('${{ matrix.os }}'.split('-')[0])/${{ matrix.os }}-x86_64.pkrvars.hcl | ConvertFrom-StringData).iso_url.Trim('"')
# - name: Setup Packer
# uses: hashicorp/setup-packer@main
# with:
# version: latest
- - name: Packer Init
- run: packer init -upgrade packer_templates
- - name: Packer FMT
- run: if packer fmt -check -recursive .; then exit 0; else echo "Some packer files need to be formatted, run 'packer fmt -recursive .' to fix"; exit 1; fi
- - name: Packer Validate
- run: packer validate -var-file=os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-x86_64.pkrvars.hcl" packer_templates
- - name: Packer build
-# run: packer build -timestamp-ui -only=${{ matrix.provider }}.vm -var-file=os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-x86_64.pkrvars.hcl" packer_templates
+ - name: Bento build
run: |
eval "$(chef shell-init bash)"
bento build -o ${{ matrix.provider }}.vm os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-x86_64.pkrvars.hcl"
- ls -alh builds
-# - name: Bento Test
-# run: |
-# eval "$(chef shell-init bash)"
-# bento test
+ ls -alh builds/
+ cat builds/${{ matrix.os }}*-x86_64._metadata.json
- name: Remove VM in case of canceled job
if: cancelled()
run: |
@@ -74,6 +62,11 @@ jobs:
with:
name: "${{ matrix.os }}-parallels-x86_64"
path: |
- builds
- !builds/uploaded/*
+ builds/*.box
+ builds/*.json
retention-days: 10
+ compression-level: 0 # no compression
+ - name: Bento Test
+ run: |
+ eval "$(chef shell-init bash)"
+ bento test
diff --git a/.github/workflows/old/pkr-bld-qemu-arm64.yml b/.github/workflows/old/pkr-bld-qemu-arm64.yml
index 69e50b286..944f8c95f 100644
--- a/.github/workflows/old/pkr-bld-qemu-arm64.yml
+++ b/.github/workflows/old/pkr-bld-qemu-arm64.yml
@@ -4,10 +4,11 @@ on:
env:
PACKER_GITHUB_API_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+ PACKER_LOG: "1"
jobs:
aarch64:
- runs-on: [self-hosted, ARM64, qemu]
+ runs-on: macos-14
strategy:
fail-fast: false
matrix:
@@ -19,53 +20,58 @@ jobs:
- centos-stream-9
- debian-11
- debian-12
- - fedora-38
- fedora-39
+ - fedora-40
- freebsd-13
- freebsd-14
- opensuse-leap-15
- - oracle-7
- - oracle-8
- - oracle-9
+ - oraclelinux-7
+ - oraclelinux-8
+ - oraclelinux-9
- rockylinux-8
- rockylinux-9
- ubuntu-20.04
- ubuntu-22.04
- - ubuntu-23.10
+ - ubuntu-24.04
provider:
- qemu
steps:
- name: Checkout
uses: actions/checkout@main
- - name: iso-availability
- shell: pwsh
- run: Invoke-RestMethod -Method Head -Verbose -Uri $(Get-Content os_pkrvars/$('${{ matrix.os }}'.split('-')[0])/${{ matrix.os }}-x86_64.pkrvars.hcl | ConvertFrom-StringData).iso_url.Trim('"')
-# - name: Setup Packer
-# if: steps.verify-changed-files.outputs.files_changed == 'true'
-# uses: hashicorp/setup-packer@main
-# with:
-# version: latest
- - name: Packer Init
- run: packer init -upgrade packer_templates
- - name: Packer FMT
- run: if packer fmt -check -recursive .; then exit 0; else echo "Some packer files need to be formatted, run 'packer fmt -recursive .' to fix"; exit 1; fi
- - name: Packer Validate
- run: packer validate -var-file=os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-aarch64.pkrvars.hcl" packer_templates
- - name: Packer build
-# run: packer build -timestamp-ui -only=${{ matrix.provider }}.vm -var "qemu_accelerator=hvf" -var-file=os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-aarch64.pkrvars.hcl" packer_templates
+ - name: Install Vagrant QEMU
+ run: |
+ brew install qemu libvirt
+ brew tap hashicorp/tap
+ brew install --cask hashicorp/tap/hashicorp-vagrant
+ brew services start libvirt
+ vagrant plugin install vagrant-libvirt vagrant-qemu
+ - name: Install Chef
+ uses: actionshub/chef-install@3.0.0
+ - name: Setup Packer
+ uses: hashicorp/setup-packer@main
+ with:
+ version: latest
+ - name: Install Bento
+ run: |
+ eval "$(chef shell-init bash)"
+ gem build bento.gemspec
+ gem install bento-*.gem
+ - name: Bento build
run: |
eval "$(chef shell-init bash)"
bento build -o ${{ matrix.provider }}.vm --vars "qemu_accelerator=hvf" os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-aarch64.pkrvars.hcl"
- ls -alh builds
-# - name: Bento Test
-# run: |
-# eval "$(chef shell-init bash)"
-# bento test
+ ls -alh builds/
+ cat builds/${{ matrix.os }}*-aarch64._metadata.json
- name: Upload build artifact
uses: actions/upload-artifact@v3
with:
name: "${{ matrix.os }}-qemu-aarch64"
path: |
- builds
- !builds/uploaded/*
+ builds/*.box
+ builds/*.json
retention-days: 10
+ compression-level: 0 # no compression
+ - name: Bento Test
+ run: |
+ eval "$(chef shell-init bash)"
+ bento test libvirt
diff --git a/.github/workflows/old/pkr-bld-qemu-x64.yml b/.github/workflows/old/pkr-bld-qemu-x64.yml
index b5fbc75bd..5bb0eee9b 100644
--- a/.github/workflows/old/pkr-bld-qemu-x64.yml
+++ b/.github/workflows/old/pkr-bld-qemu-x64.yml
@@ -4,10 +4,11 @@ on:
env:
PACKER_GITHUB_API_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+ PACKER_LOG: "1"
jobs:
x86_64:
- runs-on: [self-hosted, X64, qemu]
+ runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
@@ -19,54 +20,73 @@ jobs:
- centos-stream-9
- debian-11
- debian-12
- - fedora-38
- fedora-39
+ - fedora-40
- freebsd-13
- freebsd-14
- opensuse-leap-15
- - oracle-7
- - oracle-8
- - oracle-9
+ - oraclelinux-7
+ - oraclelinux-8
+ - oraclelinux-9
- rockylinux-8
- rockylinux-9
- ubuntu-20.04
- ubuntu-22.04
- - ubuntu-23.10
+ - ubuntu-24.04
provider:
- qemu
steps:
- name: Checkout
uses: actions/checkout@main
- - name: iso-availability
- shell: pwsh
- run: Invoke-RestMethod -Method Head -Verbose -Uri $(Get-Content os_pkrvars/$('${{ matrix.os }}'.split('-')[0])/${{ matrix.os }}-x86_64.pkrvars.hcl | ConvertFrom-StringData).iso_url.Trim('"')
- - name: Download virtio-win.iso
- run: curl https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.229-1/virtio-win.iso -o packer_templates/win_answer_files/virtio-win.iso
-# - name: Setup Packer
-# uses: hashicorp/setup-packer@main
-# with:
-# version: latest
- - name: Packer Init
- run: packer init -upgrade packer_templates
- - name: Packer FMT
- run: if packer fmt -check -recursive .; then exit 0; else echo "Some packer files need to be formatted, run 'packer fmt -recursive .' to fix"; exit 1; fi
- - name: Packer Validate
- run: packer validate -var-file=os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-x86_64.pkrvars.hcl" packer_templates
- - name: Packer build
-# run: packer build -timestamp-ui -only=${{ matrix.provider }}.vm -var "qemu_accelerator=hvf" -var-file=os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-x86_64.pkrvars.hcl" packer_templates
+ - name: Install Vagrant and kvm
+ run: |
+ wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
+ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
+ sudo apt-get update
+ sudo apt-get install -y software-properties-common vagrant qemu-kvm libvirt-daemon-system virtinst libvirt-clients bridge-utils qemu-utils libvirt-dev
+ vagrant plugin install vagrant-libvirt vagrant-qemu
+ vagrant --version
+ - name: Enable KVM
+ run: |
+ echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
+ sudo udevadm control --reload-rules
+ sudo udevadm trigger --name-match=kvm
+ sudo usermod -aG kvm $USER
+ sudo usermod -aG libvirt $USER
+ sudo chmod o+rw /var/run/libvirt/libvirt-sock
+ sudo systemctl start libvirtd
+ sudo systemctl status libvirtd
+ - name: Install Chef
+ uses: actionshub/chef-install@3.0.0
+ - name: Setup Packer
+ uses: hashicorp/setup-packer@main
+ with:
+ version: latest
+ - name: Install Bento
run: |
eval "$(chef shell-init bash)"
- bento build -o ${{ matrix.provider }}.vm --vars "qemu_accelerator=hvf" os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-x86_64.pkrvars.hcl"
- ls -alh builds
-# - name: Bento Test
-# run: |
-# eval "$(chef shell-init bash)"
-# bento test
+ gem build bento.gemspec
+ gem install bento-*.gem
+ - name: Bento build
+ run: |
+ rm -rf builds
+ sudo mkdir -p /mnt/builds/iso
+ sudo chmod -R 777 /mnt/builds
+ sudo ln -s /mnt/builds ./
+ eval "$(chef shell-init bash)"
+ bento build -o ${{ matrix.provider }}.vm --vars "qemu_accelerator=kvm" os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-x86_64.pkrvars.hcl"
+ ls -alh builds/
+ cat builds/${{ matrix.os }}*-x86_64._metadata.json
- name: Upload build artifact
uses: actions/upload-artifact@main
with:
name: "${{ matrix.os }}-qemu-x86_64"
path: |
- builds
- !builds/uploaded/*
+ builds/*.box
+ builds/*.json
retention-days: 10
+ compression-level: 0 # no compression
+ - name: Bento Test
+ run: |
+ eval "$(chef shell-init bash)"
+ bento test libvirt
diff --git a/.github/workflows/old/pkr-bld-virtualbox-arm64.yml b/.github/workflows/old/pkr-bld-virtualbox-arm64.yml
index 5a5057700..d649e759c 100644
--- a/.github/workflows/old/pkr-bld-virtualbox-arm64.yml
+++ b/.github/workflows/old/pkr-bld-virtualbox-arm64.yml
@@ -4,10 +4,11 @@ on:
env:
PACKER_GITHUB_API_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+ PACKER_LOG: "1"
jobs:
aarch64:
- runs-on: [self-hosted, ARM64, virtualbox]
+ runs-on: macos-14
strategy:
fail-fast: false
matrix:
@@ -19,61 +20,58 @@ jobs:
- centos-stream-9
- debian-11
- debian-12
- - fedora-38
- fedora-39
+ - fedora-40
- freebsd-13
- freebsd-14
- opensuse-leap-15
- - oracle-7
- - oracle-8
- - oracle-9
+ - oraclelinux-7
+ - oraclelinux-8
+ - oraclelinux-9
- rockylinux-8
- rockylinux-9
- ubuntu-20.04
- ubuntu-22.04
- - ubuntu-23.10
+ - ubuntu-24.04
provider:
- virtualbox-iso
steps:
- name: Checkout
uses: actions/checkout@main
- - name: iso-availability
- shell: pwsh
- run: Invoke-RestMethod -Method Head -Verbose -Uri $(Get-Content os_pkrvars/$('${{ matrix.os }}'.split('-')[0])/${{ matrix.os }}-x86_64.pkrvars.hcl | ConvertFrom-StringData).iso_url.Trim('"')
-# - name: Setup Packer
-# if: steps.verify-changed-files.outputs.files_changed == 'true'
-# uses: hashicorp/setup-packer@main
-# with:
-# version: latest
- - name: Packer Init
- run: packer init -upgrade packer_templates
- - name: Packer FMT
- run: if packer fmt -check -recursive .; then exit 0; else echo "Some packer files need to be formatted, run 'packer fmt -recursive .' to fix"; exit 1; fi
- - name: Packer Validate
- run: packer validate -var-file=os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-aarch64.pkrvars.hcl" packer_templates
- - name: Packer build
-# run: packer build -timestamp-ui -only=${{ matrix.provider }}.vm -var-file=os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-aarch64.pkrvars.hcl" packer_templates
+ - name: Install Vagrant Virtualbox
+ run: |
+ brew tap hashicorp/tap
+ brew install --cask hashicorp/tap/hashicorp-vagrant
+ wget -q https://www.virtualbox.org/download/testcase/VirtualBox-7.0.15_BETA4-162549-macOSArm64.dmg
+ hdiutil attach VirtualBox-7.0.15_BETA4-162549-macOSArm64.dmg
+ sudo installer -pkg /Volumes/VirtualBox/VirtualBox.pkg -target /
+ - name: Install Chef
+ uses: actionshub/chef-install@3.0.0
+ - name: Setup Packer
+ uses: hashicorp/setup-packer@main
+ with:
+ version: latest
+ - name: Install Bento
run: |
eval "$(chef shell-init bash)"
- bento build -o ${{ matrix.provider }}.vm os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-aarch64.pkrvars.hcl"
- ls -alh builds
-# - name: Bento Test
-# run: |
-# eval "$(chef shell-init bash)"
-# bento test
- - name: Remove VM in case of canceled job
- if: cancelled()
+ gem build bento.gemspec
+ gem install bento-*.gem
+ - name: Bento build
run: |
- echo Powering off and deleting any existing VMs named ${{ matrix.os }}*-aarch64
- VBoxManage controlvm ${{ matrix.os }}*-aarch64 poweroff --type headless 2> /dev/null
- sleep 1
- VBoxManage unregistervm ${{ matrix.os }}*-aarch64 --delete 2> /dev/null
- sleep 2
+ eval "$(chef shell-init bash)"
+ bento build -o ${{ matrix.provider }}.vm os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-aarch64.pkrvars.hcl"
+ ls -alh builds/
+ cat builds/${{ matrix.os }}*-aarch64._metadata.json
- name: Upload build artifact
uses: actions/upload-artifact@main
with:
name: "${{ matrix.os }}-virtualbox-aarch64"
path: |
- builds
- !builds/uploaded/*
+ builds/*.box
+ builds/*.json
retention-days: 10
+ compression-level: 0 # no compression
+ - name: Bento Test
+ run: |
+ eval "$(chef shell-init bash)"
+ bento test
diff --git a/.github/workflows/old/pkr-bld-virtualbox-x64.yml b/.github/workflows/old/pkr-bld-virtualbox-x64.yml
index e3d29389e..2aafba2ae 100644
--- a/.github/workflows/old/pkr-bld-virtualbox-x64.yml
+++ b/.github/workflows/old/pkr-bld-virtualbox-x64.yml
@@ -4,10 +4,11 @@ on:
env:
PACKER_GITHUB_API_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+ PACKER_LOG: "1"
jobs:
x86_64:
- runs-on: [self-hosted, X64, virtualbox]
+ runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
@@ -19,60 +20,65 @@ jobs:
- centos-stream-9
- debian-11
- debian-12
- - fedora-38
- fedora-39
+ - fedora-40
- freebsd-13
- freebsd-14
- opensuse-leap-15
- - oracle-7
- - oracle-8
- - oracle-9
+ - oraclelinux-7
+ - oraclelinux-8
+ - oraclelinux-9
- rockylinux-8
- rockylinux-9
- ubuntu-20.04
- ubuntu-22.04
- - ubuntu-23.10
+ - ubuntu-24.04
provider:
- virtualbox-iso
steps:
- name: Checkout
uses: actions/checkout@main
- - name: iso-availability
- shell: pwsh
- run: Invoke-RestMethod -Method Head -Verbose -Uri $(Get-Content os_pkrvars/$('${{ matrix.os }}'.split('-')[0])/${{ matrix.os }}-x86_64.pkrvars.hcl | ConvertFrom-StringData).iso_url.Trim('"')
-# - name: Setup Packer
-# uses: hashicorp/setup-packer@main
-# with:
-# version: latest
- - name: Packer Init
- run: packer init -upgrade packer_templates
- - name: Packer FMT
- run: if packer fmt -check -recursive .; then exit 0; else echo "Some packer files need to be formatted, run 'packer fmt -recursive .' to fix"; exit 1; fi
- - name: Packer Validate
- run: packer validate -var-file=os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-x86_64.pkrvars.hcl" packer_templates
- - name: Packer build
-# run: packer build -timestamp-ui -only=${{ matrix.provider }}.vm -var-file=os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-x86_64.pkrvars.hcl" packer_templates
+ - name: Install Vagrant and VirtualBox
+ run: |
+ wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
+ wget -O- https://www.virtualbox.org/download/oracle_vbox_2016.asc | gpg --dearmor | sudo tee /usr/share/keyrings/oracle-virtualbox-2016.gpg
+ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
+ echo "deb [signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] https://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
+ sudo apt-get update
+ sudo apt-get install -y software-properties-common vagrant virtualbox-7.0
+ VBoxManage --version
+ vagrant --version
+ - name: Install Chef
+ uses: actionshub/chef-install@3.0.0
+ - name: Setup Packer
+ uses: hashicorp/setup-packer@main
+ with:
+ version: latest
+ - name: Install Bento
run: |
eval "$(chef shell-init bash)"
- bento build -o ${{ matrix.provider }}.vm os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-x86_64.pkrvars.hcl"
- ls -alh builds
-# - name: Bento Test
-# run: |
-# eval "$(chef shell-init bash)"
-# bento test
- - name: Remove VM in case of canceled job
- if: cancelled()
+ gem build bento.gemspec
+ gem install bento-*.gem
+ - name: Bento build
run: |
- echo Powering off and deleting any existing VMs named ${{ matrix.os }}*-amd64
- VBoxManage controlvm ${{ matrix.os }}*-amd64 poweroff --type headless 2> /dev/null
- sleep 1
- VBoxManage unregistervm ${{ matrix.os }}*-amd64 --delete 2> /dev/null
- sleep 2
+ rm -rf builds
+ sudo mkdir -p /mnt/builds/iso
+ sudo chmod -R 777 /mnt/builds
+ sudo ln -s /mnt/builds ./
+ eval "$(chef shell-init bash)"
+ bento build -o ${{ matrix.provider }}.vm os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-x86_64.pkrvars.hcl"
+ ls -alh builds/
+ cat builds/${{ matrix.os }}*-x86_64._metadata.json
- name: Upload build artifact
uses: actions/upload-artifact@main
with:
name: "${{ matrix.os }}-virtualbox-x86_64"
path: |
- builds
- !builds/uploaded/*
+ builds/*.box
+ builds/*.json
retention-days: 10
+ compression-level: 0 # no compression
+ - name: Bento Test
+ run: |
+ eval "$(chef shell-init bash)"
+ bento test
diff --git a/.github/workflows/old/pkr-bld-vmware-arm64.yml b/.github/workflows/old/pkr-bld-vmware-arm64.yml
index dcfd9e484..567e56ccd 100644
--- a/.github/workflows/old/pkr-bld-vmware-arm64.yml
+++ b/.github/workflows/old/pkr-bld-vmware-arm64.yml
@@ -4,6 +4,7 @@ on:
env:
PACKER_GITHUB_API_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+ PACKER_LOG: "1"
jobs:
aarch64:
@@ -19,48 +20,35 @@ jobs:
- centos-stream-9
- debian-11
- debian-12
- - fedora-38
- fedora-39
+ - fedora-40
- freebsd-13
- freebsd-14
- opensuse-leap-15
- - oracle-7
- - oracle-8
- - oracle-9
+ - oraclelinux-7
+ - oraclelinux-8
+ - oraclelinux-9
- rockylinux-8
- rockylinux-9
- ubuntu-20.04
- ubuntu-22.04
- - ubuntu-23.10
+ - ubuntu-24.04
provider:
- vmware-iso
steps:
- name: Checkout
uses: actions/checkout@main
- - name: iso-availability
- shell: pwsh
- run: Invoke-RestMethod -Method Head -Verbose -Uri $(Get-Content os_pkrvars/$('${{ matrix.os }}'.split('-')[0])/${{ matrix.os }}-x86_64.pkrvars.hcl | ConvertFrom-StringData).iso_url.Trim('"')
# - name: Setup Packer
# if: steps.verify-changed-files.outputs.files_changed == 'true'
# uses: hashicorp/setup-packer@main
# with:
# version: latest
- - name: Packer Init
- run: packer init -upgrade packer_templates
- - name: Packer FMT
- run: if packer fmt -check -recursive .; then exit 0; else echo "Some packer files need to be formatted, run 'packer fmt -recursive .' to fix"; exit 1; fi
- - name: Packer Validate
- run: packer validate -var-file=os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-aarch64.pkrvars.hcl" packer_templates
- - name: Packer build
-# run: packer build -timestamp-ui -only=${{ matrix.provider }}.vm -var-file=os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-aarch64.pkrvars.hcl" packer_templates
+ - name: Bento build
run: |
eval "$(chef shell-init bash)"
bento build -o ${{ matrix.provider }}.vm os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-aarch64.pkrvars.hcl"
- ls -alh builds
-# - name: Bento Test
-# run: |
-# eval "$(chef shell-init bash)"
-# bento test
+ ls -alh builds/
+ cat builds/${{ matrix.os }}*-aarch64._metadata.json
- name: Remove VM in case of canceled job
if: cancelled()
run: |
@@ -74,6 +62,11 @@ jobs:
with:
name: "${{ matrix.os }}-vmware-aarch64"
path: |
- builds
- !builds/uploaded/*
+ builds/*.box
+ builds/*.json
retention-days: 10
+ compression-level: 0 # no compression
+ - name: Bento Test
+ run: |
+ eval "$(chef shell-init bash)"
+ bento test
diff --git a/.github/workflows/old/pkr-bld-vmware-x64.yml b/.github/workflows/old/pkr-bld-vmware-x64.yml
index 0e8b489d4..71a95f361 100644
--- a/.github/workflows/old/pkr-bld-vmware-x64.yml
+++ b/.github/workflows/old/pkr-bld-vmware-x64.yml
@@ -4,6 +4,7 @@ on:
env:
PACKER_GITHUB_API_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+ PACKER_LOG: "1"
jobs:
x86_64:
@@ -19,47 +20,34 @@ jobs:
- centos-stream-9
- debian-11
- debian-12
- - fedora-38
- fedora-39
+ - fedora-40
- freebsd-13
- freebsd-14
- opensuse-leap-15
- - oracle-7
- - oracle-8
- - oracle-9
+ - oraclelinux-7
+ - oraclelinux-8
+ - oraclelinux-9
- rockylinux-8
- rockylinux-9
- ubuntu-20.04
- ubuntu-22.04
- - ubuntu-23.10
+ - ubuntu-24.04
provider:
- vmware-iso
steps:
- name: Checkout
uses: actions/checkout@main
- - name: iso-availability
- shell: pwsh
- run: Invoke-RestMethod -Method Head -Verbose -Uri $(Get-Content os_pkrvars/$('${{ matrix.os }}'.split('-')[0])/${{ matrix.os }}-x86_64.pkrvars.hcl | ConvertFrom-StringData).iso_url.Trim('"')
# - name: Setup Packer
# uses: hashicorp/setup-packer@main
# with:
# version: latest
- - name: Packer Init
- run: packer init -upgrade packer_templates
- - name: Packer FMT
- run: if packer fmt -check -recursive .; then exit 0; else echo "Some packer files need to be formatted, run 'packer fmt -recursive .' to fix"; exit 1; fi
- - name: Packer Validate
- run: packer validate -var-file=os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-x86_64.pkrvars.hcl" packer_templates
- - name: Packer build
-# run: packer build -timestamp-ui -only=${{ matrix.provider }}.vm -var-file=os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-x86_64.pkrvars.hcl" packer_templates
+ - name: Bento build
run: |
eval "$(chef shell-init bash)"
bento build -o ${{ matrix.provider }}.vm os_pkrvars/$(echo ${{ matrix.os }} | cut -d "-" -f 1)/"${{ matrix.os }}-x86_64.pkrvars.hcl"
- ls -alh builds
-# - name: Bento Test
-# run: |
-# eval "$(chef shell-init bash)"
-# bento test
+ ls -alh builds/
+ cat builds/${{ matrix.os }}*-x86_64._metadata.json
- name: Remove VM in case of canceled job
if: cancelled()
run: |
@@ -73,6 +61,11 @@ jobs:
with:
name: "${{ matrix.os }}-vmware-x86_64"
path: |
- builds
- !builds/uploaded/*
+ builds/*.box
+ builds/*.json
retention-days: 10
+ compression-level: 0 # no compression
+ - name: Bento Test
+ run: |
+ eval "$(chef shell-init bash)"
+ bento test
diff --git a/.github/workflows/test-pkr-bld-parallels-x64.yml b/.github/workflows/test-pkr-bld-parallels-x64.yml
index 38916a5db..01f5fd069 100644
--- a/.github/workflows/test-pkr-bld-parallels-x64.yml
+++ b/.github/workflows/test-pkr-bld-parallels-x64.yml
@@ -7,7 +7,7 @@ env:
jobs:
x86_64:
- runs-on: ubuntu-latest
+ runs-on: macos-13
strategy:
fail-fast: false
matrix:
@@ -38,9 +38,6 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@main
- - name: iso-availability
- shell: pwsh
- run: Invoke-RestMethod -Method Head -Verbose -Uri $(Get-Content os_pkrvars/$('${{ matrix.os }}'.split('-')[0])/${{ matrix.os }}-x86_64.pkrvars.hcl | ConvertFrom-StringData).iso_url.Trim('"')
- name: Install Virtualization Software
run: |
brew install qemu libvirt
diff --git a/.gitignore b/.gitignore
index 175b1f75c..b85965350 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,9 +2,11 @@
**/builds/
*.iso
*.box
+*.ova
*.ovf
*.vmdk
*.vdi
+*.qcow2
*.log
virtualfloppy.vfd
packer_cache/
diff --git a/AMZ_README_FIRST.md b/AMZ_README_FIRST.md
index 5393c82d2..1fd70bdbf 100644
--- a/AMZ_README_FIRST.md
+++ b/AMZ_README_FIRST.md
@@ -1,12 +1,12 @@
-This is not your normal Bento box. Instead of building a system from an ISO we're building a system from an Amazon provided VirtualBox VDI file. This means the process is a bit different than usual.
+This is not your normal Bento box. Instead of building a system from an ISO we're building a system from an Amazon provided vm hdd image files. This means the process is a bit different than usual.
# Building this box
-Simply run the AMZ_build_virtualbox-ovf.sh script
+Simply run one of the amazonlinxu-2*-build.sh scripts
-This script will:
+These scripts will:
-1. Download the VirtualBox .vdi file for Amazon Linux 2 and place it in the amz_working_files directory. Amazon hosts these at . It will name it amazon.vdi instead of the version specific name that Amazon gives it on their site
-1. It will prepare this VDI file for packer and export it as a OVF file
+1. Download the vm image file for Amazon Linux 2 or 2023 and place it in the amz_working_files directory. Amazon hosts these at and .
+1. It will prepare the VDI file for packer and export it as a OVF file
1. It will run the packer build
-1. Lastly it will clean up the leftover files in the working directory
+1. Lastly it will clean up the leftover files in the working directory on successful completion
diff --git a/CHANGELOG.md b/CHANGELOG.md
index da48662fa..1a3583a05 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,41 +5,42 @@
***Note:**
Markdown table generated at
-| | hyperv
x86_64 | parallels
x86_64 | parallels
aarch64 | qemu
x86_64 | qemu
aarch64 | virtualbox
x86_64 | virtualbox
aarch64 | vmware
x86_64 | vmware
aarch64 |
-|:-----------------:|:---:|:---:|:--------------------:|:---:|:---:|:---:|:---:|:---:|:---:|
-| almalinux-8 | | x | | x | | x | | x | |
-| almalinux-9 | | x | x | | | x | | x | x |
-| amazonlinux-2 | | na | na | | | | na | | na |
-| amazonlinux-2023 | na | na | na | na | na | na | na | na | na |
-| centos-7 | | x | | x | | x | | x | |
-| centos-stream-8 | | x | | x | | x | | x | |
-| centos-stream-9 | | | x | | | | | | |
-| debian-11 | | x | x | | | x | | x | |
-| debian-12 | | x | x | | | x | | x | x |
-| fedora-38 | | x | | x | | x | | x | x |
-| fedora-39 | | | | | | | | | |
-| freebsd-12 | | | | | | x | | x | |
-| freebsd-13 | | | | | | x | | x | |
-| opensuse-leap-15 | | x | | x | | x | | x | |
-| oraclelinux-7 | | x | | x | | x | | x | |
-| oraclelinux-8 | | | | x | | x | | x | |
-| oraclelinux-9 | | x | x | | | x | | x | |
-| rhel-7 | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed |
-| rhel-8 | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed |
-| rhel-9 | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed |
-| rockylinux-8 | | x | | x | | x | | x | |
-| rockylinux-9 | | x | | | | x | | x | x |
-| sles-12 | license
needed | license
needed | na | license
needed | na | license
needed | na | license
needed | na |
-| sles-13 | license
needed | license
needed | na | license
needed | na | license
needed | na | license
needed | na |
-| solaris-11 | license
needed | license
needed | na | license
needed | na | license
needed | na | license
needed | na |
-| ubuntu-20.04 | | x | x | | | x | | x | x |
-| ubuntu-22.04 | | x | | x | | x | | x | |
-| ubuntu-23.10 | | | | | | | | | |
-| windows-10 | | x | na | | na | x | na | | na |
-| windows-11 | | x | na | | na | x | na | | na |
-| windows-2016 | | x | na | | na | x | na | | na |
-| windows-2019 | | x | na | | na | x | na | | na |
-| windows-2022 | | x | na | | na | x | na | | na |
+| os | hyperv
x86_64 | parallels
x86_64 | parallels
aarch64 | qemu
x86_64 | qemu
aarch64 | virtualbox
x86_64 | virtualbox
aarch64 | vmware
x86_64 | vmware
aarch64 |
+|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
+| almalinux-8 | | x | | | | x | | x | |
+| almalinux-9 | | x | | | | x | | x | x |
+| amazonlinux-2 | | | | | | x | | | |
+| amazonlinux-2023 | | | | | | x | | | |
+| centos-7 | | | | | | x | | x | |
+| centos-stream-8 | | x | | | | x | | x | |
+| centos-stream-9 | | x | | | | x | | x | x |
+| debian-11 | | x | x | | | x | | x | |
+| debian-12 | | x | x | | | x | | x | x |
+| fedora-39 | | x | x | | | x | | x | x |
+| fedora-40 | | | | | | | | | |
+| freebsd-13 | | | | | | x | | x | x |
+| freebsd-14 | | | | | | | | | |
+| macos | | | x | | | | | | |
+| opensuse-leap-15 | | | | | | x | | x | x |
+| oraclelinux-7 | | x | | | | x | | x | |
+| oraclelinux-8 | | | | | | x | | x | |
+| oraclelinux-9 | | x | x | | | x | | x | x |
+| rhel-7 | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed |
+| rhel-8 | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed |
+| rhel-9 | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed | license
needed |
+| rockylinux-8 | | x | | | | x | | x | |
+| rockylinux-9 | | x | | | | x | | x | x |
+| sles-12 | license
needed | license
needed | na | license
needed | na | license
needed | na | license
needed | na |
+| sles-15 | license
needed | license
needed | na | license
needed | na | license
needed | na | license
needed | na |
+| solaris-11 | license
needed | license
needed | na | license
needed | na | license
needed | na | license
needed | na |
+| ubuntu-20.04 | | | x | | | x | | x | x |
+| ubuntu-22.04 | | x | | | | x | | | |
+| ubuntu-24.04 | | x | x | | | x | | x | x |
+| windows-10 | | | na | | na | x | na | | na |
+| windows-11 | | x | x | | | x | | x | |
+| windows-2016 | | x | na | | na | x | na | x | na |
+| windows-2019 | | x | na | | na | x | na | x | na |
+| windows-2022 | | x | na | | na | x | na | | na |
### Todo
@@ -52,9 +53,67 @@ Markdown table generated at
- Look into making all build uefi default builds
- Create CD pipeline to upload vagrant boxes after PR is merged
- Create CD pipeline to build and upload new versions of vagrant boxes once every 3 months with the latest patches
-- Added ability to configure bento upload of private or public boxes in builds.yml, defaults to private
-## [unreleased] (2024-02-01)
+## [unreleased] (2024-04-26)
+
+## [v4.1.1] (2024-04-26)
+
+- Require ruby >= 3.0.0
+- Add parallels-ipsw source
+- Added MacOS template for parallels-ipsw
+- Created MacOS scripts
+- Adjusted build flags to all be lower case for consistency
+- Removed extra amazonlinux directories to be more consistent with other builds
+- Added build_files directory for all temp files to be stored in during packer building
+- Opensuse-leap-15.5 updated to 15.6
+- Remove Fedora 38 and add 40 builds
+- Remove Ubuntu 23.10 and add 24.04 builds
+
+## [v4.1.0] (2024-04-11)
+
+- Add back iso check, packer lint, and amazonlinux builds to build pipeline
+- Fix amazonlinux 2 build script
+- Added amazonlinux 2023 build scripts
+- Migrate Virtualbox and Qemu builds to github hosted runners from self-hosted runners
+- Added test-kitchen and kitchen-vagrant dependencies to gemspec
+- Added arg for bento test command to specify a specific build to test - this passes the arg to the kitchen test command
+- Fix vagrant post-processor to specify custom vagrant file for freebsd builds
+- Remove gui true from windows custom vagrant file
+- Fix test to skip removing linux-firmware on oraclelinux
+- Renamed oracle boxes to oraclelinux for consistency and remove edge cases in code
+- Removed unused -c flag for specifying a specific config file for bento build
+- Added --on-error flag to bento build command to pass to packer command
+- Added cpu architecture support to bento build command, so it'll only test builds that work with the current cpu architecture
+- Remove additional Ubuntu user-date last-command that may be locking macaddress
+- Add to test to move failed test boxes to builds/failed_testing directory
+- Changed ssh_timeout to 15m
+
+## [v4.0.2] (2024-03-20)
+
+- Update upload message to show architecture
+- Fix open-vm-tools install for vmware builds
+- Fix amazonlinux 2 build script
+- Added amazonlinux 2023 build scripts
+- Allow failed tests to continue and report at the end each test that failed
+- Added amazonlinux aarch64 packer templates
+- removed unneeded config from amazon user-data script for seed.iso
+- Added additional qemu variables for various qemu source properties
+- Added virtualbox-ovf vbox_source_path and vbox_checksum variables
+- Added recursive flag to rhel cleanup scripts for persistent network files
+
+## [v4.0.1] (2024-02-16)
+
+- Fix metadata file box_basename
+- Updated Debian 11 to 11.9
+- Updated Debian 12 to 12.5
+- Added Windows 11 aarch64 template
+
+## [v4.0.0] (2024-02-05)
+
+- Added Vagrant Cloud architecture flags so amd64 and arm64 boxes can live under the same cloud box
+- Setting amd64 as default architecture for uploads, configurable in the builds.yml file
+- Update descriptions mentioning chef to progress chef
+- Update README.md to reflect vagrant version for new architecture support
## [v3.2.2] (2024-02-01)
@@ -94,6 +153,7 @@ Markdown table generated at
- Updated Bento to continue builds even if one fails and report all failures at the end and exit with exit code 1
- Added qemu clone of libvirt box when metadata file is created for uploading to vagrant qemu provider
- Made build shell scripts customizable through packer variable
+- Added ability to configure bento upload of private or public boxes in builds.yml, defaults to private
## [v3.1.1] (2023-07-07)
diff --git a/README.md b/README.md
index 5daaa8919..d34eb2a4e 100644
--- a/README.md
+++ b/README.md
@@ -4,6 +4,7 @@ Bento is a project that encapsulates [Packer](https://www.packer.io/) templates
***NOTE:**
+- Vagrant 2.4.0+ is required for new cpu architecture support
- Virutalbox 6.x requires disabling nat config that allows vbox 7.x guests to connect to the host. To use comment out lines #161 and #162 in bento/packer_templates/pkr-variables.pkr.hcl or add variable `vboxmanage = []` to os_pkrvars files.
- When running packer build command the output directory is relative to the working directory the command is currently running in. Suggest running packer build commands from bento root directory for build working files to be placed in bento/builds/(build_name) directory by default. If the output_directory variable isn't overwritten a directory called builds/(build_name) will be created in the current working directory that you are running the command from
@@ -23,22 +24,31 @@ Vagrant.configure("2") do |config|
end
```
+### Installing Bento
+
+1. install ruby environment
+1. clone repo
+1. cd /bento
+1. gem build bento.gemspec
+1. gem install bento-*.gem
+
### Building Boxes
#### Requirements
- [Packer](https://www.packer.io/) >= 1.7.0
-- [Vagrant](https://www.vagrantup.com/)
+- [Vagrant](https://www.vagrantup.com/) >= 2.4.0
- At least one of the following virtualization providers:
- - [VirtualBox](https://www.virtualbox.org/)
- - [VMware Fusion](https://www.vmware.com/products/fusion.html)
- - [VMware Workstation](https://www.vmware.com/products/workstation-pro.html)
- - [Parallels Desktop Pro](https://www.parallels.com/products/desktop/)*2 also requires [Parallels Virtualization SDK](https://www.parallels.com/products/desktop/download/) for versions < 19.x
- - [qemu](https://www.qemu.org/) *1
- - [Hyper-V](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/about/) *1
+ - [VirtualBox](https://www.virtualbox.org/)*2
+ - [VMware Fusion](https://www.vmware.com/products/fusion.html)*2
+ - [VMware Workstation](https://www.vmware.com/products/workstation-pro.html)*2
+ - [Parallels Desktop Pro](https://www.parallels.com/products/desktop/) also requires [Parallels Virtualization SDK](https://www.parallels.com/products/desktop/download/) for versions < 19.x
+ - [qemu](https://www.qemu.org/) *1 *2
+ - [Hyper-V](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/about/) *1 *2
+
+*1 **NOTE:** support for these providers is considered experimental and corresponding Vagrant Cloud images may or may not exist.
-*1**NOTE:** support for these providers is considered experimental and corresponding Vagrant Cloud images may or may not exist.
-*2**NOTE:** AARCH64 or ARM64 support is only guaranteed through parallels provider.
+*2 **NOTE:** AARCH64 or ARM64 support is a work in progress only guaranteed through parallels and vmware provider.
### Using `bento` executable
@@ -134,13 +144,14 @@ If the build is successful, your box files will be in the `builds` directory at
### KVM/qemu support for Windows
-You must download [the iso image with the Windows drivers for paravirtualized KVM/qemu hardware](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso). You can do this from the command line: `wget -nv -nc https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso -O virtio-win.iso` and place it in the packer_templates/win_answer_files/ directory.
+You must download [the iso image with the Windows drivers for paravirtualized KVM/qemu hardware](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso) and place it in the builds/iso/ directory.
+You can do this from the command line: `mkdir -p builds/iso/; wget -nv -nc https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso -O builds/iso/virtio-win.iso`
You can use the following sample command to build a KVM/qemu Windows box:
```bash
packer init -upgrade ./packer_templates
-packer build --only=qemu.vm -var-file=os_pkrvars/windwos/windows-2022-x86_64.pkrvars.hcl ./packer_templates
+packer build --only=qemu.vm -var-file=os_pkrvars/windows/windows-2022-x86_64.pkrvars.hcl ./packer_templates
```
### Proprietary Templates
@@ -196,7 +207,7 @@ These basebox templates were converted from [veewee](https://github.com/jedi4eve
- Author: Corey Hemminger ([corey.hemminger@progress.com](mailto:corey.hemminger@progress.com))
```text
-Copyright 2012-2023, Progress Software, Inc. ()
+Copyright 2012-2024, Progress Software, Inc. ()
Copyright 2011-2012, Tim Dysinger ()
Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/AMZ_build_virtualbox-ovf.sh b/amazonlinux-2-x86_64-virtualbox-build.sh
similarity index 60%
rename from AMZ_build_virtualbox-ovf.sh
rename to amazonlinux-2-x86_64-virtualbox-build.sh
index d935dc3c9..b7d8e0775 100755
--- a/AMZ_build_virtualbox-ovf.sh
+++ b/amazonlinux-2-x86_64-virtualbox-build.sh
@@ -5,17 +5,17 @@ SCRIPT_RELATIVE_DIR=$(dirname "${BASH_SOURCE[0]}")
cd "$SCRIPT_RELATIVE_DIR" || exit
# set tmp dir for files
-AMZDIR="$(pwd)/packer_templates/amz_working_files"
-
+AMZDIR="$(pwd)/builds/build_files/amazonlinux-2-x86_64-virtualbox"
+mkdir -p "$AMZDIR"
# Get virtualbox vdi file name with latest version number
IMG="$(wget -q https://cdn.amazonlinux.com/os-images/latest/virtualbox/ -O - | grep ".vdi" | cut -d "\"" -f 2)"
# Download vbox vdi
echo "Downloading Vbox VDI $IMG"
-wget -q -O "$AMZDIR"/amazon.vdi -c https://cdn.amazonlinux.com/os-images/latest/virtualbox/"$IMG"
+wget -q -O "$AMZDIR"/amazon2_x86_64.vdi -c https://cdn.amazonlinux.com/os-images/latest/virtualbox/"$IMG"
-if [ ! -f "$AMZDIR"/amazon.vdi ]; then
- echo There must be a file named amazon.vdi in "$AMZDIR"!
+if [ ! -f "$AMZDIR"/amazon2_x86_64.vdi ]; then
+ echo There must be a file named amazon2_x86_64.vdi in "$AMZDIR"!
echo You can download the vdi file at https://cdn.amazonlinux.com/os-images/latest/virtualbox/
exit 1
fi
@@ -24,7 +24,17 @@ echo "Cleaning up old files"
rm -f "$AMZDIR"/*.iso "$AMZDIR"/*.ovf "$AMZDIR"/*.vmdk
echo "Creating ISO"
-hdiutil makehybrid -o "$AMZDIR"/seed.iso -hfs -joliet -iso -default-volume-name cidata "$AMZDIR"/../amz_seed_iso
+SEED_ISO_DIR="$(pwd)/packer_templates/http/amazon"
+if [ -x "$(command -v genisoimage)" ]; then
+ genisoimage -output "$AMZDIR"/seed.iso -volid cidata -joliet -rock "$SEED_ISO_DIR"/user-data "$SEED_ISO_DIR"/meta-data
+elif [ -x "$(command -v hdiutil)" ]; then
+ hdiutil makehybrid -o "$AMZDIR"/seed.iso -hfs -joliet -iso -default-volume-name cidata "$SEED_ISO_DIR"/
+elif [ -x "$(command -v mkisofs)" ]; then
+ mkfsiso9660 -o "$AMZDIR"/seed.iso "$SEED_ISO_DIR"/
+else
+ echo "No tool found to create the seed.iso"
+ exit 1
+fi
VM="AmazonLinuxBento"
echo Powering off and deleting any existing VMs named $VM
@@ -36,8 +46,8 @@ echo "Creating the VM"
# from https://www.perkin.org.uk/posts/create-virtualbox-vm-from-the-command-line.html
VBoxManage createvm --name $VM --ostype "RedHat_64" --register
VBoxManage storagectl $VM --name "SATA Controller" --add sata --controller IntelAHCI
-VBoxManage storageattach $VM --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium "$AMZDIR"/amazon.vdi
-VBoxManage storageattach $VM --storagectl "SATA Controller" --port 0 --device 1 --type dvddrive --medium "$AMZDIR"/seed.iso
+VBoxManage storageattach $VM --storagectl "SATA Controller" --port 0 --type hdd --medium "$AMZDIR"/amazon2_x86_64.vdi
+VBoxManage storageattach $VM --storagectl "SATA Controller" --port 1 --type dvddrive --medium "$AMZDIR"/seed.iso
VBoxManage modifyvm $VM --memory 2048
VBoxManage modifyvm $VM --cpus 2
VBoxManage modifyvm $VM --audio-driver none
@@ -48,20 +58,20 @@ echo Sleeping for 120 seconds to let the system boot and cloud-init to run
VBoxManage startvm $VM --type headless
sleep 120
VBoxManage controlvm $VM poweroff --type headless
-VBoxManage storageattach $VM --storagectl "SATA Controller" --port 0 --device 1 --type dvddrive --medium none
+VBoxManage storageattach $VM --storagectl "SATA Controller" --port 1 --type dvddrive --medium none
sleep 5
echo Exporting the VM to an OVF file
-vboxmanage export $VM -o "$AMZDIR"/amazon2.ovf
+vboxmanage export $VM -o "$AMZDIR"/amazon2_x86_64.ovf
sleep 5
echo Deleting the VM
vboxmanage unregistervm $VM --delete
echo starting packer build of amazonlinux
-if packer build -timestamp-ui -only=virtualbox-ovf.amazonlinux -var-file="$AMZDIR"/../../os_pkrvars/amazonlinux/amazonlinux-2-x86_64.pkrvars.hcl "$AMZDIR"/../../packer_templates; then
+if bento build --vars vbox_source_path="$AMZDIR"/amazon2_x86_64.ovf,vbox_checksum=null "$(pwd)"/os_pkrvars/amazonlinux/amazonlinux-2-x86_64.pkrvars.hcl; then
echo "Cleaning up files"
- rm -f "$AMZDIR"/*.ovf "$AMZDIR"/*.vmdk "$AMZDIR"/*.iso
+ rm -f "$AMZDIR"
else
exit 1
fi
diff --git a/amazonlinux-2023-aarch64-virtualbox-build.sh b/amazonlinux-2023-aarch64-virtualbox-build.sh
new file mode 100755
index 000000000..bdb1a01e0
--- /dev/null
+++ b/amazonlinux-2023-aarch64-virtualbox-build.sh
@@ -0,0 +1,86 @@
+#!/usr/bin/env bash
+
+# Getting script directory location
+SCRIPT_RELATIVE_DIR=$(dirname "${BASH_SOURCE[0]}")
+cd "$SCRIPT_RELATIVE_DIR" || exit
+
+# set tmp dir for files
+AMZDIR="$(pwd)/builds/build_files/amazonlinux-2023-aarch64-virtualbox"
+mkdir -p "$AMZDIR"
+
+echo "Cleaning up old files"
+rm -f "$AMZDIR"/*.iso "$AMZDIR"/*.ovf "$AMZDIR"/*.vmdk "$AMZDIR"/*.vdi
+
+# Get virtualbox vdi file name with latest version number
+IMG="$(wget -q https://cdn.amazonlinux.com/al2023/os-images/latest/kvm-arm64/ -O - | grep ".qcow2" | cut -d "\"" -f 2)"
+
+echo "Downloading $IMG"
+wget -q -O "$AMZDIR"/amazon2023_arm64.qcow2 -c https://cdn.amazonlinux.com/al2023/os-images/latest/kvm-arm64/"$IMG"
+
+echo "Convert qcow2 to vdi"
+qemu-img convert -f qcow2 "$AMZDIR"/amazon2023_arm64.qcow2 -O vdi "$AMZDIR"/amazon2023_arm64.vdi
+
+if [ ! -f "$AMZDIR"/amazon2023_arm64.vdi ]; then
+ echo There must be a file named amazon2023_arm64.vdi in "$AMZDIR"!
+ echo You can download the files at https://cdn.amazonlinux.com/al2023/os-images/latest/
+ exit 1
+fi
+
+echo "Creating ISO"
+SEED_ISO_DIR="$(pwd)/packer_templates/http/amazon"
+if [ -x "$(command -v genisoimage)" ]; then
+ genisoimage -output "$AMZDIR"/seed.iso -volid cidata -joliet -rock "$SEED_ISO_DIR"/user-data "$SEED_ISO_DIR"/meta-data
+elif [ -x "$(command -v hdiutil)" ]; then
+ hdiutil makehybrid -o "$AMZDIR"/seed.iso -hfs -joliet -iso -default-volume-name cidata "$SEED_ISO_DIR"/
+elif [ -x "$(command -v mkisofs)" ]; then
+ mkfsiso9660 -o "$AMZDIR"/seed.iso "$SEED_ISO_DIR"/
+else
+ echo "No tool found to create the seed.iso"
+ exit 1
+fi
+
+VM="AmazonLinuxBento"
+echo Powering off and deleting any existing VMs named $VM
+VBoxManage controlvm $VM poweroff --type headless 2> /dev/null
+VBoxManage unregistervm $VM --delete 2> /dev/null
+sleep 5
+
+echo "Creating the VM"
+# from https://www.perkin.org.uk/posts/create-virtualbox-vm-from-the-command-line.html
+VBoxManage createvm --name $VM --ostype "Fedora_64" --register
+VBoxManage storagectl $VM --name "SATA Controller" --add sata --controller IntelAHCI
+VBoxManage storageattach $VM --storagectl "SATA Controller" --port 0 --type hdd --medium "$AMZDIR"/amazon2023_arm64.vdi
+VBoxManage storageattach $VM --storagectl "SATA Controller" --port 1 --type dvddrive --medium "$AMZDIR"/seed.iso
+VBoxManage modifyvm $VM --chipset ich9
+VBoxManage modifyvm $VM --firmware efi
+VBoxManage modifyvm $VM --memory 2048
+VBoxManage modifyvm $VM --cpus 2
+VBoxManage modifyvm $VM --nat-localhostreachable1 on
+VBoxManage modifyvm $VM --vram 33
+VBoxManage modifyvm $VM --graphicscontroller vmsvga
+VBoxManage modifyvm $VM --vrde off
+VBoxManage modifyvm $VM --audio-driver none
+VBoxManage modifyvm $VM --ioapic on
+sleep 5
+
+echo "Sleeping for 120 seconds to let the system boot and cloud-init to run"
+VBoxManage startvm $VM --type headless
+sleep 120
+VBoxManage controlvm $VM poweroff --type headless
+VBoxManage storageattach $VM --storagectl "SATA Controller" --port 1 --type dvddrive --medium none
+sleep 5
+
+echo "Exporting the VM to an OVF file"
+vboxmanage export $VM -o "$AMZDIR"/amazon2023_arm64.ovf
+sleep 5
+
+echo "Deleting the VM"
+vboxmanage unregistervm $VM --delete
+
+echo "starting packer build of amazonlinux"
+if bento build --vars vbox_source_path="$AMZDIR"/amazon2023_arm64.ovf,vbox_checksum=null "$(pwd)"/os_pkrvars/amazonlinux/amazonlinux-2023-aarch64.pkrvars.hcl; then
+ echo "Cleaning up files"
+ rm -f "$AMZDIR"
+else
+ exit 1
+fi
diff --git a/amazonlinux-2023-x86_64-virtualbox-build.sh b/amazonlinux-2023-x86_64-virtualbox-build.sh
new file mode 100755
index 000000000..da6d3d097
--- /dev/null
+++ b/amazonlinux-2023-x86_64-virtualbox-build.sh
@@ -0,0 +1,84 @@
+#!/usr/bin/env bash
+
+# Getting script directory location
+SCRIPT_RELATIVE_DIR=$(dirname "${BASH_SOURCE[0]}")
+cd "$SCRIPT_RELATIVE_DIR" || exit
+
+# set tmp dir for files
+AMZDIR="$(pwd)/builds/build_files/amazonlinux-2023-x86_64-virtualbox"
+mkdir -p "$AMZDIR"
+
+echo "Cleaning up old files"
+rm -f "$AMZDIR"/*.iso "$AMZDIR"/*.ovf "$AMZDIR"/*.vmdk "$AMZDIR"/*.vdi
+
+# Get virtualbox vdi file name with latest version number
+IMG="$(wget -q https://cdn.amazonlinux.com/al2023/os-images/latest/kvm/ -O - | grep ".qcow2" | cut -d "\"" -f 2)"
+
+echo "Downloading $IMG"
+wget -q -O "$AMZDIR"/amazon2023_x86_64.qcow2 -c https://cdn.amazonlinux.com/al2023/os-images/latest/kvm/"$IMG"
+
+echo "Convert qcow2 to vdi"
+qemu-img convert -f qcow2 "$AMZDIR"/amazon2023_x86_64.qcow2 -O vdi "$AMZDIR"/amazon2023_x86_64.vdi
+
+if [ ! -f "$AMZDIR"/amazon2023_x86_64.vdi ]; then
+ echo There must be a file named amazon2023_x86_64.vdi in "$AMZDIR"!
+ echo You can download the files at https://cdn.amazonlinux.com/al2023/os-images/latest/
+ exit 1
+fi
+
+echo "Creating ISO"
+SEED_ISO_DIR="$(pwd)/packer_templates/http/amazon"
+if [ -x "$(command -v genisoimage)" ]; then
+ genisoimage -output "$AMZDIR"/seed.iso -volid cidata -joliet -rock "$SEED_ISO_DIR"/user-data "$SEED_ISO_DIR"/meta-data
+elif [ -x "$(command -v hdiutil)" ]; then
+ hdiutil makehybrid -o "$AMZDIR"/seed.iso -hfs -joliet -iso -default-volume-name cidata "$SEED_ISO_DIR"/
+elif [ -x "$(command -v mkisofs)" ]; then
+ mkfsiso9660 -o "$AMZDIR"/seed.iso "$SEED_ISO_DIR"/
+else
+ echo "No tool found to create the seed.iso"
+ exit 1
+fi
+
+VM="AmazonLinuxBento"
+echo Powering off and deleting any existing VMs named $VM
+VBoxManage controlvm $VM poweroff --type headless 2> /dev/null
+VBoxManage unregistervm $VM --delete 2> /dev/null
+sleep 5
+
+echo "Creating the VM"
+# from https://www.perkin.org.uk/posts/create-virtualbox-vm-from-the-command-line.html
+VBoxManage createvm --name $VM --ostype "Fedora_64" --register
+VBoxManage storagectl $VM --name "SATA Controller" --add sata --controller IntelAHCI
+VBoxManage storageattach $VM --storagectl "SATA Controller" --port 0 --type hdd --medium "$AMZDIR"/amazon2023_x86_64.vdi
+VBoxManage storageattach $VM --storagectl "SATA Controller" --port 1 --type dvddrive --medium "$AMZDIR"/seed.iso
+VBoxManage modifyvm $VM --memory 2048
+VBoxManage modifyvm $VM --cpus 2
+VBoxManage modifyvm $VM --nat-localhostreachable1 on
+VBoxManage modifyvm $VM --vram 10
+VBoxManage modifyvm $VM --graphicscontroller vmsvga
+VBoxManage modifyvm $VM --vrde off
+VBoxManage modifyvm $VM --audio-driver none
+VBoxManage modifyvm $VM --ioapic on
+sleep 5
+
+echo "Sleeping for 120 seconds to let the system boot and cloud-init to run"
+VBoxManage startvm $VM --type headless
+sleep 120
+VBoxManage controlvm $VM poweroff --type headless
+VBoxManage storageattach $VM --storagectl "SATA Controller" --port 1 --type dvddrive --medium none
+sleep 5
+
+echo "Exporting the VM to an OVF file"
+vboxmanage export $VM -o "$AMZDIR"/amazon2023_x86_64.ovf
+sleep 5
+
+echo "Deleting the VM"
+vboxmanage unregistervm $VM --delete
+
+echo "starting packer build of amazonlinux"
+if bento build --vars vbox_source_path="$AMZDIR"/amazon2023_x86_64.ovf,vbox_checksum=null "$(pwd)"/os_pkrvars/amazonlinux/amazonlinux-2023-x86_64.pkrvars.hcl; then
+ echo "Cleaning up files"
+ rm -f "$AMZDIR"
+else
+ exit 1
+fi
diff --git a/bento.gemspec b/bento.gemspec
index 690638410..23dfd1fd0 100644
--- a/bento.gemspec
+++ b/bento.gemspec
@@ -11,9 +11,11 @@ Gem::Specification.new do |s|
s.email = 'oss@chef.io'
s.homepage = 'https://github.com/chef/bento/'
- s.required_ruby_version = '>= 2.6'
+ s.required_ruby_version = '>= 3.0'
s.add_dependency 'mixlib-shellout', '>= 2.3.2'
+ s.add_dependency 'test-kitchen'
+ s.add_dependency 'kitchen-vagrant'
s.bindir = 'bin'
s.executables = %w(bento)
diff --git a/builds.yml b/builds.yml
index a429f96e8..373d0b86d 100644
--- a/builds.yml
+++ b/builds.yml
@@ -1,79 +1,51 @@
---
vagrant_cloud_account: 'bento'
+default_architectures:
+ - x86_64
+ - amd64
+
public:
- - 'almalinux-8'
- - 'almalinux-9'
- - 'amazon-2'
- - 'amazon-2023'
- - 'centos-7'
- - 'centos-stream-8'
- - 'centos-stream-9'
- - 'debian-11'
- - 'debian-12'
- - 'fedora-38'
- - 'fedora-39'
- - 'freebsd-13'
- - 'freebsd-14'
- - 'opensuse-leap-15'
- - 'oracle-7'
- - 'oracle-8'
- - 'oracle-9'
- - 'rockylinux-8'
- - 'rockylinux-9'
- - 'ubuntu-20.04'
- - 'ubuntu-22.04'
- - 'ubuntu-23.10'
- - 'almalinux-8-arm64'
- - 'almalinux-9-arm64'
- - 'amazon-2-arm64'
- - 'amazon-2023-arm64'
- - 'centos-7-arm64'
- - 'centos-stream-8-arm64'
- - 'centos-stream-9-arm64'
- - 'debian-11-arm64'
- - 'debian-12-arm64'
- - 'fedora-38-arm64'
- - 'fedora-39-arm64'
- - 'freebsd-13-arm64'
- - 'freebsd-14-arm64'
- - 'opensuse-leap-15-arm64'
- - 'oracle-7-arm64'
- - 'oracle-8-arm64'
- - 'oracle-9-arm64'
- - 'rockylinux-8-arm64'
- - 'rockylinux-9-arm64'
- - 'ubuntu-20.04-arm64'
- - 'ubuntu-22.04-arm64'
- - 'ubuntu-23.10-arm64'
+ - amazonlinux-2
+ - amazonlinux-2023
+ - almalinux-8
+ - almalinux-9
+ - centos-7
+ - centos-stream-8
+ - centos-stream-9
+ - debian-11
+ - debian-12
+ - fedora-39
+ - fedora-40
+ - freebsd-13
+ - freebsd-14
+ - opensuse-leap-15
+ - oraclelinux-7
+ - oraclelinux-8
+ - oraclelinux-9
+ - rockylinux-8
+ - rockylinux-9
+ - ubuntu-20.04
+ - ubuntu-22.04
+ - ubuntu-24.04
-# slug box name: text string from standard box name to match (generally the same)
+# slug box name: text string from standard box name to match
slugs:
- 'almalinux-8': 'almalinux-8'
- 'almalinux-9': 'almalinux-9'
- 'centos-7': 'centos-7'
- 'debian-12': 'debian-12'
- 'debian-11': 'debian-11'
- 'fedora-latest': 'fedora-39'
- 'freebsd-13': 'freebsd-13'
- 'freebsd-14': 'freebsd-14'
- 'opensuse-leap-15': 'opensuse-leap-15'
- 'oracle-7': 'oracle-7'
- 'oracle-8': 'oracle-8'
- 'oracle-9': 'oracle-9'
- 'rockylinux-8': 'rockylinux-8'
- 'rockylinux-9': 'rockylinux-9'
- 'almalinux-8-arm64': 'almalinux-8'
- 'almalinux-9-arm64': 'almalinux-9'
- 'centos-7-arm64': 'centos-7'
- 'debian-12-arm64': 'debian-12'
- 'debian-11-arm64': 'debian-11'
- 'fedora-latest-arm64': 'fedora-39'
- 'oracle-7-arm64': 'oracle-7'
- 'oracle-8-arm64': 'oracle-8'
- 'oracle-9-arm64': 'oracle-9'
- 'rockylinux-8-arm64': 'rockylinux-8'
- 'rockylinux-9-arm64': 'rockylinux-9'
+ - almalinux-8
+ - almalinux-9
+ - centos-7
+ - debian-12
+ - debian-11
+ - fedora-latest
+ - freebsd-13
+ - freebsd-14
+ - opensuse-leap-15
+ - oracle-7
+ - oracle-8
+ - oracle-9
+ - rockylinux-8
+ - rockylinux-9
+ - macos-14
do_not_build:
- amazon
diff --git a/builds/build_files/.gitkeep b/builds/build_files/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/builds/failed_testing/.gitkeep b/builds/failed_testing/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/builds/iso/.gitkeep b/builds/iso/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/lib/bento/buildmetadata.rb b/lib/bento/buildmetadata.rb
index ecbba79d5..5b9c61341 100644
--- a/lib/bento/buildmetadata.rb
+++ b/lib/bento/buildmetadata.rb
@@ -33,12 +33,7 @@ def read
attr_reader :template, :build_timestamp, :override_version, :pkr_cmd
def box_basename
- temp_name = name.gsub('/', '__').split('-')
- if temp_name.last == 'arm64'
- temp_name.join('-')
- else
- (temp_name.first temp_name.size - 1).join('-')
- end
+ name.gsub('/', '__').split('-').join('-')
end
def git_revision
@@ -54,12 +49,7 @@ def merged_vars
end
def name
- arch = merged_vars.fetch('arch', UNKNOWN).downcase
- if arch == 'aarch64' || arch == 'arm64'
- "#{merged_vars.fetch('name', template)}-arm64"
- else
- "#{merged_vars.fetch('name', template)}-x86_64"
- end
+ merged_vars.fetch('name', template)
end
def arch
diff --git a/lib/bento/cli.rb b/lib/bento/cli.rb
index 5b44ae3ce..696dd5c7d 100644
--- a/lib/bento/cli.rb
+++ b/lib/bento/cli.rb
@@ -6,6 +6,7 @@
require 'bento/normalize'
require 'bento/test'
require 'bento/upload'
+require 'bento/version'
class Options
NAME = File.basename($PROGRAM_NAME).freeze
@@ -33,6 +34,7 @@ def self.parse(args)
normalize : normalize one or more templates
test : test one or more builds with kitchen
upload : upload and release one or more builds to Vagrant Cloud
+ version : prints the version of #{NAME}
COMMANDS
end
@@ -47,6 +49,10 @@ def self.parse(args)
end
}
+ test_argv_proc = proc { |opts|
+ opts.regx = ARGV[0]
+ }
+
md_json_argv_proc = proc { |opts|
opts.md_json = ARGV[0]
}
@@ -59,6 +65,13 @@ def self.parse(args)
exit(0)
},
},
+ version: {
+ parser: OptionParser.new {},
+ argv: proc { |_opts|
+ puts Bento::VERSION
+ exit(0)
+ },
+ },
build: {
class: BuildRunner,
parser: OptionParser.new do |opts|
@@ -72,6 +85,10 @@ def self.parse(args)
options.metadata_only = opt
end
+ opts.on('--on-error OPT', '[cleanup|abort|ask|run-cleanup-provisioner] If the build fails do: clean up (default), abort, ask, or run-cleanup-provisioner.') do |opt|
+ options.on_error = opt
+ end
+
opts.on('--vars VARS', 'Comma seperated list of variable names equal values (ex: boot_wait="2s",ssh_timeout="5s")') do |opt|
options.vars = opt
end
@@ -80,10 +97,6 @@ def self.parse(args)
options.var_files = opt
end
- opts.on('-c BUILD_YML', '--config BUILD_YML', 'Use a configuration file') do |opt|
- options.config = opt
- end
-
opts.on('-d', '--[no-]debug', 'Run packer with debug output') do |opt|
options.debug = opt
end
@@ -96,15 +109,15 @@ def self.parse(args)
options.except = opt
end
- opts.on('-m MIRROR', '--mirror MIRROR', 'Look for isos at MIRROR') do |opt|
+ opts.on('-M MIRROR', '--mirror MIRROR', 'Look for isos at MIRROR') do |opt|
options.mirror = opt
end
- opts.on('-C cpus', '--cpus CPUS', '# of CPUs per provider') do |opt|
+ opts.on('-c CPUS', '--cpus CPUS', '# of CPUs per provider') do |opt|
options.cpus = opt
end
- opts.on('-M MEMORY', '--memory MEMORY', 'Memory (MB) per provider') do |opt|
+ opts.on('-m MEMORY', '--memory MEMORY', 'Memory (MB) per provider') do |opt|
options.mem = opt
end
@@ -112,7 +125,7 @@ def self.parse(args)
options.headed = opt
end
- opts.on('-S', '--single', 'Disable parallelization of Packer builds') do |opt|
+ opts.on('-s', '--single', 'Disable parallelization of Packer builds') do |opt|
options.single = opt
end
@@ -156,7 +169,7 @@ def self.parse(args)
options.provisioner = opt
end
end,
- argv: proc {},
+ argv: test_argv_proc,
},
upload: {
class: UploadRunner,
@@ -197,7 +210,7 @@ def initialize(opts)
end
def start
- templates.each { |template| puts template }
+ puts templates.join("\n")
end
end
diff --git a/lib/bento/common.rb b/lib/bento/common.rb
index 24aa0b81f..8b3b9a63d 100644
--- a/lib/bento/common.rb
+++ b/lib/bento/common.rb
@@ -75,40 +75,20 @@ def box_metadata(metadata_file)
metadata
end
- def metadata_files
- @metadata_files ||= Dir.glob('builds/*.json')
+ def metadata_files(arch_support = false)
+ arch = if RbConfig::CONFIG['host_cpu'] == 'arm64'
+ 'aarch64'
+ else
+ RbConfig::CONFIG['host_cpu']
+ end
+ glob = "builds/*#{"-#{arch}" if arch_support}._metadata.json"
+ @metadata_files ||= Dir.glob(glob)
end
def builds_yml
YAML.load(File.read('builds.yml'))
end
- def build_list
- arm64 = []
- x86_64 = []
- builds_yml['public'].each do |platform, versions|
- versions.each do |version, archs|
- archs.each do |arch|
- folder = case platform
- when 'opensuse-leap'
- 'opensuse'
- when 'oracle'
- 'oraclelinux'
- else
- platform
- end
- case arch
- when 'aarch64'
- arm64 << "#{folder}/#{platform}-#{version}-#{arch}"
- else
- x86_64 << "#{folder}/#{platform}-#{version}-#{arch}"
- end
- end
- end
- end
- x86_64 + arm64
- end
-
def private_box?(boxname)
proprietary_os_list = %w(macos windows sles solaris rhel)
proprietary_os_list.any? { |p| boxname.include?(p) }
diff --git a/lib/bento/providermetadata.rb b/lib/bento/providermetadata.rb
index 051b41a9d..7850e4c49 100644
--- a/lib/bento/providermetadata.rb
+++ b/lib/bento/providermetadata.rb
@@ -93,7 +93,7 @@ def ver_vbox
end
def ver_libvirt
- cmd = Mixlib::ShellOut.new('/usr/local/opt/libvirt/sbin/libvirtd -V')
+ cmd = Mixlib::ShellOut.new('libvirtd -V')
cmd.run_command
cmd.stdout.split(' ').last
end
diff --git a/lib/bento/runner.rb b/lib/bento/runner.rb
index f1f170046..7c41b5804 100644
--- a/lib/bento/runner.rb
+++ b/lib/bento/runner.rb
@@ -8,7 +8,7 @@ class BuildRunner
include Common
include PackerExec
- attr_reader :template_files, :config, :dry_run, :debug, :only, :except, :mirror, :headed, :single, :errors,
+ attr_reader :template_files, :dry_run, :debug, :only, :except, :mirror, :headed, :single, :errors, :on_error,
:override_version, :build_timestamp, :cpus, :mem, :metadata_only, :vars, :var_files, :pkr_cmd
def initialize(opts)
@@ -17,7 +17,8 @@ def initialize(opts)
@dry_run = opts.dry_run
@metadata_only = opts.metadata_only
@debug = opts.debug
- @only = opts.only ||= 'parallels-iso.vm,virtualbox-iso.vm,vmware-iso.vm'
+ @on_error = opts.on_error ||= nil
+ @only = opts.only ||= nil
@except = opts.except
@mirror = opts.mirror
@headed = opts.headed ||= false
@@ -33,7 +34,7 @@ def initialize(opts)
end
def start
- templates = config ? build_list : template_files
+ templates = template_files
banner('Starting build for templates:')
banner('Installing packer plugins') unless dry_run || metadata_only
shellout("packer init -upgrade #{File.dirname(templates.first)}/../../packer_templates") unless dry_run || metadata_only
@@ -43,7 +44,7 @@ def start
end
banner("Build finished in #{duration(time.real)}.")
unless errors.empty?
- raise("Failed Builds:\n #{errors.join("\n")}\n exited #{$CHILD_STATUS}")
+ raise("Failed Builds:\n#{errors.join("\n")}\nexited #{$CHILD_STATUS}")
end
end
@@ -64,8 +65,8 @@ def build(file)
time = Benchmark.measure do
cmd.run_command
end
- if Dir.glob("../../builds/*.box").empty?
- banner("Not writing metadata file since no boxes exist")
+ if Dir.glob("../../builds/#{template.split('-')[0...-1].join('-')}*-#{template.split('-')[-1]}.*.box").empty?
+ banner('Not writing metadata file since no boxes exist')
else
write_final_metadata(template, time.real.ceil)
end
@@ -87,7 +88,7 @@ def packer_build_cmd(template, _var_file)
var_files.each do |var_file|
cmd.insert(5, "-var-file=#{var_file}") if File.exist?(var_file)
end if var_files
- cmd.insert(4, "-only=#{only}")
+ cmd.insert(4, "-only=#{only}") if only
cmd.insert(4, "-except=#{except}") if except
# Build the command line in the correct order and without spaces as future input for the splat operator.
cmd.insert(4, "-var cpus=#{cpus}") if cpus
@@ -95,6 +96,7 @@ def packer_build_cmd(template, _var_file)
cmd.insert(4, '-var headless=false') if headed
cmd.insert(2, '-parallel=false') if single
cmd.insert(2, '-debug') if debug
+ cmd.insert(2, "-on-error=#{on_error}") if on_error
cmd.insert(0, 'echo') if dry_run || metadata_only
cmd
end
@@ -106,8 +108,8 @@ def write_final_metadata(template, buildtime)
md[:providers] = ProviderMetadata.new(path, md[:template]).read
md[:providers].each do |p|
p[:build_time] = buildtime
- p[:build_cpus] = cpus unless cpus.nil?
- p[:build_mem] = mem unless mem.nil?
+ p[:build_cpus] = cpus if cpus
+ p[:build_mem] = mem if mem
end
if dry_run
diff --git a/lib/bento/test.rb b/lib/bento/test.rb
index b4a572f56..5bdbc4952 100644
--- a/lib/bento/test.rb
+++ b/lib/bento/test.rb
@@ -5,24 +5,33 @@
class TestRunner
include Common
- attr_reader :shared_folder, :boxname, :provider, :box_url, :no_shared, :provisioner
+ attr_reader :shared_folder, :boxname, :provider, :box_url, :no_shared, :provisioner, :errors, :regx
def initialize(opts)
@debug = opts.debug
@no_shared = opts.no_shared
@provisioner = opts.provisioner.nil? ? 'shell' : opts.provisioner
+ @errors = []
+ @regx = opts.regx || nil
end
def start
banner('Starting testing...')
+ md_files = metadata_files(true)
+ puts md_files.join("\n")
time = Benchmark.measure do
- metadata_files.each do |metadata_file|
+ md_files.each do |metadata_file|
destroy_all_bento
test_box(metadata_file)
destroy_all_bento
end
end
banner("Testing finished in #{duration(time.real)}.")
+ if errors.empty?
+ banner('All tests passed.')
+ else
+ raise("Failed Tests:\n#{errors.join("\n")}\nexited #{$CHILD_STATUS}")
+ end
end
private
@@ -45,8 +54,17 @@ def test_box(md_json)
temp_dir = "#{bento_dir}/builds/test-kitchen"
Dir.mkdir(temp_dir) unless Dir.exist?(temp_dir)
md = box_metadata(md_json)
+ arch = case md['arch']
+ when 'x86_64', 'amd64'
+ 'amd64'
+ when 'aarch64', 'arm64'
+ 'arm64'
+ else
+ raise "Unknown arch #{md['arch'].inspect}"
+ end
@boxname = md['name']
@providers = md['providers']
+ @arch = arch
@share_disabled = no_shared || /(bsd|opensuse)/.match(boxname) ? true : false
dir = "#{File.expand_path('../../', File.dirname(__FILE__))}/lib/bento/test_templates"
@@ -58,9 +76,33 @@ def test_box(md_json)
Dir.chdir(temp_dir)
banner("Test kitchen file located in #{temp_dir}")
- test = Mixlib::ShellOut.new('kitchen test', timeout: 900, live_stream: STDOUT)
- test.run_command
- test.error!
+ if regx
+ test = Mixlib::ShellOut.new("kitchen test #{regx.tr('.', '').tr('_', '-')}", timeout: 900, live_stream: STDOUT)
+ test.run_command
+ if test.error?
+ puts test.stderr
+ errors << "#{regex}"
+ end
+ else
+ @providers.each do |k, v|
+ banner("Testing #{@boxname.tr('.', '')}-#{@arch}-#{k.tr('_', '-')}")
+ test = Mixlib::ShellOut.new("kitchen test #{@boxname.tr('.', '')}-#{@arch}-#{k.tr('_', '-')}", timeout: 900, live_stream: STDOUT)
+ test.run_command
+ next unless test.error?
+ puts test.stderr
+ errors << "#{@boxname}-#{@arch}-#{k}"
+ FileUtils.cp(File.join(bento_dir, md_json), File.join(bento_dir, 'builds', 'failed_testing', File.basename(md_json))) unless File.exist?(File.join(bento_dir, 'builds', 'failed_testing', File.basename(md_json)))
+ FileUtils.mv(File.join(bento_dir, 'builds', v['file']), File.join(bento_dir, 'builds', 'failed_testing', v['file']))
+ @providers.delete(k)
+ if @providers.empty?
+ File.delete(File.join(bento_dir, md_json)) if File.exist?(File.join(bento_dir, md_json))
+ else
+ File.binwrite(File.join(bento_dir, md_json), JSON.pretty_generate(md))
+ end
+ end
+ end
+ destroy = Mixlib::ShellOut.new('kitchen destroy', timeout: 900, live_stream: STDOUT)
+ destroy.run_command
Dir.chdir(bento_dir)
FileUtils.rm_rf(temp_dir)
end
diff --git a/lib/bento/test_templates/kitchen.yml.erb b/lib/bento/test_templates/kitchen.yml.erb
index f676bab8f..56836444e 100644
--- a/lib/bento/test_templates/kitchen.yml.erb
+++ b/lib/bento/test_templates/kitchen.yml.erb
@@ -4,13 +4,14 @@ provisioner:
platforms:
<% @providers.each do |k,v| -%>
-- name: <%= @boxname + '-' + k %>
+- name: <%= "#{@boxname}-#{@arch}-#{k}" %>
driver:
name: vagrant
provider: <%= k %>
vm_hostname: bento-test
box: bento-<%= @boxname %>
box_url: file://<%= Dir.pwd %>/builds/<%= v['file'] %>
+ box_arch: <%= @arch %>
synced_folders:
<% if k =~ /hyperv/ -%>
- [".", "/vagrant", "disabled: true"]
diff --git a/lib/bento/upload.rb b/lib/bento/upload.rb
index 56863406b..078902800 100644
--- a/lib/bento/upload.rb
+++ b/lib/bento/upload.rb
@@ -45,14 +45,14 @@ def upload_box(md_file)
md_data['providers'].each_pair do |prov, prov_data|
if File.exist?(File.join('builds', prov_data['file']))
puts ''
- banner("Uploading #{builds_yml['vagrant_cloud_account']}/#{md_data['box_basename']} version:#{md_data['version']} provider:#{prov}...")
- upload_cmd = "vagrant cloud publish --architecture #{arch} --no-direct-upload #{builds_yml['vagrant_cloud_account']}/#{md_data['box_basename']} #{md_data['version']} #{prov} builds/#{prov_data['file']} --description '#{box_desc(md_data['box_basename'])}' --short-description '#{box_desc(md_data['box_basename'])}' --version-description '#{ver_desc(md_data)}' --force --release #{public_private_box(md_data['box_basename'])}"
+ banner("Uploading #{builds_yml['vagrant_cloud_account']}/#{md_data['box_basename']} version:#{md_data['version']} provider:#{prov} arch:#{arch}...")
+ upload_cmd = "vagrant cloud publish --architecture #{arch} #{default_arch(arch)} --no-direct-upload #{builds_yml['vagrant_cloud_account']}/#{md_data['box_basename']} #{md_data['version']} #{prov} builds/#{prov_data['file']} --description '#{box_desc(md_data['box_basename'])}' --short-description '#{box_desc(md_data['box_basename'])}' --version-description '#{ver_desc(md_data)}' --force --release #{public_private_box(md_data['box_basename'])}"
shellout(upload_cmd)
slug_name = lookup_slug(md_data['name'])
if slug_name
puts ''
- banner("Uploading slug #{builds_yml['vagrant_cloud_account']}/#{slug_name} from #{md_data['box_basename']} version:#{md_data['version']} provider:#{prov}...")
+ banner("Uploading slug #{builds_yml['vagrant_cloud_account']}/#{slug_name} from #{md_data['box_basename']} version:#{md_data['version']} provider:#{prov} arch:#{arch}...")
upload_cmd = "vagrant cloud publish --architecture #{arch} --no-direct-upload #{builds_yml['vagrant_cloud_account']}/#{slug_name} #{md_data['version']} #{prov} builds/#{prov_data['file']} --description '#{slug_desc(slug_name)}' --short-description '#{slug_desc(slug_name)}' --version-description '#{ver_desc(md_data)}' --force --release #{public_private_box(md_data['box_basename'])}"
shellout(upload_cmd)
end
@@ -74,12 +74,8 @@ def upload_box(md_file)
# @return [String, NilClass] The slug name or nil
#
def lookup_slug(name)
- builds_yml['slugs'].each_pair do |slug, match_string|
- if name.include?('arm64')
- return slug if name.start_with?(match_string) && slug.include?('arm64')
- else
- return slug if name.start_with?(match_string) && !slug.include?('arm64')
- end
+ builds_yml['slugs'].each do |slug|
+ return slug if name.start_with?(slug)
end
nil
@@ -87,21 +83,24 @@ def lookup_slug(name)
def public_private_box(name)
builds_yml['public'].each do |public|
- if name.include?('arm64') || name.include?('aarch64')
- return '--no-private' if name.start_with?(public) && public.include?('arm64')
- else
- return '--no-private' if name.start_with?(public) && !public.include?('arm64')
- end
+ return '--no-private' if name.start_with?(public)
+ end
+ '--private'
+ end
+
+ def default_arch(architecture)
+ builds_yml['default_architectures'].each do |arch|
+ return '--default-architecture' if architecture.eql?(arch)
end
- return '--private'
+ '--no-default-architecture'
end
def box_desc(name)
- "Vanilla #{name.tr('-', ' ').capitalize} Vagrant box created with Bento by Chef"
+ "Vanilla #{name.tr('-', ' ').capitalize} Vagrant box created with Bento by Progress Chef"
end
def slug_desc(name)
- "Vanilla #{name.tr('-', ' ').capitalize} Vagrant box created with Bento by Chef. This box will be updated with the latest releases of #{name.tr('-', ' ').capitalize} as they become available"
+ "Vanilla #{name.tr('-', ' ').capitalize} Vagrant box created with Bento by Progress Chef. This box will be updated with the latest releases of #{name.tr('-', ' ').capitalize} as they become available"
end
def ver_desc(md_data)
@@ -120,6 +119,6 @@ def ver_desc(md_data)
tool_versions.sort!
tool_versions << "packer: #{md_data['packer']}"
- "#{md_data['box_basename'].capitalize.tr('-', ' ')} Vagrant box version #{md_data['version']} created with Bento by Chef. Built with: #{tool_versions.join(', ')}"
+ "#{md_data['box_basename'].capitalize.tr('-', ' ')} Vagrant box version #{md_data['version']} created with Bento by Progress Chef. Built with: #{tool_versions.join(', ')}"
end
end
diff --git a/lib/bento/version.rb b/lib/bento/version.rb
index 40b214786..30e078423 100644
--- a/lib/bento/version.rb
+++ b/lib/bento/version.rb
@@ -1,3 +1,3 @@
module Bento
- VERSION = '3.2.2'.freeze
+ VERSION = '4.1.1'.freeze
end
diff --git a/os_pkrvars/amazonlinux/amazonlinux-2-aarch64.pkrvars.hcl b/os_pkrvars/amazonlinux/amazonlinux-2-aarch64.pkrvars.hcl
new file mode 100644
index 000000000..0895fcfd9
--- /dev/null
+++ b/os_pkrvars/amazonlinux/amazonlinux-2-aarch64.pkrvars.hcl
@@ -0,0 +1,11 @@
+os_name = "amazonlinux"
+os_version = "2"
+os_arch = "aarch64"
+vbox_source_path = "https://cdn.amazonlinux.com/os-images/latest/kvm-arm64/amzn2-kvm-2.0.20240306.2-arm64.xfs.gpt.qcow2"
+vbox_checksum = "file:https://cdn.amazonlinux.com/os-images/latest/kvm-arm64/SHA256SUMS"
+parallels_guest_os_type = "fedora-core"
+vbox_guest_os_type = "Fedora_64"
+vmware_guest_os_type = "arm-fedora-64"
+sources_enabled = [
+ "source.virtualbox-ovf.vm"
+]
diff --git a/os_pkrvars/amazonlinux/amazonlinux-2-x86_64.pkrvars.hcl b/os_pkrvars/amazonlinux/amazonlinux-2-x86_64.pkrvars.hcl
index 4707acc7d..812d44045 100644
--- a/os_pkrvars/amazonlinux/amazonlinux-2-x86_64.pkrvars.hcl
+++ b/os_pkrvars/amazonlinux/amazonlinux-2-x86_64.pkrvars.hcl
@@ -1,21 +1,11 @@
-os_name = "amazonlinux"
-os_version = "2"
-os_arch = "x86_64"
-vbox_guest_os_type = "RedHat_64"
+os_name = "amazonlinux"
+os_version = "2"
+os_arch = "x86_64"
+vbox_source_path = "https://cdn.amazonlinux.com/os-images/latest/virtualbox/amzn2-virtualbox-2.0.20240306.2-x86_64.xfs.gpt.vdi"
+vbox_checksum = "file:https://cdn.amazonlinux.com/os-images/latest/virtualbox/SHA256SUMS"
+parallels_guest_os_type = "centos"
+vbox_guest_os_type = "RedHat_64"
+vmware_guest_os_type = "rhel9-64"
sources_enabled = [
- "source.virtualbox-ovf.amazonlinux"
-]
-vboxmanage = [
- [
- "modifyvm",
- "{{ .Name }}",
- "--memory",
- "2048",
- "--cpus",
- "2",
- "--audio",
- "none",
- "--nat-localhostreachable1",
- "on",
- ]
+ "source.virtualbox-ovf.vm"
]
diff --git a/os_pkrvars/amazonlinux/amazonlinux-2023-aarch64.pkrvars.hcl b/os_pkrvars/amazonlinux/amazonlinux-2023-aarch64.pkrvars.hcl
new file mode 100644
index 000000000..6a72f30af
--- /dev/null
+++ b/os_pkrvars/amazonlinux/amazonlinux-2023-aarch64.pkrvars.hcl
@@ -0,0 +1,11 @@
+os_name = "amazonlinux"
+os_version = "2023"
+os_arch = "aarch64"
+vbox_source_path = "https://cdn.amazonlinux.com/al2023/os-images/2023.3.20240312.0/vmware/al2023-vmware_esx-2023.3.20240312.0-kernel-6.1-x86_64.xfs.gpt.ova"
+vbox_checksum = "file:https://cdn.amazonlinux.com/al2023/os-images/2023.3.20240312.0/vmware/SHA256SUMS"
+parallels_guest_os_type = "fedora-core"
+vbox_guest_os_type = "Fedora_64"
+vmware_guest_os_type = "arm-fedora-64"
+sources_enabled = [
+ "source.virtualbox-ovf.vm"
+]
diff --git a/os_pkrvars/amazonlinux/amazonlinux-2023-x86_64.pkrvars.hcl b/os_pkrvars/amazonlinux/amazonlinux-2023-x86_64.pkrvars.hcl
index 421326585..b059b2b4a 100644
--- a/os_pkrvars/amazonlinux/amazonlinux-2023-x86_64.pkrvars.hcl
+++ b/os_pkrvars/amazonlinux/amazonlinux-2023-x86_64.pkrvars.hcl
@@ -1,21 +1,11 @@
-os_name = "amazonlinux"
-os_version = "2023"
-os_arch = "x86_64"
-vbox_guest_os_type = "RedHat_64"
+os_name = "amazonlinux"
+os_version = "2023"
+os_arch = "x86_64"
+vbox_source_path = "https://cdn.amazonlinux.com/al2023/os-images/latest/vmware/al2023-vmware_esx-2023.3.20240312.0-kernel-6.1-x86_64.xfs.gpt.ova"
+vbox_checksum = "file:https://cdn.amazonlinux.com/al2023/os-images/latest/vmware/SHA256SUMS"
+parallels_guest_os_type = "fedora-core"
+vbox_guest_os_type = "Fedora_64"
+vmware_guest_os_type = "fedora-64"
sources_enabled = [
- "source.virtualbox-ovf.amazonlinux"
-]
-vboxmanage = [
- [
- "modifyvm",
- "{{ .Name }}",
- "--memory",
- "2048",
- "--cpus",
- "2",
- "--audio",
- "none",
- "--nat-localhostreachable1",
- "on",
- ]
+ "source.virtualbox-ovf.vm"
]
diff --git a/os_pkrvars/centos/centos-7-aarch64.pkrvars.hcl b/os_pkrvars/centos/centos-7-aarch64.pkrvars.hcl
index c9cb1a8bc..1d5b199f2 100644
--- a/os_pkrvars/centos/centos-7-aarch64.pkrvars.hcl
+++ b/os_pkrvars/centos/centos-7-aarch64.pkrvars.hcl
@@ -5,5 +5,5 @@ iso_url = "https://quantum-mirror.hu/mirrors/pub/centos-altarch/
iso_checksum = "file:https://quantum-mirror.hu/mirrors/pub/centos-altarch/7.9.2009/isos/aarch64/sha256sum.txt"
parallels_guest_os_type = "centos"
vbox_guest_os_type = "RedHat_64"
-vmware_guest_os_type = "arm-centos-64"
+vmware_guest_os_type = "arm-other-64"
boot_command = ["e text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/rhel/7ks.cfg x"]
diff --git a/os_pkrvars/centos/centos-stream-8-aarch64.pkrvars.hcl b/os_pkrvars/centos/centos-stream-8-aarch64.pkrvars.hcl
index 20fb10372..08d946e6b 100644
--- a/os_pkrvars/centos/centos-stream-8-aarch64.pkrvars.hcl
+++ b/os_pkrvars/centos/centos-stream-8-aarch64.pkrvars.hcl
@@ -5,5 +5,5 @@ iso_url = "https://mirrors.edge.kernel.org/centos/8-stream/isos/
iso_checksum = "file:https://mirrors.edge.kernel.org/centos/8-stream/isos/aarch64/CHECKSUM"
parallels_guest_os_type = "centos"
vbox_guest_os_type = "RedHat_64"
-vmware_guest_os_type = "arm-centos-64"
+vmware_guest_os_type = "arm-other-64"
boot_command = ["e inst.text inst.ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/rhel/8ks.cfg x"]
diff --git a/os_pkrvars/centos/centos-stream-9-aarch64.pkrvars.hcl b/os_pkrvars/centos/centos-stream-9-aarch64.pkrvars.hcl
index 9acbd0cf6..635e561ba 100644
--- a/os_pkrvars/centos/centos-stream-9-aarch64.pkrvars.hcl
+++ b/os_pkrvars/centos/centos-stream-9-aarch64.pkrvars.hcl
@@ -5,5 +5,5 @@ iso_url = "https://mirror.stream.centos.org/9-stream/BaseOS/aarc
iso_checksum = "file:https://mirror.stream.centos.org/9-stream/BaseOS/aarch64/iso/CentOS-Stream-9-latest-aarch64-dvd1.iso.SHA256SUM"
parallels_guest_os_type = "centos"
vbox_guest_os_type = "RedHat_64"
-vmware_guest_os_type = "arm-centos-64"
+vmware_guest_os_type = "arm-rhel9-64"
boot_command = ["e inst.text inst.ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/rhel/9ks.cfg x"]
diff --git a/os_pkrvars/debian/debian-11-aarch64.pkrvars.hcl b/os_pkrvars/debian/debian-11-aarch64.pkrvars.hcl
index ee5e7dedd..e06e354f1 100644
--- a/os_pkrvars/debian/debian-11-aarch64.pkrvars.hcl
+++ b/os_pkrvars/debian/debian-11-aarch64.pkrvars.hcl
@@ -1,9 +1,9 @@
os_name = "debian"
-os_version = "11.8"
+os_version = "11.9"
os_arch = "aarch64"
-iso_url = "https://cdimage.debian.org/cdimage/archive/latest-oldstable/arm64/iso-dvd/debian-11.8.0-arm64-DVD-1.iso"
+iso_url = "https://cdimage.debian.org/cdimage/archive/latest-oldstable/arm64/iso-dvd/debian-11.9.0-arm64-DVD-1.iso"
iso_checksum = "file:https://cdimage.debian.org/cdimage/archive/latest-oldstable/arm64/iso-dvd/SHA256SUMS"
parallels_guest_os_type = "debian"
vbox_guest_os_type = "Debian_64"
-vmware_guest_os_type = "arm-debian-64"
+vmware_guest_os_type = "arm-debian11-64"
boot_command = ["einstall preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/debian/preseed.cfg debian-installer=en_US.UTF-8 auto locale=en_US.UTF-8 kbd-chooser/method=us keyboard-configuration/xkb-keymap=us netcfg/get_hostname={{ .Name }} netcfg/get_domain=vagrantup.com fb=false debconf/frontend=noninteractive console-setup/ask_detect=false console-keymaps-at/keymap=us grub-installer/bootdev=/dev/sda "]
diff --git a/os_pkrvars/debian/debian-11-x86_64.pkrvars.hcl b/os_pkrvars/debian/debian-11-x86_64.pkrvars.hcl
index 9107b7f2e..e60ff9fb2 100644
--- a/os_pkrvars/debian/debian-11-x86_64.pkrvars.hcl
+++ b/os_pkrvars/debian/debian-11-x86_64.pkrvars.hcl
@@ -1,7 +1,7 @@
os_name = "debian"
-os_version = "11.8"
+os_version = "11.9"
os_arch = "x86_64"
-iso_url = "https://cdimage.debian.org/cdimage/archive/latest-oldstable/amd64/iso-dvd/debian-11.8.0-amd64-DVD-1.iso"
+iso_url = "https://cdimage.debian.org/cdimage/archive/latest-oldstable/amd64/iso-dvd/debian-11.9.0-amd64-DVD-1.iso"
iso_checksum = "file:https://cdimage.debian.org/cdimage/archive/latest-oldstable/amd64/iso-dvd/SHA256SUMS"
parallels_guest_os_type = "debian"
vbox_guest_os_type = "Debian_64"
diff --git a/os_pkrvars/debian/debian-12-aarch64.pkrvars.hcl b/os_pkrvars/debian/debian-12-aarch64.pkrvars.hcl
index aa3acc355..a1f98a930 100644
--- a/os_pkrvars/debian/debian-12-aarch64.pkrvars.hcl
+++ b/os_pkrvars/debian/debian-12-aarch64.pkrvars.hcl
@@ -1,9 +1,9 @@
os_name = "debian"
-os_version = "12.4"
+os_version = "12.5"
os_arch = "aarch64"
-iso_url = "https://cdimage.debian.org/cdimage/release/12.4.0/arm64/iso-dvd/debian-12.4.0-arm64-DVD-1.iso"
-iso_checksum = "file:https://cdimage.debian.org/cdimage/release/12.4.0/arm64/iso-dvd/SHA256SUMS"
+iso_url = "https://cdimage.debian.org/cdimage/release/12.5.0/arm64/iso-dvd/debian-12.5.0-arm64-DVD-1.iso"
+iso_checksum = "file:https://cdimage.debian.org/cdimage/release/12.5.0/arm64/iso-dvd/SHA256SUMS"
parallels_guest_os_type = "debian"
vbox_guest_os_type = "Debian_64"
-vmware_guest_os_type = "arm-debian-64"
+vmware_guest_os_type = "arm-debian12-64"
boot_command = ["einstall preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/debian/preseed.cfg debian-installer=en_US.UTF-8 auto locale=en_US.UTF-8 kbd-chooser/method=us keyboard-configuration/xkb-keymap=us netcfg/get_hostname={{ .Name }} netcfg/get_domain=vagrantup.com fb=false debconf/frontend=noninteractive console-setup/ask_detect=false console-keymaps-at/keymap=us grub-installer/bootdev=/dev/sda "]
diff --git a/os_pkrvars/debian/debian-12-x86_64.pkrvars.hcl b/os_pkrvars/debian/debian-12-x86_64.pkrvars.hcl
index 817f0a3c3..6ad4b3f04 100644
--- a/os_pkrvars/debian/debian-12-x86_64.pkrvars.hcl
+++ b/os_pkrvars/debian/debian-12-x86_64.pkrvars.hcl
@@ -1,8 +1,8 @@
os_name = "debian"
-os_version = "12.4"
+os_version = "12.5"
os_arch = "x86_64"
-iso_url = "https://cdimage.debian.org/cdimage/release/12.4.0/amd64/iso-dvd/debian-12.4.0-amd64-DVD-1.iso"
-iso_checksum = "file:https://cdimage.debian.org/cdimage/release/12.4.0/amd64/iso-dvd/SHA256SUMS"
+iso_url = "https://cdimage.debian.org/cdimage/release/12.5.0/amd64/iso-dvd/debian-12.5.0-amd64-DVD-1.iso"
+iso_checksum = "file:https://cdimage.debian.org/cdimage/release/12.5.0/amd64/iso-dvd/SHA256SUMS"
parallels_guest_os_type = "debian"
vbox_guest_os_type = "Debian_64"
vmware_guest_os_type = "debian-64"
diff --git a/os_pkrvars/fedora/fedora-39-aarch64.pkrvars.hcl b/os_pkrvars/fedora/fedora-39-aarch64.pkrvars.hcl
index 3ad5175de..b6e1b86db 100644
--- a/os_pkrvars/fedora/fedora-39-aarch64.pkrvars.hcl
+++ b/os_pkrvars/fedora/fedora-39-aarch64.pkrvars.hcl
@@ -1,4 +1,3 @@
-
os_name = "fedora"
os_version = "39"
os_arch = "aarch64"
@@ -7,4 +6,4 @@ iso_checksum = "sha256:d19dc2a39758155fa53e6fd555d0d173ccc8175b55dea4
parallels_guest_os_type = "fedora-core"
vbox_guest_os_type = "Fedora_64"
vmware_guest_os_type = "arm-fedora-64"
-boot_command = ["e inst.text inst.ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/fedora/ks.cfg"]
\ No newline at end of file
+boot_command = ["e inst.text inst.ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/fedora/ks.cfg"]
diff --git a/os_pkrvars/fedora/fedora-38-aarch64.pkrvars.hcl b/os_pkrvars/fedora/fedora-40-aarch64.pkrvars.hcl
similarity index 59%
rename from os_pkrvars/fedora/fedora-38-aarch64.pkrvars.hcl
rename to os_pkrvars/fedora/fedora-40-aarch64.pkrvars.hcl
index fe5750727..24c62af3a 100644
--- a/os_pkrvars/fedora/fedora-38-aarch64.pkrvars.hcl
+++ b/os_pkrvars/fedora/fedora-40-aarch64.pkrvars.hcl
@@ -1,8 +1,8 @@
os_name = "fedora"
-os_version = "38"
+os_version = "40"
os_arch = "aarch64"
-iso_url = "https://download.fedoraproject.org/pub/fedora/linux/releases/38/Server/aarch64/iso/Fedora-Server-dvd-aarch64-38-1.6.iso"
-iso_checksum = "sha256:0b40485d74fc60c0a78f071396aba78fafb2f8f3b1ab4cbc3388bda82f764f9b"
+iso_url = "https://download.fedoraproject.org/pub/fedora/linux/releases/40/Server/aarch64/iso/Fedora-Server-dvd-aarch64-40-1.14.iso"
+iso_checksum = "file:https://download.fedoraproject.org/pub/fedora/linux/releases/40/Server/aarch64/iso/Fedora-Server-40-1.14-aarch64-CHECKSUM"
parallels_guest_os_type = "fedora-core"
vbox_guest_os_type = "Fedora_64"
vmware_guest_os_type = "arm-fedora-64"
diff --git a/os_pkrvars/fedora/fedora-38-x86_64.pkrvars.hcl b/os_pkrvars/fedora/fedora-40-x86_64.pkrvars.hcl
similarity index 59%
rename from os_pkrvars/fedora/fedora-38-x86_64.pkrvars.hcl
rename to os_pkrvars/fedora/fedora-40-x86_64.pkrvars.hcl
index 2ae962cb3..18aec053c 100644
--- a/os_pkrvars/fedora/fedora-38-x86_64.pkrvars.hcl
+++ b/os_pkrvars/fedora/fedora-40-x86_64.pkrvars.hcl
@@ -1,8 +1,8 @@
os_name = "fedora"
-os_version = "38"
+os_version = "40"
os_arch = "x86_64"
-iso_url = "https://download.fedoraproject.org/pub/fedora/linux/releases/38/Server/x86_64/iso/Fedora-Server-dvd-x86_64-38-1.6.iso"
-iso_checksum = "sha256:66b52d7cb39386644cd740930b0bef0a5a2f2be569328fef6b1f9b3679fdc54d"
+iso_url = "https://download.fedoraproject.org/pub/fedora/linux/releases/40/Server/x86_64/iso/Fedora-Server-dvd-x86_64-40-1.14.iso"
+iso_checksum = "file:https://download.fedoraproject.org/pub/fedora/linux/releases/40/Server/x86_64/iso/Fedora-Server-40-1.14-x86_64-CHECKSUM"
parallels_guest_os_type = "fedora-core"
vbox_guest_os_type = "Fedora_64"
vmware_guest_os_type = "fedora-64"
diff --git a/os_pkrvars/freebsd/freebsd-13-aarch64.pkrvars.hcl b/os_pkrvars/freebsd/freebsd-13-aarch64.pkrvars.hcl
index b467c948e..d981c6986 100644
--- a/os_pkrvars/freebsd/freebsd-13-aarch64.pkrvars.hcl
+++ b/os_pkrvars/freebsd/freebsd-13-aarch64.pkrvars.hcl
@@ -1,9 +1,9 @@
os_name = "freebsd"
-os_version = "13.2"
+os_version = "13.3"
os_arch = "aarch64"
-iso_url = "https://download.freebsd.org/releases/arm64/aarch64/ISO-IMAGES/13.2/FreeBSD-13.2-RELEASE-arm64-aarch64-disc1.iso"
-iso_checksum = "file:https://download.freebsd.org/releases/arm64/aarch64/ISO-IMAGES/13.2/CHECKSUM.SHA256-FreeBSD-13.2-RELEASE-arm64-aarch64"
+iso_url = "https://download.freebsd.org/releases/arm64/aarch64/ISO-IMAGES/13.3/FreeBSD-13.3-RELEASE-arm64-aarch64-disc1.iso"
+iso_checksum = "file:https://download.freebsd.org/releases/arm64/aarch64/ISO-IMAGES/13.3/CHECKSUM.SHA256-FreeBSD-13.3-RELEASE-arm64-aarch64"
parallels_guest_os_type = "freebsd"
vbox_guest_os_type = "FreeBSD_64"
-vmware_guest_os_type = "arm-freebsd-64"
+vmware_guest_os_type = "arm-freebsd13-64"
boot_command = ["boot -s/bin/shmdmfs -s 100m md1 /tmpmdmfs -s 100m md2 /mntdhclient -p /tmp/dhclient.em0.pid -l /tmp/dhclient.lease.em0 em0fetch -o /tmp/installerconfig http://{{ .HTTPIP }}:{{ .HTTPPort }}/freebsd/installerconfig && bsdinstall script /tmp/installerconfig"]
diff --git a/os_pkrvars/freebsd/freebsd-13-x86_64.pkrvars.hcl b/os_pkrvars/freebsd/freebsd-13-x86_64.pkrvars.hcl
index 74d59042e..1b14f89e3 100644
--- a/os_pkrvars/freebsd/freebsd-13-x86_64.pkrvars.hcl
+++ b/os_pkrvars/freebsd/freebsd-13-x86_64.pkrvars.hcl
@@ -1,8 +1,8 @@
os_name = "freebsd"
-os_version = "13.2"
+os_version = "13.3"
os_arch = "x86_64"
-iso_url = "https://download.freebsd.org/releases/amd64/amd64/ISO-IMAGES/13.2/FreeBSD-13.2-RELEASE-amd64-disc1.iso"
-iso_checksum = "file:https://download.freebsd.org/releases/amd64/amd64/ISO-IMAGES/13.2/CHECKSUM.SHA256-FreeBSD-13.2-RELEASE-amd64"
+iso_url = "https://download.freebsd.org/releases/amd64/amd64/ISO-IMAGES/13.3/FreeBSD-13.3-RELEASE-amd64-disc1.iso"
+iso_checksum = "file:https://download.freebsd.org/releases/amd64/amd64/ISO-IMAGES/13.3/CHECKSUM.SHA256-FreeBSD-13.3-RELEASE-amd64"
parallels_guest_os_type = "freebsd"
vbox_guest_os_type = "FreeBSD_64"
vmware_guest_os_type = "freebsd-64"
diff --git a/os_pkrvars/freebsd/freebsd-14-aarch64.pkrvars.hcl b/os_pkrvars/freebsd/freebsd-14-aarch64.pkrvars.hcl
index 69344d36c..f2dfcfdb6 100644
--- a/os_pkrvars/freebsd/freebsd-14-aarch64.pkrvars.hcl
+++ b/os_pkrvars/freebsd/freebsd-14-aarch64.pkrvars.hcl
@@ -5,5 +5,5 @@ iso_url = "https://download.freebsd.org/releases/arm64/aarch64/I
iso_checksum = "file:https://download.freebsd.org/releases/arm64/aarch64/ISO-IMAGES/14.0/CHECKSUM.SHA256-FreeBSD-14.0-RELEASE-arm64-aarch64"
parallels_guest_os_type = "freebsd"
vbox_guest_os_type = "FreeBSD_64"
-vmware_guest_os_type = "arm-freebsd-64"
+vmware_guest_os_type = "arm-freebsd14-64"
boot_command = ["boot -s/bin/shmdmfs -s 100m md1 /tmpmdmfs -s 100m md2 /mntdhclient -p /tmp/dhclient.em0.pid -l /tmp/dhclient.lease.em0 em0fetch -o /tmp/installerconfig http://{{ .HTTPIP }}:{{ .HTTPPort }}/freebsd/installerconfig && bsdinstall script /tmp/installerconfig"]
diff --git a/os_pkrvars/macos/macos-14-aarch64.pkrvars.hcl b/os_pkrvars/macos/macos-14-aarch64.pkrvars.hcl
new file mode 100644
index 000000000..d488f91bc
--- /dev/null
+++ b/os_pkrvars/macos/macos-14-aarch64.pkrvars.hcl
@@ -0,0 +1,73 @@
+os_name = "macos"
+os_version = "14.4.1"
+os_arch = "aarch64"
+parallels_ipsw_url = "https://updates.cdn-apple.com/2024WinterFCS/fullrestores/052-77579/4569734E-120C-4F31-AD08-FC1FF825D059/UniversalMac_14.4.1_23E224_Restore.ipsw"
+parallels_ipsw_checksum = "78b39816521a6eeaf29221a4e59e83dae98ef5f9e8e718b846f8faab540a48c1"
+sources_enabled = ["source.parallels-ipsw.vm"]
+boot_command = [
+ # hello, hola, bonjour, etc.
+ "",
+ # Select Language English (US)
+ "",
+ # Select Your Country and Region
+ "",
+ # Written and Spoken Languages
+ "",
+ # Accessibility
+ "",
+ # Data & Privacy
+ "",
+ # Migration Assistant
+ "",
+ # Sign In with Your Apple ID
+ "",
+ # Are you sure you want to skip signing in with an Apple ID?
+ "",
+ # Terms and Conditions
+ "