diff --git a/docs/adr/0009-world-control.md b/docs/adr/0009-world-control.md index 9326749..b3092a5 100644 --- a/docs/adr/0009-world-control.md +++ b/docs/adr/0009-world-control.md @@ -89,8 +89,9 @@ пропущенный не найдётся никогда. **Плата — сокет докера внутри Airflow.** Доступ к нему равен праву root на -машине, и пользователю `airflow` он открывается через GID группы `docker`, -который у каждой машины свой. Для локального учебного стенда размен принят — +машине, и пользователю `airflow` он открывается добавлением GID группы `docker` +в контейнер. GID у каждой машины свой, поэтому он — локальная настройка и живёт +в `.env` рядом с остальными такими, а не в описании стенда. Для локального учебного стенда размен принят — тот же, что уже принят для пароля в trace-журнале пробника, — но плата называется вслух и в README. Вторая плата мелкая: пока стенд живёт, из четырёх слотов `parallelism` заняты два, ждущий выключатель и работающий контейнер. @@ -149,9 +150,12 @@ `auto_remove` и `skip_on_exit_code`. - Образ `apache/airflow:3.3.0` несёт Python 3.13.14 (замер запуском образа); генератор требует `>=3.14,<3.15`. +- Сокет докера на машине стенда — `root:docker` с правами `660`, GID группы 127; + пользователь образа Airflow — `uid=50000(airflow) gid=0(root)`, в группе + `docker` его нет. Значит доступ открывается добавлением GID в контейнер, а + правка прав на хосте не нужна. -Осталось проверить при исполнении, и это работа тикета: пустит ли пользователь -`airflow` к сокету докера без правки прав на машине; какая версия провайдера +Осталось проверить при исполнении, и это работа тикета: какая версия провайдера `apache-airflow-providers-docker` встаёт к 3.3.0; что имя сети стенда (`${COMPOSE_PROJECT_NAME}_default`) достаётся дагу без ручной подстановки; что триггер доходит и дочерний прогон виден из выключателя; что два запуска подряд