# ───────────────────────────────────────────────────────────────────────────── # 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"]