Files
pet-project-server/roles/owner/README.md
T
av 856bf72560 owner: роль причёсана под конвенции eget и secrets
- валидация аргументов через assert вместо пары fail с одинаковым именем
- with_items/with_dict заменены на loop, имена задач без точки на конце
- добавлены meta/main.yml и README с таблицей переменных
- задача ansible-owner-role-cleanup удалена из беклога
2026-08-22 19:27:33 +03:00

53 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# owner
Заводит системного пользователя и группу под одно приложение: фиксированные
uid/gid, ssh-ключи и переменные окружения в `~/.env`.
Один сервис — один пользователь: контейнеры приложения работают от его uid/gid,
и файлы в `base_dir` принадлежат ему же. Роль вызывается первой задачей почти
каждого `playbook-<app>.yml`.
## Что делает
1. **Группа и пользователь.** Создаёт группу `owner_group` с `owner_gid` и
пользователя `owner_name` с `owner_uid` и шеллом `/bin/bash`. Номера задаёт
плейбук приложения (соглашение по нумерации — в `AGENTS.md`).
2. **SSH-ключи.** Прописывает `owner_ssh_keys` в `authorized_keys`.
3. **Переменные окружения.** Рендерит `~/.env` из `owner_env` плюс `USER_UID` и
`USER_GID` — их подставляют docker-compose шаблоны приложений. В `.bashrc`
добавляет строку, подгружающую `~/.env` целиком, и вычищает старые построчные
`export`-ы, оставшиеся от прежней схемы.
## Результат для плейбука
Роль регистрирует `owner_create_result` — результат модуля `user`. Плейбуки и
compose-шаблоны берут оттуда `owner_create_result.uid` и
`owner_create_result.group` (это gid) для `user:` в docker-compose.
## Переменные
Полный список и значения по умолчанию — в `defaults/main.yml`.
| Переменная | Обязательная | Описание |
| --------------------- | ------------ | --------------------------------------------------- |
| `owner_name` | да | Имя пользователя; по умолчанию оно же имя группы |
| `owner_uid` | да | Uid пользователя |
| `owner_group` | нет | Имя группы, по умолчанию `owner_name` |
| `owner_gid` | нет | Gid группы, по умолчанию `owner_uid` |
| `owner_extra_groups` | нет | Дополнительные группы (обычно `["docker"]`) |
| `owner_ssh_keys` | нет | Список публичных ключей для `authorized_keys` |
| `owner_env` | нет | Словарь переменных окружения, попадающих в `~/.env` |
## Пример использования
```yaml
- name: "Create user and environment"
ansible.builtin.import_role:
name: owner
vars:
owner_name: "{{ app_user }}"
owner_uid: "{{ app_owner_uid }}"
owner_gid: "{{ app_owner_gid }}"
owner_extra_groups: ["docker"]
```