- Переименован пресет 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"]
 |