From d3be7318c2b060293cb8c266fd3066eea3997b33 Mon Sep 17 00:00:00 2001 From: Dmitry Dementiev Date: Thu, 13 Aug 2026 12:27:42 +0300 Subject: [PATCH] =?UTF-8?q?docs(adr):=20=D0=B4=D0=BE=D1=81=D1=82=D1=83?= =?UTF-8?q?=D0=BF=20=D0=BA=20=D1=81=D0=BE=D0=BA=D0=B5=D1=82=D1=83=20=D1=81?= =?UTF-8?q?=D0=BD=D1=8F=D1=82=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=80=D0=BE=D0=BC?= =?UTF-8?q?,=20=D0=B0=20=D0=BD=D0=B5=20=D0=BE=D1=81=D1=82=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=B2=D0=BE=D0=BF=D1=80=D0=BE=D1=81=D0=BE?= =?UTF-8?q?=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Зачем: доступ пользователя airflow к сокету докера был главным бытовым риском пульта — с него началась бы работа над #79. Что: замер записан в «Что проверено» — сокет root:docker с правами 660, GID 127, пользователь образа uid 50000 с группой 0. Отсюда следствие в плате: доступ открывается добавлением GID в контейнер, правка прав на хосте не нужна, а сам GID — локальная настройка и живёт в .env. Проверка: make config-test зелёный. Co-Authored-By: Claude Opus 5 --- docs/adr/0009-world-control.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) 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`) достаётся дагу без ручной подстановки; что триггер доходит и дочерний прогон виден из выключателя; что два запуска подряд