- Переименован пресет geop.yml в cod.yml - Обновлены все группы с geop на cod - Добавлена поддержка ARM64 для Astra Linux и RedOS - Создан Dockerfile.arm64 для RedOS с исправлением конфликтов пакетов - Улучшены разделители в логах Molecule - Зашифрован файл vault/secrets.yml - Обновлена роль devops с поддержкой vault - Добавлены шаблоны для SSH и sudoers конфигураций
101 lines
3.1 KiB
Docker
101 lines
3.1 KiB
Docker
# 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, ansible-lint, passlib
|
||
RUN pip3 install ansible ansible-core ansible-lint passlib
|
||
|
||
# Устанавливаем дополнительные пакеты
|
||
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
|
||
|
||
# Копируем файлы зависимостей
|
||
COPY requirements.yml /tmp/requirements.yml
|
||
COPY requirements.txt /tmp/requirements.txt
|
||
|
||
# Устанавливаем Python зависимости
|
||
RUN pip3 install -r /tmp/requirements.txt
|
||
|
||
# Устанавливаем 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
|
||
|
||
# Устанавливаем molecule как root
|
||
RUN pip3 install ansible ansible-core ansible-lint molecule molecule-docker passlib
|
||
|
||
# Проверяем, что molecule установлен
|
||
RUN which molecule || echo "molecule not found"
|
||
|
||
# Настройки для работы с 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
|
||
ENV PATH="/home/ansible/.local/bin:$PATH"
|
||
|
||
# Команда по умолчанию
|
||
CMD ["sleep", "infinity"]
|