A simple web application, to mimic the v3 API endpoints for Ansible Galaxy Collections, with no database, just a directory with artifacts
go install github.com/sivel/amanda@latest(You can use theGOBINenv variable to install to a custom location). Binary artifacts can also be found for a variety of OSes and architectures at https://sivel.github.io/amanda/Create a directory to hold the artifacts, which by default is named
artifactsand lives in the current working directoryDrop
ansible-galaxy collection build/downloadartifacts in theartifactsdirectoryRun the app:
./amanda -artifacts=/path/to/artifactsInstall collections:
ansible-galaxy collection install -s http://hostname:5000/api namespace.collection
docker run --rm -d -p 5000:5000 -v /path/to/artifacts:/artifacts ghcr.io/sivel/amanda:latestamanda now includes a basic HTML UI, disabled by default, that can be enabled using the -ui flag, accessible by default at http://hostname:5000/
./amanda -uiIf you want to be able to use ansible-galaxy collection publish you can enable the functionality in amanda with -publish.
./amanda -publishThis application does not and will not handle any form of authentication or role based access controls; If you enable publishing it is highly recommended to use a reverse proxy that has authentication functionality that you can place in front of amanda to prevent unauthorized uploads.
Publishing does not support the ability to upload a signature.
Alongside the .tar.gz artifact for a collection, create a file with the same base name and a .asc extension.
A quick example on creating and verifying the signature:
cd collections/ansible_collections/namespace/nameansible-galaxy collection buildtar -Oxzf namespace-name-1.0.0.tar.gz MANIFEST.json | gpg \ --output namespace-name-1.0.0.asc --detach-sign --armor \ --local-user email@example.org -tar -Oxzf namespace-name-1.0.0.tar.gz MANIFEST.json | gpg \ --verify namespace-name-1.0.0.asc -