aceb5295efmoved Cosmos, Quick Setup and Credits out of the committed role READMEs and into the documentation build's own scratch checkout, so a committed copy can no longer go stale when the metadata moves. Merging feature/designer (ebad39422c) took origin/main's side of those files, which still carries them, and reinstated all 290 along with the cosmos make target and its i8cos alias. tests/lint/ansible/roles/test_readme.py hard-fails on a committed copy, and the reinstated Credits block credited one person with two URLs, which tripped the credits-attribution lint as well. Stripped with the repository's own fence-aware parser against MANAGED_SECTIONS, not with a line filter: the Cosmos block holds a mermaid fence a naive filter would cut through. The result is byte-identical toaceb5295effor every README that carries no prose change since. The cosmos target wrote the forbidden section straight back into the checkout, so it goes with them. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1.5 KiB
User
Description
This role configures a basic user environment (shell dotfiles and SSH authorized_keys)
for a user selected via user_key.
Overview
This role executes common tasks for user environment configuration.
Features
- Automated provisioning: Configured by Ansible without manual steps.
Reserved usernames
meta/users.yml lists the usernames that MUST NOT be registered in the identity
directory. An entry is marked reserved by carrying accounts: []; consumers read
the set through the reserved_usernames filter.
One further reservation per label of DOMAIN_PRIMARY is generated at runtime and
keyed domain_label_<n>. A deployment on label-a.tld.test therefore reserves
label-a, tld and test, at any domain depth.
User data resolution
User data is resolved via lookup('users', user_key) and referenced via user_key.
Callers may pass user_config to override the resolved lookup result for one invocation.
Resolution rules:
user_usernameis resolved fromlookup('users', user_key).username(fallback:user_key)- Home path and ownership are based on
user_username - SSH keys are read from
lookup('users', user_key).authorized_keys
Required input
user_key
Optional user fields
lookup('users', user_key).username(defaults touser_key)lookup('users', user_key).authorized_keys(list; may be empty)- optional include-role var
user_configto override the lookup result for the current call