{"id":34116262,"url":"https://github.com/veertuinc/packer-plugin-veertu-anka","last_synced_at":"2026-04-01T23:57:19.551Z","repository":{"id":37241606,"uuid":"94665473","full_name":"veertuinc/packer-plugin-veertu-anka","owner":"veertuinc","description":"🚛 A packer plugin for Veertu's Anka Build Cloud \u0026 Anka Virtualization software which allows you to run single-use macOS VMs like you would with docker.","archived":false,"fork":false,"pushed_at":"2025-11-11T22:34:51.000Z","size":25262,"stargazers_count":72,"open_issues_count":16,"forks_count":16,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-01-14T12:27:57.498Z","etag":null,"topics":["macos","packer-plugin","virtualization"],"latest_commit_sha":null,"homepage":"https://veertu.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/veertuinc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-06-18T04:42:38.000Z","updated_at":"2025-11-11T22:34:56.000Z","dependencies_parsed_at":"2025-09-16T21:15:05.012Z","dependency_job_id":"ee9ffe59-4664-4ab8-87cb-c0f8901fa10f","html_url":"https://github.com/veertuinc/packer-plugin-veertu-anka","commit_stats":null,"previous_names":["veertuinc/packer-builder-veertu-anka","buildkite/packer-builder-veertu-anka"],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/veertuinc/packer-plugin-veertu-anka","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veertuinc%2Fpacker-plugin-veertu-anka","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veertuinc%2Fpacker-plugin-veertu-anka/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veertuinc%2Fpacker-plugin-veertu-anka/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veertuinc%2Fpacker-plugin-veertu-anka/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/veertuinc","download_url":"https://codeload.github.com/veertuinc/packer-plugin-veertu-anka/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veertuinc%2Fpacker-plugin-veertu-anka/sbom","scorecard":{"id":257737,"data":{"date":"2025-08-04","repo":{"name":"github.com/veertuinc/packer-plugin-veertu-anka","commit":"444c158d5667c968dcd72c3434287a90162651fb"},"scorecard":{"version":"v5.2.1-28-gc1d103a9","commit":"c1d103a9bb9f635ec7260bf9aa0699466fa4be0e"},"score":4.4,"checks":[{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/check-pr.yml:1","Warn: no topLevel permission defined: .github/workflows/notify-integration-release-via-manual.yaml:1","Warn: no topLevel permission defined: .github/workflows/notify-integration-release-via-tag.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":1,"reason":"Found 1/10 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":2,"reason":"dependency not pinned by hash detected -- score normalized to 2","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/check-pr.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/veertuinc/packer-plugin-veertu-anka/check-pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/check-pr.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/veertuinc/packer-plugin-veertu-anka/check-pr.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/check-pr.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/veertuinc/packer-plugin-veertu-anka/check-pr.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/check-pr.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/veertuinc/packer-plugin-veertu-anka/check-pr.yml/master?enable=pin","Warn: goCommand not pinned by hash: .github/workflows/check-pr.yml:32","Info:   6 out of   8 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   0 out of   1 goCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#cii-best-practices"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#fuzzing"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/check-pr.yml:10"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/veertuinc/.github/SECURITY.md:1","Info: Found linked content: github.com/veertuinc/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/veertuinc/.github/SECURITY.md:1","Info: Found text in security policy: github.com/veertuinc/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#security-policy"}},{"name":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: packer-plugin-veertu-anka_v4.0.0_SHA256SUMS.sig: https://github.com/veertuinc/packer-plugin-veertu-anka/releases/tag/v4.0.0","Info: signed release artifact: packer-plugin-veertu-anka_v3.2.1_SHA256SUMS.sig: https://github.com/veertuinc/packer-plugin-veertu-anka/releases/tag/v3.2.1","Info: signed release artifact: packer-plugin-veertu-anka_v3.2.0_SHA256SUMS.sig: https://github.com/veertuinc/packer-plugin-veertu-anka/releases/tag/v3.2.0","Info: signed release artifact: packer-plugin-veertu-anka_v3.1.1_SHA256SUMS.sig: https://github.com/veertuinc/packer-plugin-veertu-anka/releases/tag/v3.1.1","Info: signed release artifact: packer-plugin-veertu-anka_v3.1.0_SHA256SUMS.sig: https://github.com/veertuinc/packer-plugin-veertu-anka/releases/tag/v3.1.0","Warn: release artifact v4.0.0 does not have provenance: https://api.github.com/repos/veertuinc/packer-plugin-veertu-anka/releases/156718917","Warn: release artifact v3.2.1 does not have provenance: https://api.github.com/repos/veertuinc/packer-plugin-veertu-anka/releases/119005747","Warn: release artifact v3.2.0 does not have provenance: https://api.github.com/repos/veertuinc/packer-plugin-veertu-anka/releases/113751971","Warn: release artifact v3.1.1 does not have provenance: https://api.github.com/repos/veertuinc/packer-plugin-veertu-anka/releases/107706645","Warn: release artifact v3.1.0 does not have provenance: https://api.github.com/repos/veertuinc/packer-plugin-veertu-anka/releases/83603960"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#signed-releases"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 23 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"15 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2022-0635","Warn: Project is vulnerable to: GO-2022-0646","Warn: Project is vulnerable to: GO-2023-2334 / GHSA-2c7c-3mj9-8fqh","Warn: Project is vulnerable to: GO-2024-2631 / GHSA-c5q2-7r4c-mv6g","Warn: Project is vulnerable to: GO-2025-3485 / GHSA-c6gw-w398-hv78","Warn: Project is vulnerable to: GO-2024-2947 / GHSA-v6v8-xj6m-xwqh","Warn: Project is vulnerable to: GO-2024-3321 / GHSA-v778-237x-gjrc","Warn: Project is vulnerable to: GO-2025-3487 / GHSA-hcg3-q754-cr77","Warn: Project is vulnerable to: GO-2024-2687 / GHSA-4v7x-pqxf-cx7m","Warn: Project is vulnerable to: GO-2024-3333","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw","Warn: Project is vulnerable to: GO-2025-3488 / GHSA-6v2p-p543-phr9","Warn: Project is vulnerable to: GO-2023-2153 / GHSA-m425-mq94-257g / GHSA-qppj-fm5r-hxr3","Warn: Project is vulnerable to: GO-2024-2611 / GHSA-8r3f-844c-mc37"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T10:04:27.441Z","repository_id":37241606,"created_at":"2025-08-17T10:04:27.441Z","updated_at":"2025-08-17T10:04:27.441Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30322645,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T01:36:58.598Z","status":"online","status_checked_at":"2026-03-10T02:00:06.579Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["macos","packer-plugin","virtualization"],"created_at":"2025-12-14T20:12:40.611Z","updated_at":"2026-04-01T23:57:19.543Z","avatar_url":"https://github.com/veertuinc.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Packer Plugin for Anka\n\nThis is a [Packer](https://www.packer.io/) Plugin for building images that work with [Veertu's Anka macOS Virtualization tool](https://veertu.com/).\n\n- For use with the post-processor, it's important to use `anka registry add` to [set your default registry on the machine building your templates/tags](https://docs.veertu.com/anka/apple/command-line-reference/#registry-add).\n\n\n## Compatibility\n\n| Packer Version | Anka Packer Plugin Version |\n| --- | --- |\n| below 1.7.0 | \u003c 1.8.0 |\n| 1.7.0 and above | \u003e= 2.0.0 |\n| \u003e= 1.11.0 | \u003e= v4.0.0 |\n\n| Packer Plugin Version | Anka CLI Version |\n| --- | --- |\n| 2.x | 2.x |\n| \u003e= 3.x | \u003e= 3.0.0 |\n\n## Installing with `packer init`\n\n1. Add a packer block to your .pkr.hcl like this:\n\n    ```\n    packer {\n      required_plugins {\n        veertu-anka = {\n          version = \"= v4.x.x\"\n          source = \"github.com/veertuinc/veertu-anka\"\n        }\n      }\n    }\n    ```\n\n2. Then run `packer init {HCL file name}`\n3. Run your `packer build` command with your hcl template\n\n## Installing from Binary\n\n1. [Install Packer v1.8 or newer](https://www.packer.io/downloads).\n2. [Install Veertu Anka](https://veertu.com/download-anka-build/).\n3. Download the [latest release](https://github.com/veertuinc/packer-plugin-veertu-anka/releases) for your host environment.\n4. Unzip the plugin binaries to a location where Packer will detect them at run-time, such as any of the following:\n    * The directory where the packer binary is.\n    * The `~/.config/packer/plugins` directory.\n    * The current working directory.\n5. Rename the binary file to `packer-plugin-veertu-anka`.\n6. Run your `packer build` command with your hcl template.\n\n## Documentation\n\n| Builders | Post Processors |\n| --- | --- |\n| [[ veertu-anka-vm-create ]](./docs/builders/vm-create.mdx) | [[ veertu-anka-registry-push ]](./docs/post-processors/anka-registry-push.mdx) |\n| [[ veertu-anka-vm-clone ]](./docs/builders/vm-clone.mdx) | |\n\n## Usage\n\n\u003e Currently file provisioners do not support ~ or \\$HOME in the destination paths. Please use absolute or relative paths.\n\n**Guest networking:** By default, **veertu-anka-vm-clone** and **veertu-anka-vm-create** run a guest `ping` loop against `8.8.8.8` after start (and after `boot_delay`) before provisioners. Set `wait_for_networking = false` on the source to skip that step. See the builder docs for details.\n\nThe most basic pkr.hcl file you can build from is:\n\n```hcl\nsource \"veertu-anka-vm-create\" \"anka-packer-base-macos\" {\n  installer = \"/Applications/Install macOS Big Sur.app/\"\n  vm_name = \"anka-packer-base-macos\"\n}\n\nbuild {\n  sources = [\n    \"source.veertu-anka-vm-create.anka-packer-base-macos\"\n  ]\n\n  post-processor \"veertu-anka-registry-push\" {\n    tag = \"veertu-registry-push-test\"\n  }\n}\n```\n\nThis will create a \"base\" VM template using the `.app` or `.ipsw` you specified in `installer = \"/Applications/Install macOS Big Sur.app/\"` with the name `anka-packer-base-macos`. Once the VM has been successfully created, it will push that VM to your default registry with the tag `veertu-registry-push-test`.\n\n\u003e If you don't specify `vm_name`, we will obtain it from the installer and create a name like `anka-packer-base-12.6-21G115`.\n\n\u003e **However, hw_uuid, port_forwarding_rules, and several other configuration settings are ignored for the created \"base\" vm.** We recommend using the `veertu-anka-vm-clone` builder to modify these values.\n\nYou can also skip the creation of the base VM template and use an existing VM template:\n\n```hcl\nsource \"veertu-anka-vm-clone\" \"anka-packer-from-source\" { \n  vm_name = \"anka-packer-from-source\"\n  source_vm_name = \"anka-packer-base-macos\"\n  always_fetch = true\n}\n\nbuild {\n  sources = [\n    \"source.veertu-anka-vm-clone.anka-packer-from-source\",\n  ]\n}\n```\n\nThis will check to see if the VM template/tag exists locally, and if not, pull it from the registry:\n\n```bash\n❯ PKR_VAR_source_vm_tag=\"v1\" PACKER_LOG=1 packer build -var 'source_vm_name=anka-packer-base-macos' examples/clone-existing-with-port-forwarding-rules.pkr.hcl\n. . .\n2021/04/07 14:11:52 packer-plugin-veertu-anka plugin: 2021/04/07 14:11:52 Searching for anka-packer-base-macos locally...\n2021/04/07 14:11:52 packer-plugin-veertu-anka plugin: 2021/04/07 14:11:52 Executing anka --machine-readable show anka-packer-base-macos\n2021/04/07 14:11:53 packer-plugin-veertu-anka plugin: 2021/04/07 14:11:53 Could not find anka-packer-base-macos locally, looking in anka registry...\n2021/04/07 14:11:53 packer-plugin-veertu-anka plugin: 2021/04/07 14:11:53 Executing anka --machine-readable registry pull --tag v1 anka-packer-base-macos\n```\n\n\u003e Within your `.pkrvars.hcl` files, you can utilize `variable` blocks and then assign them values using the command line `packer build -var 'foo=bar'` or as environment variables `PKR_VAR_foo=bar` https://www.packer.io/docs/templates/hcl_templates/variables#assigning-values-to-build-variables\n\nThis will clone `anka-packer-base-macos` to a new VM and, if there are set configurations, make them.\n\n\u003e Check out the [examples directory](./examples) to see how port-forwarding and other options are used.\n\n### Build Variables\n\nPacker allows for the exposure of build variables which connects information related to the artifact that was built. Those variables can then be accessed by `post-processors` and `provisioners`.\n\nThe variables we expose are:\n\n* `VMName`: name of the artifact vm\n* `OSVersion`: OS version from which the artifact was created \n  * eg. 10.15.7\n* `DarwinVersion`: Darwin version that is compatible with the current OS version\n  * eg. 19.6.0\n\n```hcl\nlocals {\n  source_vm_name = \"anka-packer-base-11.2-16.4.06\"\n}\n\nsource \"veertu-anka-vm-clone\" \"anka-macos-from-source\" {\n  \"source_vm_name\": \"${local.source_vm_name}\",\n  \"vm_name\": \"anka-macos-from-source\"\n}\n\nbuild {\n  sources = [\n    \"source.veertu-anka-vm-clone.anka-macos-from-source\"\n  ]\n\n  provisioner \"shell\" {\n    inline = [\n      \"echo vm_name is ${build.VMName}\",\n      \"echo os_version is ${build.OSVersion}\",\n      \"echo darwin_version is ${build.DarwinVersion}\"\n    ]\n  }\n}\n```\n\n---\n\n## Development\n\nYou will need a recent golang installed and setup. See `go.mod` for which version is expected.\n\nWe use [gomock](https://github.com/golang/mock) to quickly and reliably mock our interfaces for testing. This allows us to easily test when we expect logic to be called without having to rewrite golang standard library functions with custom mock logic. To generate one of these mocked interfaces, installed the mockgen binary by following the link provided and then run the `make go.test`.\n\n- You must install `packer-sdc` to generate docs and HCL2spec.\n\n### Run the plugin locally\n\n```bash\ngo run -ldflags=\"-X main.version=$(cat VERSION) -X main.commit=$(git rev-parse HEAD)\" main.go\n```\n\n### Building, Linting, and Testing\n\n```bash\nmake all \u0026\u0026 make install\n```\n\n\u003c!-- We recommend using goreleaser to perform all of the building, linting, and testing:\n\n```bash\nPACKER_CI_PROJECT_API_VERSION=$(go run . describe 2\u003e/dev/null | jq -r '.api_version') goreleaser build --single-target --snapshot --clean\n``` --\u003e\n\nWhen testing with an example HCL:\n\n```bash\nANKA_LOG_LEVEL=debug ANKA_DELETE_LOGS=0 PACKER_LOG=1 packer build examples/create-from-installer.pkr.hcl\n```\n\nTo test the post processor you will need an active vpn connection that can reach an anka registry. You can setup an anka registry by either adding the registry locally with:\n\n```bash\nanka registry add \u003cregistry_name\u003e \u003cregistry_url\u003e\n```\n\n-or-\n\nYou can setup the `create-from-installer-with-post-processing.pkr.hcl` with the correct registry values and update the make target `anka.test` to use that .pkr.hcl file and run:\n\n```bash\nmake create-test\n```\n\n[Packer Builder]: https://www.packer.io/docs/extending/custom-builders.html\n[Veertu Anka]: https://veertu.com/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fveertuinc%2Fpacker-plugin-veertu-anka","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fveertuinc%2Fpacker-plugin-veertu-anka","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fveertuinc%2Fpacker-plugin-veertu-anka/lists"}