# Ansible Controller с предустановленными коллекциями # Автор: Сергей Антропов # Сайт: https://devops.org.ru FROM ubuntu:22.04 # Обновляем систему RUN apt-get update && apt-get upgrade -y && apt-get clean # Устанавливаем Python и Ansible RUN apt-get install -y \ python3 \ python3-pip \ python3-venv \ python3-dev \ build-essential \ && apt-get clean # Устанавливаем Ansible RUN pip3 install ansible ansible-core # Устанавливаем дополнительные пакеты RUN apt-get install -y \ curl \ wget \ git \ vim \ nano \ htop \ tree \ jq \ && apt-get clean # Устанавливаем yq RUN wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_arm64 \ && chmod +x /usr/local/bin/yq # Устанавливаем Docker CLI RUN apt-get install -y docker.io docker-compose # Устанавливаем kubectl RUN curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" \ && chmod +x kubectl \ && mv kubectl /usr/local/bin/ # Устанавливаем Helm RUN curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash # Устанавливаем Kind RUN curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.23.0/kind-linux-amd64 \ && chmod +x ./kind \ && mv ./kind /usr/local/bin/ ## Устанавливаем Istio CLI #RUN curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.22.1 sh - \ # && mv istio-1.22.1/bin/istioctl /usr/local/bin/ \ # && rm -rf istio-1.22.1 # Копируем requirements.yml COPY requirements.yml /tmp/requirements.yml # Устанавливаем Ansible коллекции RUN ansible-galaxy collection install -r /tmp/requirements.yml # Создаем пользователя ansible RUN useradd -m -s /bin/bash ansible \ && echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers # Создаем рабочую директорию WORKDIR /ansible # Устанавливаем права RUN chown -R ansible:ansible /ansible # Переключаемся на пользователя ansible USER ansible # Устанавливаем дополнительные роли RUN ansible-galaxy install geerlingguy.docker \ && ansible-galaxy install geerlingguy.kubernetes # Настройки для работы с Docker ENV DOCKER_HOST=unix:///var/run/docker.sock ENV ANSIBLE_FORCE_COLOR=1 ENV ANSIBLE_STDOUT_CALLBACK=yaml ENV ANSIBLE_CALLBACKS_ENABLED=profile_tasks # Команда по умолчанию CMD ["sleep", "infinity"]