92 lines
4.8 KiB
Docker
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"]
|