# ─────────────────────────────────────────────────────────────────────────────
# Ansible Runner — Docker образ для запуска K3S плейбуков
# Содержит: Ansible, Helm, kubectl, все нужные коллекции
# ─────────────────────────────────────────────────────────────────────────────
FROM python:3.12-slim-bookworm

LABEL maintainer="your-name"
LABEL description="Ansible runner for K3S stack deployment"

# ── Системные зависимости ─────────────────────────────────────────────────────
RUN apt-get update && apt-get install -y --no-install-recommends \
    # SSH
    openssh-client \
    sshpass \
    # Сетевые утилиты
    curl \
    wget \
    dnsutils \
    iputils-ping \
    # Утилиты
    git \
    jq \
    rsync \
    unzip \
    gnupg \
    ca-certificates \
    # Для сборки некоторых Python пакетов
    gcc \
    libffi-dev \
    libssl-dev \
    && rm -rf /var/lib/apt/lists/*

# ── Docker CLI (для Molecule docker driver) ───────────────────────────────────
RUN install -m 0755 -d /etc/apt/keyrings \
    && curl -fsSL https://download.docker.com/linux/debian/gpg \
       -o /etc/apt/keyrings/docker.asc \
    && chmod a+r /etc/apt/keyrings/docker.asc \
    && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
       https://download.docker.com/linux/debian bookworm stable" \
       | tee /etc/apt/sources.list.d/docker.list > /dev/null \
    && apt-get update \
    && apt-get install -y --no-install-recommends docker-ce-cli \
    && rm -rf /var/lib/apt/lists/*

# ── Python зависимости (Ansible + плагины) ────────────────────────────────────
COPY requirements-python.txt /tmp/requirements-python.txt
RUN pip install --no-cache-dir -r /tmp/requirements-python.txt

# ── Helm ──────────────────────────────────────────────────────────────────────
ARG HELM_VERSION=3.14.4
RUN curl -fsSL https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz \
    | tar -xz --strip-components=1 -C /usr/local/bin linux-amd64/helm \
    && chmod +x /usr/local/bin/helm \
    && helm version --short

# ── kubectl ───────────────────────────────────────────────────────────────────
ARG KUBECTL_VERSION=v1.29.3
RUN curl -fsSL "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl" \
    -o /usr/local/bin/kubectl \
    && chmod +x /usr/local/bin/kubectl \
    && kubectl version --client --short 2>/dev/null || true

# ── Ansible Galaxy коллекции ──────────────────────────────────────────────────
COPY requirements.yml /tmp/requirements.yml
RUN ansible-galaxy collection install -r /tmp/requirements.yml \
    --collections-path /usr/share/ansible/collections \
    && echo "Collections installed:"  \
    && ansible-galaxy collection list

# ── Рабочая директория ────────────────────────────────────────────────────────
WORKDIR /ansible

# ── Конфигурация Ansible ──────────────────────────────────────────────────────
ENV ANSIBLE_COLLECTIONS_PATHS=/usr/share/ansible/collections
ENV ANSIBLE_HOST_KEY_CHECKING=False
ENV ANSIBLE_STDOUT_CALLBACK=yaml
ENV ANSIBLE_FORCE_COLOR=1
ENV PYTHONUNBUFFERED=1

# SSH agent forwarding директория
RUN mkdir -p /root/.ssh && chmod 700 /root/.ssh

# ── Entrypoint ────────────────────────────────────────────────────────────────
COPY docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

ENTRYPOINT ["/entrypoint.sh"]
CMD ["--help"]
