Some checks failed
Ansible Testing / lint (push) Has been cancelled
Ansible Testing / test (default) (push) Has been cancelled
Ansible Testing / test (minimal) (push) Has been cancelled
Ansible Testing / test (performance) (push) Has been cancelled
Ansible Testing / deploy-check (push) Has been cancelled
- Убраны пакеты: vim, jq, git, htop, tree из всех Dockerfile - Закомментированы установки Docker, Docker Compose, yq - Обновлен Rocky Linux до версии 9 с Python 3 - Исправлена проблема с passlib в ansible-controller - Оставлены только необходимые пакеты: systemd, curl, wget, nano, python3, sudo
94 lines
2.9 KiB
Docker
94 lines
2.9 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
|
||
|
||
# Настройки для работы с 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"]
|