Files
clickstream-data-platform/infra/airflow/init.sh
T
ddadmin 8d82679bc1 feat(airflow): подключён официальный провайдер ClickHouse
- Зачем:
  - нужен единый штатный путь исполнения SQL и программных запросов ClickHouse из Airflow.
- Что:
  - добавлен официальный провайдер и подключения типа `clickhouse`.
  - SQL-файлы переданы `SQLExecuteQueryOperator`, а программные запросы — `ClickHouseHook`.
  - разбор заказов собран в одном файле, DDL разделён по задачам, документация и смоук обновлены.
- Проверка:
  - выполнены `make lint` и `make config-test`.
  - собран образ, выполнены `pip check`, `make rebuild-storage`, `make smoke` (21/21), `make check-clickhouse` (10/10) и `make check-services` (7/7).
2026-08-22 01:40:56 -04:00

48 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
install -d -o airflow -g root -m 0775 /opt/airflow/auth
# SimpleAuthManager не умеет создавать пользователей через CLI: пароль хранится в JSON.
runuser -u airflow -- python - <<'PY'
import json
import os
from pathlib import Path
passwords_file = Path(os.environ["AIRFLOW__CORE__SIMPLE_AUTH_MANAGER_PASSWORDS_FILE"])
passwords_file.write_text(
json.dumps(
{os.environ["AIRFLOW_ADMIN_USER"]: os.environ["AIRFLOW_ADMIN_PASSWORD"]},
ensure_ascii=False,
)
+ "\n",
encoding="utf-8",
)
PY
runuser -u airflow -- airflow db migrate
runuser -u airflow -- airflow connections delete clickhouse_default >/dev/null 2>&1 || true
# Прикладные запросы короткие: 30 с отличают зависший транспорт от работы запроса.
runuser -u airflow -- airflow connections add clickhouse_default \
--conn-type clickhouse \
--conn-host clickhouse-01 \
--conn-port 8123 \
--conn-login etl \
--conn-password "$CLICKHOUSE_ETL_PASSWORD" \
--conn-schema default \
--conn-extra '{"connect_timeout": 5, "send_receive_timeout": 30}' \
--conn-description "ClickHouse, нода 1; запросы прикладных дагов"
runuser -u airflow -- airflow connections delete clickhouse_lifecycle >/dev/null 2>&1 || true
# `ON CLUSTER` ждёт хосты до 180 с. Транспорт живёт дольше, чтобы ClickHouse
# успел назвать незавершённый хост вместо сетевого тайм-аута.
runuser -u airflow -- airflow connections add clickhouse_lifecycle \
--conn-type clickhouse \
--conn-host clickhouse-01 \
--conn-port 8123 \
--conn-login lifecycle \
--conn-password "$CLICKHOUSE_LIFECYCLE_PASSWORD" \
--conn-schema default \
--conn-extra '{"connect_timeout": 5, "send_receive_timeout": 300}' \
--conn-description "ClickHouse, нода 1; создание и пересоздание прикладного мира"