{"id":19647873,"url":"https://github.com/nl2go/ansible-role-hetzner-key","last_synced_at":"2026-04-30T11:36:05.012Z","repository":{"id":101457659,"uuid":"228377164","full_name":"nl2go/ansible-role-hetzner-key","owner":"nl2go","description":"An Ansible Role that manages Hetzner Robot Keys","archived":false,"fork":false,"pushed_at":"2020-02-13T07:25:52.000Z","size":48,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-27T00:41:33.560Z","etag":null,"topics":["ansible","ansible-role","hetzner","hetzner-robot-api","molecule"],"latest_commit_sha":null,"homepage":"","language":"Python","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/nl2go.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2019-12-16T11:58:29.000Z","updated_at":"2024-04-05T14:24:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"ee12eaea-bfd4-47d1-b822-22778461b198","html_url":"https://github.com/nl2go/ansible-role-hetzner-key","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/nl2go/ansible-role-hetzner-key","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nl2go%2Fansible-role-hetzner-key","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nl2go%2Fansible-role-hetzner-key/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nl2go%2Fansible-role-hetzner-key/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nl2go%2Fansible-role-hetzner-key/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nl2go","download_url":"https://codeload.github.com/nl2go/ansible-role-hetzner-key/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nl2go%2Fansible-role-hetzner-key/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32463892,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"online","status_checked_at":"2026-04-30T02:00:05.929Z","response_time":57,"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":["ansible","ansible-role","hetzner","hetzner-robot-api","molecule"],"created_at":"2024-11-11T14:46:17.606Z","updated_at":"2026-04-30T11:36:04.996Z","avatar_url":"https://github.com/nl2go.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Travis (.org) branch](https://img.shields.io/travis/nl2go/ansible-role-hetzner-key/master)](https://travis-ci.org/nl2go/ansible-role-hetzner-key)\n[![Codecov](https://img.shields.io/codecov/c/github/nl2go/ansible-role-hetzner-key)](https://codecov.io/gh/nl2go/ansible-role-hetzner-key)\n[![Ansible Galaxy](https://img.shields.io/badge/role-nl2go.hetzner_key-blue.svg)](https://galaxy.ansible.com/nl2go/hetzner_key/)\n[![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/nl2go/ansible-role-hetzner-key)](https://galaxy.ansible.com/nl2go/hetzner_key)\n[![Ansible Galaxy Downloads](https://img.shields.io/ansible/role/d/45353.svg?color=blue)](https://galaxy.ansible.com/nl2go/hetzner_key/)\n\n# Ansible Role: Hetzner Key\n\nAn Ansible Role that manages [Hetzner Robot Keys](https://robot.your-server.de/key/index).\n\n## Prerequisites\n\n- Existing [Hetzner Online GmbH Account](https://accounts.hetzner.com).\n- Configured [Hetzner Robot Webservice Account](https://robot.your-server.de/preferences).\n\n## Requirements\n\n| Name | Type | Version | Location |\n|---|---|---|---|\n| [ansible-filter](https://github.com/nl2go/ansible-filter) | Python package | 1.0.1 | Control node |\n\n## Role Variables\n\nAvailable variables are listed below, along with default values (see `defaults/main.yml`):\n\n    hetzner_key_webservice_base_url: https://robot-ws.your-server.de\n \nBase url that is pointing to the [Hetzner Robot API](https://robot.your-server.de/doc/webservice/de.html). The variable is mostly utilized for testing purposes, there\nis no need to change the default.\n\n    hetzner_key_webservice_username: robot\n    \nWebservice login name. May be set/changed as described in the section [Change Access Data (Hetzner Wiki)](https://wiki.hetzner.de/index.php/KonsoleH:Zugangsdaten_aendern/en).\n\n    hetzner_key_webservice_password: secret\n    \nWebservice password. May be set/changed as described in the section [Change Access Data (Hetzner Wiki)](https://wiki.hetzner.de/index.php/KonsoleH:Zugangsdaten_aendern/en).\n\n    hetzner_key_instances:\n      - name: New Key\n        data: \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSkT3A1j89RT/540ghIMHXIVwNlAEM3WtmqVG7YN/wYwtsJ8iCszg4/lXQsfLFx\\\n        YmEVe8L9atgtMGCi5QdYPl4X/c+5YxFfm88Yjfx+2xEgUdOr864eaI22yaNMQ0AlyilmK+PcSyxKP4dzkf6B5Nsw8lhfB5n9F5md6GHLLjOG\\\n        uBbHYlesKJKnt2cMzzS90BdRk73qW6wJ+MCUWo+cyBFZVGOzrjJGEcHewOCbVs+IJWBFSi6w1enbKGc+RY9KrnzeDKWWqzYnNofiHGVFAuMx\\\n        rmZOasqlTIKiC2UK3RmLxZicWiQmPnpnjJRo7pL0oYM9r/sIWzD6i2S9szDy6aZ\"\n        \nKeys may be managed by Ansible specifying them within `hetzner_key_instances` variable. Keys are referenced by the `name` attribute.\nExisting keys stored in the [Hetzner Robot Key Management](https://robot.your-server.de/key/index) having different names will not be\nupdated nor removed. All keys from the [Hetzner Robot Key Management](https://robot.your-server.de/key/index) will be \nprovisioned on the target hosts.\n\n    hetzner_key_instances:\n      - name: New Key\n        data: \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSkT3A1j89RT/540ghIMHXIVwNlAEM3WtmqVG7YN/wYwtsJ8iCszg4/lXQsfLFx\\\n        YmEVe8L9atgtMGCi5QdYPl4X/c+5YxFfm88Yjfx+2xEgUdOr864eaI22yaNMQ0AlyilmK+PcSyxKP4dzkf6B5Nsw8lhfB5n9F5md6GHLLjOG\\\n        uBbHYlesKJKnt2cMzzS90BdRk73qW6wJ+MCUWo+cyBFZVGOzrjJGEcHewOCbVs+IJWBFSi6w1enbKGc+RY9KrnzeDKWWqzYnNofiHGVFAuMx\\\n        rmZOasqlTIKiC2UK3RmLxZicWiQmPnpnjJRo7pL0oYM9r/sIWzD6i2S9szDy6aZ\"\n        state: absent\n        \nAdd `state: absent` to remove the key from [Hetzner Robot Key Management](https://robot.your-server.de/key/index) and\nthe target hosts.\n\n    hetzner_key_webservice_concurrent_requests: 1\n    hetzner_key_webservice_concurrent_poll: 1\n\nTo speed up the role execution while handling the configuration for multiple keys, the number of parallel requests made to the Hetzner Robot API\ncan be controlled by `hetzner_key_webservice_concurrent_requests` variable. The poll interval for asynchronous request\nresult processing is set using `hetzner_key_webservice_concurrent_poll`. Check official documentation on\n[Asynchronous Actions and Polling](https://docs.ansible.com/ansible/latest/user_guide/playbooks_async.html) for more explanation. \n\n## Tags\n\nTags can be used to limit the role execution to a particular task module. Following tags are available:\n\n- `hetzner_key`,`config`: Covers the full role lifecycle.\n- `hetzner_key_key`: Manages access keys within [Hetzner Robot Key Management](https://robot.your-server.de/key/index).\n- `hetzner_key_host`: Configures access keys on the target hosts.\n\n## Dependencies\n\nNone.\n\n## Example Playbook\n\nSince the role is managing the communication with the [Hetzner Robot API](https://robot.your-server.de/doc/webservice/de.html)\nonly, it may be run on localhost.\n\n    - hosts: all\n      roles:\n         - nl2go.hetzner_key\n              \n## Development\nUse [docker-molecule](https://github.com/nl2go/docker-molecule) following the instructions to run [Molecule](https://molecule.readthedocs.io/en/stable/)\nor install [Molecule](https://molecule.readthedocs.io/en/stable/) locally (not recommended, version conflicts might appear).\n\n\nUse following to run tests:\n\n    molecule test --all\n       \nThis role relies on [hetzner-robot-api-mock](https://github.com/nl2go/hetzner-robot-api-mock) to simulate interactions with\nthe [Hetzner Robot API](https://robot.your-server.de/doc/webservice/de.html).\n\n## Maintainers\n\n- [build-failure](https://github.com/build-failure)\n\n## License\n\nSee the [LICENSE.md](LICENSE.md) file for details.\n\n## Author Information\n\nThis role was created by in 2019 by [Newsletter2Go GmbH](https://www.newsletter2go.com/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnl2go%2Fansible-role-hetzner-key","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnl2go%2Fansible-role-hetzner-key","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnl2go%2Fansible-role-hetzner-key/lists"}