{"id":23030082,"url":"https://github.com/briantist/galactory","last_synced_at":"2025-08-14T13:30:46.534Z","repository":{"id":37018734,"uuid":"499338416","full_name":"briantist/galactory","owner":"briantist","description":"An Ansible Galaxy proxy for Artifactory","archived":false,"fork":false,"pushed_at":"2024-02-27T22:19:25.000Z","size":226,"stargazers_count":33,"open_issues_count":31,"forks_count":7,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-11-20T20:47:56.674Z","etag":null,"topics":["ansible","ansible-galaxy","ansible-galaxy-collections","artifactory","hacktoberfest"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/briantist.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.rst","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}},"created_at":"2022-06-03T01:02:01.000Z","updated_at":"2024-05-28T05:18:17.000Z","dependencies_parsed_at":"2023-09-29T00:22:22.880Z","dependency_job_id":"df41f05d-1721-4a80-9da8-caae702d9b95","html_url":"https://github.com/briantist/galactory","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/briantist%2Fgalactory","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/briantist%2Fgalactory/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/briantist%2Fgalactory/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/briantist%2Fgalactory/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/briantist","download_url":"https://codeload.github.com/briantist/galactory/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229827805,"owners_count":18130431,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["ansible","ansible-galaxy","ansible-galaxy-collections","artifactory","hacktoberfest"],"created_at":"2024-12-15T14:19:26.565Z","updated_at":"2024-12-15T14:19:27.082Z","avatar_url":"https://github.com/briantist.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Test](https://github.com/briantist/galactory/actions/workflows/test.yml/badge.svg)](https://github.com/briantist/galactory/actions/workflows/test.yml) [![codecov](https://codecov.io/gh/briantist/galactory/branch/main/graph/badge.svg?token=5ZS2WXM4K9)](https://codecov.io/gh/briantist/galactory)\n\n# galactory\ngalactory is An Ansible Galaxy proxy for Artifactory.\n\nUsing an Artifactory Generic repository as its backend, galactory implements a limited subset of the Galaxy API (v2 \u0026 v3) to allow for installing and publishing collections.\n\nIt can also be set up to transparently proxy an upstream Galaxy server, storing the pulled artifacts in Artifactory, to be served as local artifacts from then on. This helps avoid throttling errors on busy CI systems, and allows for internal/private collections to declare dependencies on upstream collections (dependencies will only be installed from the same Galaxy server where a collection was installed from).\n\n# Acknowledgements\nThis project is _heavily_ inspired by [amanda](https://github.com/sivel/amanda/).\n\n# Artifactory compatibility\nAll features of galactory should work with the free-of-cost Artifactory OSS. Please report any usage that appears to require a Pro license.\n\n# How to use\nThere isn't any proper documentation yet. The help output is below.\n\nPulling out this bit about configuration for emphasis:\n\n\u003e Args that start with `--` (eg. `--listen-addr`) can also be set in a config file (`/etc/galactory.d/*.conf` or `~/.galactory/*.conf` or specified via `-c`). Config file syntax allows:\n\u003e - `key=value`\n\u003e - `flag=true`\n\u003e - `stuff=[a,b,c]`\n\u003e (for details, see `DefaultConfigFileParser` syntax at https://github.com/bw2/ConfigArgParse#config-file-syntax).\n\u003e\n\u003e If an arg is specified in more than one place, then commandline values override environment variables which override config file values which override defaults.\n\u003e\n\u003e `defaults \u003c config \u003c environment variables \u003c command line` (last one found wins)\n\n```text\nusage: python -m galactory [-h] [-c CONFIG] [--listen-addr LISTEN_ADDR]\n                           [--listen-port LISTEN_PORT] [--server-name SERVER_NAME]\n                           [--preferred-url-scheme PREFERRED_URL_SCHEME]\n                           --artifactory-path ARTIFACTORY_PATH\n                           [--artifactory-api-key ARTIFACTORY_API_KEY]\n                           [--artifactory-access-token ARTIFACTORY_ACCESS_TOKEN]\n                           [--use-galaxy-key] [--use-galaxy-auth]\n                           [--galaxy-auth-type {api_key,access_token}] [--prefer-configured-key]\n                           [--prefer-configured-auth] [--publish-skip-configured-key]\n                           [--publish-skip-configured-auth] [--log-file LOG_FILE]\n                           [--log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}] [--log-headers]\n                           [--log-body] [--proxy-upstream PROXY_UPSTREAM]\n                           [-npns NO_PROXY_NAMESPACE] [--cache-minutes CACHE_MINUTES]\n                           [--cache-read CACHE_READ] [--cache-write CACHE_WRITE]\n                           [--use-property-fallback]\n                           [--health-check-custom-text HEALTH_CHECK_CUSTOM_TEXT]\n                           [--api-version {v2,v3}] [--upload-format {base64,raw,auto}]\n\ngalactory is a partial Ansible Galaxy proxy that uploads and downloads collections, using an\nArtifactory generic repository as its backend.\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -c CONFIG, --config CONFIG\n                        The path to a config file. [env var: GALACTORY_CONFIG]\n  --listen-addr LISTEN_ADDR\n                        The IP address to listen on. [env var: GALACTORY_LISTEN_ADDR]\n  --listen-port LISTEN_PORT\n                        The TCP port to listen on. [env var: GALACTORY_LISTEN_PORT]\n  --server-name SERVER_NAME\n                        The host name and port of the server, as seen from clients. Used for\n                        generating links. [env var: GALACTORY_SERVER_NAME]\n  --preferred-url-scheme PREFERRED_URL_SCHEME\n                        Sets the preferred scheme to use when constructing URLs. Defaults to\n                        the request scheme, but is unaware of reverse proxies.\n                        [env var: GALACTORY_PREFERRED_URL_SCHEME]\n  --artifactory-path ARTIFACTORY_PATH\n                        The URL of the path in Artifactory where collections are stored.\n                        [env var: GALACTORY_ARTIFACTORY_PATH]\n  --artifactory-api-key ARTIFACTORY_API_KEY\n                        If set, is the API key used to access Artifactory. If set with artifactory-access-token, this\n                        value will not be used.\n                        [env var: GALACTORY_ARTIFACTORY_API_KEY]\n  --artifactory-access-token ARTIFACTORY_ACCESS_TOKEN\n                        If set, is the Access Token used to access Artifactory. If set with artifactory-api-key, this\n                        value will be used and the API key will be ignored.\n                        [env var: GALACTORY_ARTIFACTORY_ACCESS_TOKEN]\n  --use-galaxy-key      If set, uses the Galaxy token sent in the request as the Artifactory auth. DEPRECATED: This\n                        option will be removed in v0.11.0. Please use --use-galaxy-auth going forward.\n                        [env var: GALACTORY_USE_GALAXY_KEY]\n  --use-galaxy-auth     If set, uses the Galaxy token sent in the request as the Artifactory auth.\n                        [env var: GALACTORY_USE_GALAXY_AUTH]\n  --galaxy-auth-type {api_key,access_token}\n                        Auth received via a Galaxy request should be interpreted as this type of auth.\n                        [env var: GALACTORY_GALAXY_AUTH_TYPE]\n  --prefer-configured-key\n                        If set, prefer the confgured Artifactory auth over the Galaxy token.\n                        DEPRECATED: This option will be removed in v0.11.0.\n                        Please use --prefer-configured-auth going forward.\n                        [env var: GALACTORY_PREFER_CONFIGURED_KEY]\n  --prefer-configured-auth\n                        If set, prefer the confgured Artifactory auth over the Galaxy token.\n                        [env var: GALACTORY_PREFER_CONFIGURED_AUTH]\n  --publish-skip-configured-key\n                        If set, publish endpoint will not use configured auth, only auth included in a Galaxy\n                        request.\n                        DEPRECATED: This option will be removed in v0.11.0.\n                        Please use --publish-skip-configured-auth going forward.\n                        [env var: GALACTORY_PUBLISH_SKIP_CONFIGURED_KEY]\n  --publish-skip-configured-auth\n                        If set, publish endpoint will not use configured auth, only auth included in a Galaxy\n                        request.\n                        [env var: GALACTORY_PUBLISH_SKIP_CONFIGURED_AUTH]\n  --log-file LOG_FILE   If set, logging will go to this file instead of the console.\n                        [env var: GALACTORY_LOG_FILE]\n  --log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}\n                        The desired logging level. [env var: GALACTORY_LOG_LEVEL]\n  --log-headers         Log the headers of every request (DEBUG level only).\n                        [env var: GALACTORY_LOG_HEADERS]\n  --log-body            Log the body of every request (DEBUG level only).\n                        [env var: GALACTORY_LOG_BODY]\n  --proxy-upstream PROXY_UPSTREAM\n                        If set, then find, pull and cache results from the specified galaxy server\n                        in addition to local. [env var: GALACTORY_PROXY_UPSTREAM]\n  -npns NO_PROXY_NAMESPACE, --no-proxy-namespace NO_PROXY_NAMESPACE\n                        Requests for this namespace should never be proxied. Can be specified\n                        multiple times. [env var: GALACTORY_NO_PROXY_NAMESPACE]\n  --cache-minutes CACHE_MINUTES\n                        The time period that a cache entry should be considered valid.\n                        [env var: GALACTORY_CACHE_MINUTES]\n  --cache-read CACHE_READ\n                        Look for upsteam caches and use their values.\n                        [env var: GALACTORY_CACHE_READ]\n  --cache-write CACHE_WRITE\n                        Populate the upstream cache in Artifactory. Should be false when no auth is\n                        provided or the auth has no permission to write.\n                        [env var: GALACTORY_CACHE_WRITE]\n  --use-property-fallback\n                        Set properties of an uploaded collection in a separate request after publshinng.\n                        Requires a Pro license of Artifactory. This feature is a workaround for an\n                        Artifactory proxy configuration error and may be removed in a future version.\n                        [env var: GALACTORY_USE_PROPERTY_FALLBACK]\n  --health-check-custom-text HEALTH_CHECK_CUSTOM_TEXT\n                        Sets custom_text field for health check endpoint responses.\n                        [env var: GALACTORY_HEALTH_CHECK_CUSTOM_TEXT]\n  --api-version {v2,v3}\n                        The API versions to serve. Can be set to limit functionality to specific versions only.\n                        Defaults to all supported versions.\n                        [env var: GALACTORY_API_VERSION]\n  --upload-format {base64,raw,auto}\n                        Galaxy accepts the uploaded collection tarball as either raw bytes or base64 encoded.\n                        Ansible 2.9 uploads raw bytes, later versions upload base64. By default galactory will\n                        try to auto-detect. Use this option to turn off auto-detection and force a specific format.\n                        [env var: GALACTORY_UPLOAD_FORMAT]\n\nArgs that start with '--' (eg. --listen-addr) can also be set in a config file\n(/etc/galactory.d/*.conf or ~/.galactory/*.conf or specified via -c). Config file syntax allows:\nkey=value, flag=true, stuff=[a,b,c] (for details, see syntax at https://goo.gl/R74nmi). If an arg\nis specified in more than one place, then commandline values override environment variables which\noverride config file values which override defaults.\n```\n\n## Install\n```shell\npython3 -m pip install galactory\n```\n\n## Container\n\nLatest tagged release:\n```shell\ndocker run --rm ghcr.io/briantist/galactory:latest --help\n```\n\nLatest commit on `main`:\n```shell\ndocker run --rm ghcr.io/briantist/galactory:main --help\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbriantist%2Fgalactory","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbriantist%2Fgalactory","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbriantist%2Fgalactory/lists"}