заведён реестр префиксов, правила канона перенумерованы
- идентификатор правила теперь `<ПРЕФИКС>-<номер>` вместо `R<номер>`: префикс уникален по всему канону, поэтому ссылка больше не требует пути к файлу и не зависит от того, на какой оси файл лежит - префикс выбирается под файл, а не выводится по формуле, и хранится в conventions/prefixes.toml вместе с выбывшими; номера сохранены один в один вместе с дырами
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
---
|
||||
prefix: ANSD
|
||||
extends: arch/app-directories.md
|
||||
---
|
||||
|
||||
@@ -15,7 +16,7 @@ extends: arch/app-directories.md
|
||||
|
||||
## Правила
|
||||
|
||||
### R1. Каждая директория объявлена переменной `*_dir`
|
||||
### ANSD-1. Каждая директория объявлена переменной `*_dir`
|
||||
|
||||
**ДОЛЖЕН.** Директория приложения объявляется переменной плейбука внутри
|
||||
`base_dir`, имя оканчивается на `_dir`. Для случая «одна директория на
|
||||
@@ -24,11 +25,11 @@ extends: arch/app-directories.md
|
||||
`uploads_dir`, `dumps_dir`).
|
||||
|
||||
**Почему.** Переменная — единственная ссылка, которую разделяют задача
|
||||
создания директории и список бэкапа (R4). Литерал пути в одном из этих мест
|
||||
создания директории и список бэкапа (ANSD-4). Литерал пути в одном из этих мест
|
||||
означает, что переименование директории молча разойдётся с бэкапом, и
|
||||
обнаружится это при восстановлении.
|
||||
|
||||
### R2. Директории создаются одной задачей циклом по списку
|
||||
### ANSD-2. Директории создаются одной задачей циклом по списку
|
||||
|
||||
**СЛЕДУЕТ.** Список директорий в единственной задаче создания.
|
||||
|
||||
@@ -38,7 +39,7 @@ extends: arch/app-directories.md
|
||||
всего плейбука, а именно этот вопрос задают при заведении бэкапа и при
|
||||
разборе места на диске.
|
||||
|
||||
### R3. Владелец директорий — пользователь, от имени которого работает приложение
|
||||
### ANSD-3. Владелец директорий — пользователь, от имени которого работает приложение
|
||||
|
||||
**ДОЛЖЕН.** Конкретная модель — выделенный пользователь на приложение
|
||||
(`app_owner_uid == app_owner_gid`) или общий `primary_user` — выбирается на
|
||||
@@ -55,18 +56,18 @@ extends: arch/app-directories.md
|
||||
<!-- local:модель-владельца -->
|
||||
<!-- /local -->
|
||||
|
||||
### R4. Список бэкапа собирается из тех же переменных
|
||||
### ANSD-4. Список бэкапа собирается из тех же переменных
|
||||
|
||||
**ДОЛЖЕН.** Плейбук кладёт в `base_dir` файл `backup-targets`, строки
|
||||
которого ссылаются на переменные `*_dir` из R1, а не на литеральные пути.
|
||||
которого ссылаются на переменные `*_dir` из ANSD-1, а не на литеральные пути.
|
||||
|
||||
**Почему.** Правило вывода списка механическое (R5), но применяет его
|
||||
**Почему.** Правило вывода списка механическое (ANSD-5), но применяет его
|
||||
человек или шаблон — то есть ошибиться можно. Общая переменная делает целый
|
||||
класс ошибок невозможным: переименовал директорию — переименовалось в
|
||||
обоих местах. Независимо набранный список расходится тихо и проявляется в
|
||||
единственный момент, когда это уже неисправимо.
|
||||
|
||||
### R5. В список бэкапа идут только данные
|
||||
### ANSD-5. В список бэкапа идут только данные
|
||||
|
||||
**ДОЛЖЕН.** Директории категории «данные», включая директорию дампов, — в
|
||||
списке; конфигурация и кеш — нет.
|
||||
@@ -75,7 +76,7 @@ extends: arch/app-directories.md
|
||||
пользы, а конфигурация содержит отрендеренные секреты — бэкап уезжает в
|
||||
облако, и источником истины для секретов остаётся vault, а не снапшот.
|
||||
|
||||
### R6. Конфигурация монтируется только на чтение
|
||||
### ANSD-6. Конфигурация монтируется только на чтение
|
||||
|
||||
**СЛЕДУЕТ.** В compose конфигурация подключается с `:ro`.
|
||||
|
||||
@@ -85,7 +86,7 @@ extends: arch/app-directories.md
|
||||
незаметно. Приложение, которому запись в конфиг нужна по устройству,
|
||||
монтируется на запись — это отступление, и оно записывается.
|
||||
|
||||
### R7. `docker-compose.yml` лежит в корне `base_dir`
|
||||
### ANSD-7. `docker-compose.yml` лежит в корне `base_dir`
|
||||
|
||||
**ДОЛЖЕН.** Файл не переносится во вложенную директорию.
|
||||
|
||||
@@ -94,7 +95,7 @@ extends: arch/app-directories.md
|
||||
порядок» и убрать compose в `config/`, где ему по смыслу категорий было бы
|
||||
место.
|
||||
|
||||
### R8. Секреты рендерятся в файл конфигурации
|
||||
### ANSD-8. Секреты рендерятся в файл конфигурации
|
||||
|
||||
**СЛЕДУЕТ.** Значения приходят из vault-переменных и попадают в файл,
|
||||
принадлежащий пользователю приложения.
|
||||
@@ -104,14 +105,14 @@ extends: arch/app-directories.md
|
||||
довода, по которым базовая конвенция конфигурации выбирает файл вместо
|
||||
окружения.
|
||||
|
||||
### R9. Когда приложение не умеет файловые секреты — `environment` под `no_log`
|
||||
### ANSD-9. Когда приложение не умеет файловые секреты — `environment` под `no_log`
|
||||
|
||||
**ДОПУСКАЕТСЯ.** Задача рендера идёт с `no_log: true`.
|
||||
|
||||
**Почему.** Явное разрешение нужно, чтобы R8 не читался как запрет на
|
||||
**Почему.** Явное разрешение нужно, чтобы ANSD-8 не читался как запрет на
|
||||
деплой такого приложения. Способ вынужденный: секрет попадает в метаданные
|
||||
контейнера и в compose-файл на диске. Приложение, научившееся читать
|
||||
секреты из файла, переводится на R8 при ближайшем касании.
|
||||
секреты из файла, переводится на ANSD-8 при ближайшем касании.
|
||||
|
||||
<!-- local:отступления -->
|
||||
<!-- /local -->
|
||||
|
||||
Reference in New Issue
Block a user