{"id":15357421,"url":"https://github.com/thorio/rolr","last_synced_at":"2026-02-17T05:02:41.795Z","repository":{"id":186391479,"uuid":"674748832","full_name":"thorio/rolr","owner":"thorio","description":"Host role manager built on top of ansible","archived":false,"fork":false,"pushed_at":"2025-02-13T21:44:10.000Z","size":993,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2025-12-08T01:40:46.932Z","etag":null,"topics":["ansible","automation","command-line-tool","infrastructure-as-code","linux","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/thorio.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}},"created_at":"2023-08-04T17:11:50.000Z","updated_at":"2025-02-13T21:44:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"a844f82f-b7e4-48bf-8284-57ff20b954a5","html_url":"https://github.com/thorio/rolr","commit_stats":null,"previous_names":["thorio/rolr"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/thorio/rolr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thorio%2Frolr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thorio%2Frolr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thorio%2Frolr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thorio%2Frolr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thorio","download_url":"https://codeload.github.com/thorio/rolr/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thorio%2Frolr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29534471,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T05:00:25.817Z","status":"ssl_error","status_checked_at":"2026-02-17T04:57:16.126Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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","automation","command-line-tool","infrastructure-as-code","linux","rust"],"created_at":"2024-10-01T12:34:59.392Z","updated_at":"2026-02-17T05:02:41.776Z","avatar_url":"https://github.com/thorio.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rolr\n\n![GitHub License](https://img.shields.io/github/license/thorio/rolr?style=flat-square)\n![GitHub last commit](https://img.shields.io/github/last-commit/thorio/rolr?style=flat-square)\n[![AUR Version](https://img.shields.io/aur/version/rolr-bin?style=flat-square)](https://aur.archlinux.org/packages/rolr-bin)\n\n[![Demonstration](https://asciinema.org/a/xsIQnFL5oPSsyvB74qzsP0g56.svg)](https://asciinema.org/a/xsIQnFL5oPSsyvB74qzsP0g56)\n\nrolr is a convenience tool to manage your local host with ansible. You define roles as ansible playbooks, then select the roles you want on a given system. Commit your config to a dotfiles repository and you have an automatic solution for setting up and keeping your various systems up to date.  \nSee this excellent [Youtube video][video] by Jeff Geerling to find out why you want this. Though the video primarily focuses on MacOS, the concept works on Linux just as well.\n\nThe author uses this in conjunction with a dotfiles repo and a [few bootstrapping scripts][bootstrapper] to manage various servers, desktops, laptops and WSL installations on multiple distros, keeping their configuration in sync.\n\nThis project is considered feature-complete.\n\n[video]: https://www.youtube.com/watch?v=1VhPVu5EK5o\n[bootstrapper]: https://github.com/thorio/thorio.github.io\n\n\n## Features\n\n- Simple, local architecture-as-code\n- Powered by ansible\n- Simple CLI for picking roles to install\n- Write idempotent playbooks to keep your systems in sync\n\n\n# Installation\n\nBinaries are available for the following platforms:\n| Platform | x86-64 |  | aarch64 |\n| --- | --- | --- | --- |\n| Arch | [Package][arch-pkg] | [AUR][arch-aur] | | |\n| Debian | [Package][debian-deb-x86] | | [Package][debian-deb-arm] |\n| Linux | [Binaries][linux-tar-x86] | | [Binaries][linux-tar-arm] |\n\nNote: The executable is fully statically linked and should therefore run basically anywhere, provided the architecture matches. Just unpack and go!\n\n[arch-pkg]: https://github.com/thorio/rolr/releases/latest/download/rolr-x86_64.pkg.tar.zst\n[arch-aur]: https://aur.archlinux.org/packages/rolr-bin\n[debian-deb-x86]: https://github.com/thorio/rolr/releases/latest/download/rolr-x86_64.deb\n[debian-deb-arm]: https://github.com/thorio/rolr/releases/latest/download/rolr-x86_64.deb\n[linux-tar-x86]: https://github.com/thorio/rolr/releases/latest/download/rolr-x86_64.tar.gz\n[linux-tar-arm]: https://github.com/thorio/rolr/releases/latest/download/rolr-aarch64.tar.gz\n\n\n### Usage\nPlace ansible playbooks in `~/.config/rolr/roles`, separated by archicture and distro, e.g. `x86_64/ubuntu/10-base.yml`.  \nrolr will only use playbooks from the matching arch+distro folder, so you can tailor playbooks to the systems they'll be running on.\n\nNow run `rolr list` to view your roles, and `rolr add ROLE` to add them to the current system. Added roles can be re-run with `rolr update`.\n\nAlso see `rolr --help`.\n\n\n### Tips\n\n- Write idempotent playbooks to ensure updates work as expected. To quote [ansible's documentation][idempotency]:\n  \u003e An operation is idempotent if the result of performing it once is exactly the same as the result of performing it repeatedly without any intervening actions.\n\n- Run `rolr select` to quickly view and add roles in a TUI menu.\n\n- Run individual roles quickly with `rolr run ROLE`. This will only run that role, without adding to the list of active roles.\n\n- Place an ansible config file in `~/.config/rolr/ansible.cfg` with these contents to quiet ansible down a bit:\n  ```ini\n  [defaults]\n  display_skipped_hosts = false\n  display_ok_hosts = false\n  ```\n\n- Playbooks will be run in alphanumerical order, use numbered prefixes to control this.\n  If a role's name occurs multiple times, all instances will be run. Use this to split roles into multiple chunks and control the timing of their execution.\n\n- A comment on the first line of the playbook will be interpreted as the description.\n\n- Use symlinks for playbook re-use across distros and architectures.\n\n- [Store your dotfiles in a bare git repo][dotfiles] to easily share and synchronize them across all your systems.  \n  Do not commit `active.txt` and `playbook.yml`, as they are generated files.\n\n[idempotency]: https://docs.ansible.com/ansible/latest/reference_appendices/glossary.html#term-Idempotency\n[dotfiles]: https://harfangk.github.io/2016/09/18/manage-dotfiles-with-a-git-bare-repository.html\n\n\n# Development\n\nUsing the devcontainer is highly encouraged to get up and running ASAP, otherwise:\n\n- [Install Rust][rustup]\n- Use [normal cargo commands][cargo] for development (`cargo build`, `cargo run`), use [`cargo-make`][cargo-make] for packaging.\n\n[rustup]: https://www.rust-lang.org/tools/install\n[cargo]: https://doc.rust-lang.org/cargo/\n[cargo-make]: https://github.com/sagiegurari/cargo-make\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthorio%2Frolr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthorio%2Frolr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthorio%2Frolr/lists"}