Files
K3S/Dockerfile
2026-04-27 08:40:08 +03:00

92 lines
4.8 KiB
Docker

# ─────────────────────────────────────────────────────────────────────────────
# 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
ARG TARGETARCH
RUN HELM_ARCH="${TARGETARCH:-amd64}" \
&& curl -fsSL "https://get.helm.sh/helm-v${HELM_VERSION}-linux-${HELM_ARCH}.tar.gz" \
| tar -xz --strip-components=1 -C /usr/local/bin "linux-${HELM_ARCH}/helm" \
&& chmod +x /usr/local/bin/helm \
&& helm version --short
# ── kubectl ───────────────────────────────────────────────────────────────────
ARG KUBECTL_VERSION=v1.29.3
RUN KUBECTL_ARCH="${TARGETARCH:-amd64}" \
&& curl -fsSL "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/${KUBECTL_ARCH}/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_PATH=/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"]