{"id":20757397,"url":"https://github.com/hetznercloud/ansible-role-aptly","last_synced_at":"2025-04-29T11:57:36.344Z","repository":{"id":180959129,"uuid":"665952663","full_name":"hetznercloud/ansible-role-aptly","owner":"hetznercloud","description":"Ansible Role - Install and configure Aptly","archived":false,"fork":false,"pushed_at":"2025-03-07T08:20:09.000Z","size":57,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-29T11:57:30.734Z","etag":null,"topics":["ansible","ansible-galaxy","ansible-role","aptly","aptly-server","debian-packaging","hetzner"],"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/hetznercloud.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-13T11:18:22.000Z","updated_at":"2025-03-07T08:20:06.000Z","dependencies_parsed_at":"2023-12-18T14:33:14.807Z","dependency_job_id":"301a4ec9-cddc-41f1-8f68-63c040f676ff","html_url":"https://github.com/hetznercloud/ansible-role-aptly","commit_stats":null,"previous_names":["hetznercloud/ansible-role-aptly"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hetznercloud%2Fansible-role-aptly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hetznercloud%2Fansible-role-aptly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hetznercloud%2Fansible-role-aptly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hetznercloud%2Fansible-role-aptly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hetznercloud","download_url":"https://codeload.github.com/hetznercloud/ansible-role-aptly/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251498964,"owners_count":21598979,"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-role","aptly","aptly-server","debian-packaging","hetzner"],"created_at":"2024-11-17T09:42:00.457Z","updated_at":"2025-04-29T11:57:36.335Z","avatar_url":"https://github.com/hetznercloud.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ansible Role - Aptly\n\n[![CI](https://github.com/hetznercloud/ansible-role-aptly/workflows/CI/badge.svg?event=push)](https://github.com/hetznercloud/ansible-role-aptly/actions?query=workflow%3ACI)\n\nInstall and configure Aptly (The \"Swiss army knife for Debian repository management\") automatically via Ansible.\n\n## Requirements\n\n* A pre-generated GPG key for signing packages\n\n## Dependencies\n\n* `jmespath` (`pip3 install jmespath`)\n* `community.general.json_query` (for mirror state logic)\n\n## Role variables\n\n``` yaml\naptly__repo: 'squeeze'\n```\n\nThe repository has to be either `squeeze` or `nightly`.\n\n```yaml\n\naptly__user: 'aptly'\naptly__groups:\n  - 'www-data'\naptly__user_home_directory: '/srv/aptly'\naptly__user_shell: '/bin/bash'\n```\n\nBy default, the role will create a separate user using `/srv/aptly` as home directory for the whole aptly processing. The user must be a member of `www-data` if the data should be served via nginx or apache2. This can also be an empty list.\n\n``` yaml\naptly__become_method: ansible.builtin.su\n```\n\nAnsible needs to run some tasks using the aptly user (e.g. adding gpg keys). By default, the role will use the `su` method. Depending on the host configuration, this may need to be changed to the proper become plugin. For more information, please see the [Ansible docs](https://docs.ansible.com/ansible/latest/plugins/become.html#become-plugins).\n\n``` yaml\naptly__gpg_private_key: |\n  -----BEGIN PGP PRIVATE KEY BLOCK-----\n\n  .....................................\n  -----END PGP PRIVATE KEY BLOCK-----\naptly__gpg_public_key: |\n  -----BEGIN PGP PUBLIC KEY BLOCK-----\n\n  ....................................\n  -----END PGP PUBLIC KEY BLOCK-----\n\naptly__api_enable: true\naptly__apt_listen_address: \"127.0.0.1\"\naptly__api_listen_port: 9091\naptly__api_extra_arguments:\n  - \"-no-lock\"\n```\n\nBy default, the API of the aptly server will be enabled and started locally. The API will be required for mirrors as the update script uses the asynchronous scheduling feature which is only available via API.\n\n## Example config\n\n```yaml\n---\naptly__mirrors:\n  - name: ddebs-ubuntu-jammy\n    publish_prefix: ddebs\n    no_block_mirror_task: true\n    label: test\n    origin: asdf.movie\n    distribution: jammy # this needs to be set, no matter if childrens exist or not\n    childrens: # Either set it with childrens or not\n      - name: main\n        distribution: jammy\n        archive_url: \"http://ddebs.ubuntu.com\"\n        state: present\n        components:\n          - main\n        architectures:\n          - amd64\n          - arm64\n        keys:\n          - string: \"\"\n          - file: \"\"\n          - url: \"\"\n        filter: \"mysql-client (\u003e= 3.6)\"\n        filter_with_deps: true\n        ignore_signatures: false\n        with_sources: true\n        with_installer: false\n        with_udebs: false\n  - name: ceph-quincy-focal\n    publish_prefix: ceph-quincy\n    no_block_mirror_task: true\n    distribution: focal\n    archive_url: https://download.ceph.com\n    label: test\n    origin: asdf.movie\n    state: present\n    components:\n      - main\n    keys:\n      - url: \"\"\n\naptly__repositories:\n  - name: jammy\n    distribution: jammy\n    label: cloud_platform\n    state: present\n    components:\n      - main\n      - experimental\n    architectures:\n      - amd64\n      - arm64\n  - name: hetzner-ceph-jammy\n    distribution: jammy\n    label: cloud_platform\n    publish_prefix: hetzner-ceph\n    state: present\n    components:\n      - main\n      - experimental\n    architectures:\n      - amd64\n      - arm64\n```\n\n## Example playbook\n\n``` yaml\n---\n- hosts: all\n  roles:\n    - role: hetzner.aptly\n```\n\n## License\n\nGPL-3.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhetznercloud%2Fansible-role-aptly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhetznercloud%2Fansible-role-aptly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhetznercloud%2Fansible-role-aptly/lists"}