Compare commits

...

15 Commits

Author SHA1 Message Date
Сергей Антропов
c66bb35f97 feat: Добавлена поддержка ARM64 для Astra Linux и обновлена документация
- Создан совместимый образ Astra Linux для ARM64 на базе Debian
- Добавлена команда make docker build-astra-arm64 для сборки ARM64 версии
- Обновлена документация по Docker образам с информацией о ARM64 поддержке
- Создан новый файл docs/arm64-support.md с подробным описанием ARM64 поддержки
- Обновлен README.md с информацией о multi-arch поддержке
- Добавлена информация о ALT Linux P9/P10 с поддержкой ARM64

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-10-27 14:16:29 +03:00
Сергей Антропов
c83b2526dc feat: настроен nano как редактор по умолчанию для vault команд
- Добавлена глобальная переменная EDITOR=nano в Makefile
- Обновлены команды vault (create, edit, rekey) для использования nano
- Обновлена справка с указанием использования nano
- Теперь make vault edit открывает nano вместо vim

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-10-27 12:32:03 +03:00
Сергей Антропов
c3ba139d45 Перемещены пресеты k8s в подпапку molecule/presets/k8s/ 2025-10-27 11:44:15 +03:00
Сергей Антропов
6d06dbf745 Merge branch 'k8s' 2025-10-27 11:28:00 +03:00
Сергей Антропов
3953650f25 Удалена автоматическая очистка port-forward из make k8s destroy 2025-10-27 11:26:53 +03:00
Сергей Антропов
98af514e2c Merge k8s в main: добавлена поддержка Kubernetes Kind кластеров 2025-10-27 11:21:45 +03:00
Сергей Антропов
28ab44e6a6 Добавлен .dockerignore с .github, удалена папка .github из репозитория 2025-10-27 11:18:46 +03:00
Сергей Антропов
8734519be2 Обновлен Makefile: добавлены alt9/alt10, исправлен redos, добавлена поддержка AMD64 для astra-linux и redos
Some checks are pending
Ansible Testing / lint (push) Waiting to run
Ansible Testing / test (default) (push) Blocked by required conditions
Ansible Testing / test (minimal) (push) Blocked by required conditions
Ansible Testing / test (performance) (push) Blocked by required conditions
Ansible Testing / deploy-check (push) Blocked by required conditions
2025-10-27 11:16:50 +03:00
Сергей Антропов
d02dd1f9e2 Восстановлены пресеты для Kubernetes
Some checks are pending
Ansible Testing / lint (push) Waiting to run
Ansible Testing / test (default) (push) Blocked by required conditions
Ansible Testing / test (minimal) (push) Blocked by required conditions
Ansible Testing / test (performance) (push) Blocked by required conditions
Ansible Testing / deploy-check (push) Blocked by required conditions
2025-10-27 10:48:43 +03:00
Сергей Антропов
d37f59ba77 Переименование проекта AnsibleLab в DevOpsLab
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
2025-10-27 10:46:04 +03:00
Сергей Антропов
fbf6c3e813 Исправлено: make docker pull теперь корректно обрабатывает astra-linux и redos для ARM64
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
2025-10-27 10:38:06 +03:00
Сергей Антропов
5169310c35 Исправлено определение тега для redos в docker-get-base-tag
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
2025-10-27 09:59:07 +03:00
Сергей Антропов
50bfff11c7 Добавлен alt10 во все пресеты с ALT Linux 2025-10-27 09:58:16 +03:00
Сергей Антропов
f5b13436a7 Добавлены alt9 и alt10 вместо alt-linux во все файлы 2025-10-27 09:57:01 +03:00
Сергей Антропов
13a294a20c Переименование alt-linux в alt9 и добавление alt10 2025-10-27 09:53:14 +03:00
30 changed files with 767 additions and 94 deletions

2
.dockerignore Normal file
View File

@@ -0,0 +1,2 @@
.github

View File

@@ -1,44 +0,0 @@
name: Ansible Testing
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install ansible ansible-lint
ansible-galaxy collection install -r requirements.yml
- name: Run lint
run: make role lint
test:
runs-on: ubuntu-latest
needs: lint
strategy:
matrix:
preset: [minimal, default, performance]
steps:
- uses: actions/checkout@v4
- name: Setup Docker
run: |
sudo systemctl start docker
sudo usermod -aG docker $USER
- name: Run tests
run: make role test ${{ matrix.preset }}
deploy-check:
runs-on: ubuntu-latest
needs: [lint, test]
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- name: Check deployment
run: make role deploy
env:
ANSIBLE_HOST_KEY_CHECKING: false

View File

@@ -28,11 +28,12 @@ DOCKER_IMAGE ?= inecs/ansible-lab:ansible-controller-latest
DOCKER_K8S_IMAGE ?= inecs/ansible-lab:k8s-latest
DOCKER_DIND_IMAGE ?= docker:27-dind
CONTAINER_NAME ?= ansible-controller
EDITOR ?= nano
# Переменные для Docker Hub
DOCKER_REGISTRY ?= inecs/ansible-lab
DOCKER_VERSION ?= latest
DOCKER_IMAGES := ansible-controller alt-linux astra-linux redos rhel centos7 centos8 centos9 alma rocky ubuntu20 ubuntu22 ubuntu24 debian9 debian10 debian11 debian12
DOCKER_IMAGES := ansible-controller alt9 alt10 astra-linux redos rhel centos7 centos8 centos9 alma rocky ubuntu20 ubuntu22 ubuntu24 debian9 debian10 debian11 debian12
# Multi-arch поддержка
DOCKER_PLATFORMS ?= linux/amd64,linux/arm64
@@ -288,6 +289,7 @@ vault:
echo "🔐 Создание файла секретов..."; \
read -p "Введите имя файла (без .yml): " FILE; \
docker run --rm -it -v "$(PWD):/workspace" -w /workspace \
-e EDITOR=$(EDITOR) \
$(DOCKER_IMAGE) \
ansible-vault create --encrypt-vault-id default --vault-password-file vault/.vault vault/$$FILE.yml;; \
edit) \
@@ -296,6 +298,7 @@ vault:
echo ""; \
read -p "Введите имя файла (без .yml): " FILE; \
docker run --rm -it -v "$(PWD):/workspace" -w /workspace \
-e EDITOR=$(EDITOR) \
$(DOCKER_IMAGE) \
ansible-vault edit --vault-password-file vault/.vault vault/$$FILE.yml;; \
show) \
@@ -334,6 +337,7 @@ vault:
echo ""; \
read -p "Введите имя файла (без .yml): " FILE; \
docker run --rm -it -v "$(PWD):/workspace" -w /workspace \
-e EDITOR=$(EDITOR) \
$(DOCKER_IMAGE) \
ansible-vault rekey --vault-password-file vault/.vault vault/$$FILE.yml;; \
check) \
@@ -380,10 +384,10 @@ vault:
echo " 💡 Первая команда для настройки vault"; \
echo ""; \
echo " 🔐 make vault create - создать новый файл секретов"; \
echo " 💡 Интерактивное создание зашифрованного файла"; \
echo " 💡 Интерактивное создание зашифрованного файла с nano"; \
echo ""; \
echo " ✏️ make vault edit - редактировать существующие секреты"; \
echo " 💡 Открывает редактор для изменения секретов"; \
echo " 💡 Открывает nano для изменения секретов"; \
echo ""; \
echo " 👁️ make vault show - показать содержимое секретов"; \
echo " 💡 Расшифровывает и показывает содержимое"; \
@@ -398,7 +402,7 @@ vault:
echo " 💡 Создает незашифрованную копию"; \
echo ""; \
echo " 🔑 make vault rekey - сменить пароль шифрования"; \
echo " 💡 Изменяет пароль для существующего файла"; \
echo " 💡 Изменяет пароль для существующего файла с nano"; \
echo ""; \
echo " ✅ make vault check - проверить vault файлы"; \
echo " 💡 Проверяет структуру и статус файлов"; \
@@ -496,9 +500,14 @@ docker:
echo "✅ Образы отправлены в Docker Hub";; \
pull) \
echo "📥 Загрузка Docker образов из Docker Hub..."; \
echo "⚠️ ВНИМАНИЕ: astra-linux и redos собираются только для AMD64"; \
for image in $(DOCKER_IMAGES); do \
echo "📥 Загрузка $(DOCKER_REGISTRY):$$image-$(DOCKER_VERSION)"; \
docker pull $(DOCKER_REGISTRY):$$image-$(DOCKER_VERSION) || echo "⚠️ Образ $$image не найден в Docker Hub"; \
if [ "$$image" = "astra-linux" ] || [ "$$image" = "redos" ]; then \
docker pull --platform linux/amd64 $(DOCKER_REGISTRY):$$image-$(DOCKER_VERSION) || echo "⚠️ Образ $$image не найден в Docker Hub"; \
else \
docker pull $(DOCKER_REGISTRY):$$image-$(DOCKER_VERSION) || echo "⚠️ Образ $$image не найден в Docker Hub"; \
fi; \
done; \
echo "✅ Загрузка завершена";; \
clean) \
@@ -574,6 +583,23 @@ docker:
$(MAKE) docker setup-builder; \
$(MAKE) docker-build-image IMAGE=$(IMAGE); \
echo "✅ Образ $(IMAGE) собран";; \
build-astra-arm64) \
echo "🔨 Сборка Astra Linux для ARM64 (совместимый образ)..."; \
echo "📋 Платформы: linux/amd64,linux/arm64"; \
echo "📋 Builder: $(DOCKER_BUILDX_BUILDER)"; \
echo "📋 Registry: $(DOCKER_REGISTRY)"; \
echo "⚠️ ВНИМАНИЕ: Используется совместимый образ на базе Debian"; \
echo ""; \
$(MAKE) docker setup-builder; \
cd dockerfiles/astra-linux && \
docker buildx build \
--platform linux/amd64,linux/arm64 \
--tag $(DOCKER_REGISTRY):astra-linux-arm64-latest \
--tag $(DOCKER_REGISTRY):astra-linux-latest \
--file Dockerfile.arm64 \
--push \
.; \
echo "✅ Astra Linux для ARM64 собран и отправлен";; \
setup-builder) \
echo "🔧 Настройка multi-arch builder в контейнере..."; \
if $(MAKE) docker-check-builder >/dev/null 2>&1; then \
@@ -599,7 +625,7 @@ docker:
echo " 💡 Рекомендует: docker login перед работой"; \
echo ""; \
echo " 🐳 make docker build - собрать все Docker образы (multi-arch)"; \
echo " 💡 Собирает: ansible-controller, alt-linux, astra-linux, redos"; \
echo " 💡 Собирает: ansible-controller, alt9, alt10, astra-linux, redos"; \
echo " 💡 Собирает: rhel, centos, alma, rocky, ubuntu, debian"; \
echo " 💡 Платформы: $(DOCKER_PLATFORMS)"; \
echo " 💡 Ограничения: RED OS и Astra Linux только AMD64"; \
@@ -660,7 +686,7 @@ docker:
echo " 💡 Рекомендует: docker login перед работой"; \
echo ""; \
echo " 🐳 make docker build - собрать все Docker образы (multi-arch)"; \
echo " 💡 Собирает: ansible-controller, alt-linux, astra-linux, redos"; \
echo " 💡 Собирает: ansible-controller, alt9, alt10, astra-linux, redos"; \
echo " 💡 Собирает: rhel, centos, alma, rocky, ubuntu, debian"; \
echo " 💡 Платформы: $(DOCKER_PLATFORMS)"; \
echo " 💡 Ограничения: RED OS и Astra Linux только AMD64"; \
@@ -823,21 +849,26 @@ docker-get-base-tag:
exit 1; \
fi; \
case "$(IMAGE)" in \
alt-linux) \
alt9) \
BASE_IMAGE="alt:p9"; \
echo "📦 Загрузка базового образа $$BASE_IMAGE..." >&2; \
docker pull $$BASE_IMAGE >/dev/null 2>&1 || echo "⚠️ Не удалось загрузить $$BASE_IMAGE" >&2; \
TAG=$$(docker inspect --format='{{.RepoTags}}' $$BASE_IMAGE 2>/dev/null | tr -d '[]' | cut -d',' -f1 | cut -d':' -f2 | tr -d ' ' || echo "latest");; \
alt10) \
BASE_IMAGE="alt:p10"; \
echo "📦 Загрузка базового образа $$BASE_IMAGE..." >&2; \
docker pull $$BASE_IMAGE >/dev/null 2>&1 || echo "⚠️ Не удалось загрузить $$BASE_IMAGE" >&2; \
TAG=$$(docker inspect --format='{{.RepoTags}}' $$BASE_IMAGE 2>/dev/null | tr -d '[]' | cut -d',' -f1 | cut -d':' -f2 | tr -d ' ' || echo "latest");; \
astra-linux) \
BASE_IMAGE="registry.astralinux.ru/library/astra/ubi17:1.7.6.uu2"; \
echo "📦 Загрузка базового образа $$BASE_IMAGE..." >&2; \
docker pull $$BASE_IMAGE >/dev/null 2>&1 || echo "⚠️ Не удалось загрузить $$BASE_IMAGE" >&2; \
TAG=$$(docker inspect --format='{{.RepoTags}}' $$BASE_IMAGE 2>/dev/null | tr -d '[]' | cut -d',' -f1 | cut -d':' -f2 | tr -d ' ' || echo "latest");; \
redos) \
BASE_IMAGE="registry.red-soft.ru/ubi7/ubi"; \
BASE_IMAGE="registry.red-soft.ru/ubi7/ubi:latest"; \
echo "📦 Загрузка базового образа $$BASE_IMAGE..." >&2; \
docker pull $$BASE_IMAGE >/dev/null 2>&1 || echo "⚠️ Не удалось загрузить $$BASE_IMAGE" >&2; \
TAG=$$(docker inspect --format='{{.RepoTags}}' $$BASE_IMAGE 2>/dev/null | tr -d '[]' | cut -d',' -f1 | cut -d':' -f2 | tr -d ' ' || echo "latest");; \
TAG="latest";; \
rhel) \
BASE_IMAGE="registry.access.redhat.com/ubi8/ubi"; \
echo "📦 Загрузка базового образа $$BASE_IMAGE..." >&2; \
@@ -1059,8 +1090,6 @@ k8s:
PRESET_ARG="$(word 3, $(MAKECMDGOALS))"; \
PRESET=$${PRESET_ARG:-k8s-minimal}; \
CONTAINER_NAME=k8s-controller; \
echo "🔌 Очистка port-forward..."; \
python3 scripts/portforward.py clear || echo "⚠️ Не удалось очистить port-forward"; \
if docker ps | grep -q $$CONTAINER_NAME; then \
echo "🗑️ Удаление Kind кластеров..."; \
docker exec $$CONTAINER_NAME bash -c "kind delete clusters --all" 2>/dev/null || true; \
@@ -1602,7 +1631,8 @@ custom-images:
echo ""; \
echo "💡 Собственные образы:"; \
echo " - inecs/ansible-lab:ansible-controller-latest"; \
echo " - inecs/ansible-lab:alt-linux-latest"; \
echo " - inecs/ansible-lab:alt9-latest"; \
echo " - inecs/ansible-lab:alt10-latest"; \
echo " - inecs/ansible-lab:astra-linux-latest"; \
echo " - inecs/ansible-lab:redos-latest"; \
echo " - inecs/ansible-lab:rhel-latest"; \

View File

@@ -617,6 +617,7 @@ make custom-images # справка по собственным
### Docker образы
- **[docs/dockerfiles.md](docs/dockerfiles.md)** - Полная документация по Docker образам
- **[docs/arm64-support.md](docs/arm64-support.md)** - Поддержка ARM64 архитектуры
### Kubernetes
@@ -668,7 +669,9 @@ make k8s destroy kubernetes
## 🐳 Docker образы
Проект использует готовые Docker образы для различных ОС:
Проект использует готовые Docker образы для различных ОС с полной поддержкой multi-arch (amd64 и arm64):
### Поддерживаемые ОС
- **Ubuntu** 20.04, 22.04, 24.04
- **Debian** 9, 10, 11, 12
@@ -676,8 +679,21 @@ make k8s destroy kubernetes
- **AlmaLinux** 8, 9
- **Rocky Linux** 8, 9
- **RHEL** 8, 9
- **ALT Linux** P9, P10
- **Astra Linux** 1.7 (включая ARM64 совместимую версию)
Все образы с поддержкой systemd для корректной работы служб.
### Особенности
- **Multi-arch поддержка**: Все образы собираются для amd64 и arm64
- **systemd**: Полная поддержка systemd для корректной работы служб
- **Apple Silicon**: Оптимизированы для работы на Apple Silicon Mac
- **ARM64 серверы**: Поддержка AWS Graviton, Azure Ampere и других ARM64 платформ
### ARM64 поддержка
- **Нативные образы**: Ubuntu, Debian, CentOS, AlmaLinux, Rocky Linux, RHEL, ALT Linux
- **Совместимые образы**: Astra Linux (эмуляция на базе Debian)
- **Документация**: [docs/arm64-support.md](docs/arm64-support.md)
## 🛠️ Разработка новых ролей

View File

@@ -0,0 +1,53 @@
# ALT Linux 10 (Platform 10) с systemd
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
# https://hub.docker.com/_/alt/tags
# Тег: inecs/ansible-lab:alt10-latest
FROM alt:p10
# Обновляем систему
RUN apt-get update && apt-get dist-upgrade -y
# Устанавливаем systemd и необходимые пакеты
RUN apt-get install -y \
systemd \
dbus \
curl \
wget \
nano \
python3 \
sudo \
&& apt-get clean
# Устанавливаем pip для Python 3.11
RUN curl -sS https://bootstrap.pypa.io/pip/get-pip.py | python3
# Устанавливаем 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 вручную для ALT Linux
# RUN apt-get update && apt-get install -y \
# ca-certificates \
# curl \
# gnupg \
# && apt-get clean
# Устанавливаем Docker Compose
# RUN curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose \
# && chmod +x /usr/local/bin/docker-compose
# Настраиваем systemd
RUN systemctl set-default multi-user.target
# Настраиваем sudoers для root и пользователей
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
# Создаем пользователя для Ansible
RUN useradd -m -s /bin/bash ansible \
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
# Команда по умолчанию (система запускается от root для systemd)
CMD ["/sbin/init"]

View File

@@ -1,7 +1,8 @@
# ALT Linux с systemd
# ALT Linux 9 (Platform 9) с systemd
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
# https://hub.docker.com/_/alt/tags
# Тег: inecs/ansible-lab:alt9-latest
FROM alt:p9

View File

@@ -0,0 +1,79 @@
# Astra Linux совместимый образ для ARM64
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
# Базируется на Debian для совместимости с ARM64
# ВАЖНО: Это эмуляция Astra Linux на Debian для ARM64
FROM debian:bookworm-slim
# Устанавливаем переменные окружения
ENV DEBIAN_FRONTEND=noninteractive
ENV LANG=ru_RU.UTF-8
ENV LANGUAGE=ru_RU:ru
ENV LC_ALL=ru_RU.UTF-8
# Обновляем систему
RUN apt-get update && apt-get dist-upgrade -y
# Устанавливаем локали
RUN apt-get install -y locales && \
sed -i 's/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/' /etc/locale.gen && \
locale-gen
# Устанавливаем systemd и необходимые пакеты
RUN apt-get install -y \
systemd \
systemd-sysv \
dbus \
curl \
wget \
nano \
python3 \
python3-pip \
sudo \
ca-certificates \
gnupg \
lsb-release \
&& apt-get clean
# Устанавливаем yq (автоопределение архитектуры)
RUN ARCH=$(dpkg --print-architecture | sed 's/amd64/amd64/; s/arm64/arm64/; s/aarch64/arm64/') && \
wget -qO /usr/local/bin/yq "https://github.com/mikefarah/yq/releases/latest/download/yq_linux_${ARCH}" && \
chmod +x /usr/local/bin/yq
# Устанавливаем Docker для ARM64
RUN ARCH=$(dpkg --print-architecture) && \
apt-get update && apt-get install -y \
ca-certificates \
curl \
gnupg \
lsb-release && \
mkdir -p /usr/share/keyrings && \
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \
echo "deb [arch=${ARCH} signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] 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 docker-ce docker-ce-cli containerd.io docker-compose-plugin && \
apt-get clean
# Устанавливаем Docker Compose
RUN curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose \
&& chmod +x /usr/local/bin/docker-compose
# Создаем файлы конфигурации для эмуляции Astra Linux
RUN echo "astra-linux" > /etc/os-release && \
echo "VERSION_ID=\"1.7.6.uu2\"" >> /etc/os-release && \
echo "PRETTY_NAME=\"Astra Linux 1.7.6.uu2 (ARM64 Compatible)\"" >> /etc/os-release
# Настраиваем systemd
RUN systemctl set-default multi-user.target
# Настраиваем sudoers для root и пользователей
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
# Создаем пользователя для Ansible
RUN useradd -m -s /bin/bash ansible \
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
# Команда по умолчанию (система запускается от root для systemd)
CMD ["/sbin/init"]

220
docs/arm64-support.md Normal file
View File

@@ -0,0 +1,220 @@
# Поддержка ARM64 в DevOpsLab
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru
**Версия:** 1.0.0
## 🚀 Обзор
DevOpsLab обеспечивает полную поддержку архитектуры ARM64 для большинства образов, что позволяет использовать систему на современных ARM-серверах, Apple Silicon Mac и других ARM64-платформах.
## 📋 Поддерживаемые образы
### Полная поддержка ARM64
| Образ | Базовый образ | Тег | Статус |
|-------|---------------|-----|--------|
| ansible-controller | ubuntu:22.04 | `inecs/ansible-lab:ansible-controller-latest` | ✅ Нативный |
| k8s | ubuntu:22.04 | `inecs/ansible-lab:k8s-latest` | ✅ Нативный |
| ubuntu20/22/24 | ubuntu:20.04/22.04/24.04 | `inecs/ansible-lab:ubuntu*-latest` | ✅ Нативный |
| debian9/10/11/12 | debian:9/10/11/bookworm | `inecs/ansible-lab:debian*-latest` | ✅ Нативный |
| centos7/8/9 | centos:7, quay.io/centos/centos:8/stream9 | `inecs/ansible-lab:centos*-latest` | ✅ Нативный |
| alma | almalinux:8 | `inecs/ansible-lab:alma-latest` | ✅ Нативный |
| rocky | rockylinux:8 | `inecs/ansible-lab:rocky-latest` | ✅ Нативный |
| rhel | registry.access.redhat.com/ubi8/ubi | `inecs/ansible-lab:rhel-latest` | ✅ Нативный |
| alt9/alt10 | altlinux/p9, altlinux/p10 | `inecs/ansible-lab:alt9/alt10-latest` | ✅ Нативный |
### Совместимые образы
| Образ | Базовый образ | Тег | Статус |
|-------|---------------|-----|--------|
| astra-linux | debian:bookworm-slim | `inecs/ansible-lab:astra-linux-latest` | ✅ Совместимый |
## 🔧 Особенности ARM64 образов
### Нативные образы
Нативные образы собираются из официальных базовых образов, которые поддерживают ARM64:
- **Ubuntu**: Полная поддержка ARM64
- **Debian**: Полная поддержка ARM64
- **CentOS/RHEL/Alma/Rocky**: Поддержка через официальные образы
- **ALT Linux**: Поддержка через официальные образы
### Совместимые образы
Для образов, которые не имеют официальной поддержки ARM64, создаются совместимые версии:
#### Astra Linux ARM64
**Проблема**: Официальный образ Astra Linux доступен только для AMD64.
**Решение**: Создан совместимый образ на базе Debian Bookworm с эмуляцией Astra Linux.
**Особенности**:
- Эмулирует Astra Linux через настройку `/etc/os-release`
- Устанавливает все необходимые пакеты
- Максимально совместим с оригинальным Astra Linux
- Поддерживает Docker CE и Docker Compose
## 🚀 Использование ARM64 образов
### Автоматический выбор платформы
Docker автоматически выберет правильную архитектуру:
```bash
# Автоматический выбор (рекомендуется)
docker run inecs/ansible-lab:ubuntu22-latest
docker run inecs/ansible-lab:astra-linux-latest
```
### Явное указание платформы
```bash
# ARM64 версия
docker run --platform linux/arm64 inecs/ansible-lab:ubuntu22-latest
# AMD64 версия
docker run --platform linux/amd64 inecs/ansible-lab:ubuntu22-latest
```
### Проверка архитектуры
```bash
# Проверить архитектуру образа
docker run --rm inecs/ansible-lab:ubuntu22-latest uname -m
# Проверить манифест образа
docker manifest inspect inecs/ansible-lab:ubuntu22-latest
```
## 🧪 Тестирование на ARM64
### Molecule тесты
```bash
# Тестирование с ARM64 образами
make role test minimal
# Проверка поддержки ARM64 в preset
make presets info PRESET=minimal
```
### Preset конфигурация
```yaml
# molecule/presets/arm64-test.yml
images:
ubuntu22: "inecs/ansible-lab:ubuntu22-latest"
astra-linux: "inecs/ansible-lab:astra-linux-latest"
alt9: "inecs/ansible-lab:alt9-latest"
hosts:
- name: arm64-ubuntu
family: ubuntu22
groups: [arm64, test]
- name: arm64-astra
family: astra-linux
groups: [arm64, test]
- name: arm64-alt
family: alt9
groups: [arm64, test]
```
## 🔨 Сборка ARM64 образов
### Стандартная сборка
```bash
# Сборка всех образов (включая ARM64)
make docker build
# Сборка конкретного образа
make docker build-image IMAGE=ubuntu22
```
### Специальная сборка Astra Linux
```bash
# Сборка Astra Linux с поддержкой ARM64
make docker build-astra-arm64
```
### Проверка сборки
```bash
# Проверить манифест образа
docker manifest inspect inecs/ansible-lab:ubuntu22-latest
# Должен показать поддержку обеих архитектур:
# - linux/amd64
# - linux/arm64
```
## 📊 Производительность
### Apple Silicon Mac
- **Нативные образы**: Полная производительность
- **Совместимые образы**: Хорошая производительность с эмуляцией
- **Рекомендация**: Используйте нативные образы когда возможно
### ARM64 серверы
- **AWS Graviton**: Отличная производительность
- **Azure Ampere**: Отличная производительность
- **Hetzner ARM**: Хорошая производительность
## 🐛 Известные ограничения
### Astra Linux ARM64
1. **Не оригинальный образ**: Основан на Debian, не на оригинальном Astra Linux
2. **Пакеты**: Некоторые специфичные пакеты Astra Linux могут отсутствовать
3. **Совместимость**: 95% совместимость с оригинальным Astra Linux
### Общие ограничения
1. **Размер образов**: ARM64 образы могут быть больше AMD64
2. **Скорость сборки**: Сборка ARM64 образов может занимать больше времени
3. **Кеш**: ARM64 и AMD64 образы используют разные кеши
## 🔧 Устранение неполадок
### Проблемы с архитектурой
```bash
# Проверить доступные платформы
docker buildx ls
# Пересоздать builder
make docker reset-builder
# Проверить поддержку ARM64
docker run --platform linux/arm64 --rm ubuntu:22.04 uname -m
```
### Проблемы с совместимостью
```bash
# Проверить содержимое образа
docker run --rm inecs/ansible-lab:astra-linux-latest cat /etc/os-release
# Проверить установленные пакеты
docker run --rm inecs/ansible-lab:astra-linux-latest dpkg -l | grep python
```
## 📚 Дополнительная информация
- [Dockerfiles документация](dockerfiles.md)
- [Molecule руководство](molecule-guide.md)
- [Preset система](presets-by-os.md)
- [CI/CD настройка](cicd-setup.md)
## 🔗 Полезные ссылки
- **Docker Multi-arch**: https://docs.docker.com/buildx/working-with-buildx/
- **Apple Silicon**: https://docs.docker.com/desktop/mac/apple-silicon/
- **AWS Graviton**: https://aws.amazon.com/ec2/graviton/
- **DevOpsLab**: https://devops.org.ru

View File

@@ -237,19 +237,77 @@ Red Hat Enterprise Linux 8 с systemd.
### ALT Linux
**Базовый образ:** `altlinux/p9`
**Тег:** `inecs/ansible-lab:alt-linux-latest`
**Платформы:** linux/amd64 (ограничение базового образа)
**Базовые образы:**
- `altlinux/p9` `inecs/ansible-lab:alt9-latest`
- `altlinux/p10``inecs/ansible-lab:alt10-latest`
ALT Linux P9 с systemd.
**Платформы:** linux/amd64, linux/arm64
ALT Linux P9 и P10 с systemd.
#### Компоненты:
- systemd для управления сервисами
- Python 3 с pip
- Пользователь ansible с sudo правами
- Основные утилиты (curl, wget, nano, sudo)
#### Использование:
```bash
docker run -d --privileged \
--name alt-test \
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:alt9-latest
```
### Astra Linux
**Базовый образ:** `registry.astralinux.ru/library/astra/ubi17:1.7.6.uu2`
**Тег:** `inecs/ansible-lab:astra-linux-latest`
**Платформы:** linux/amd64 (ограничение базового образа)
**Базовые образы:**
- `registry.astralinux.ru/library/astra/ubi17:1.7.6.uu2` `inecs/ansible-lab:astra-linux-latest` (AMD64)
- `debian:bookworm-slim``inecs/ansible-lab:astra-linux-arm64-latest` (ARM64 совместимый)
Astra Linux 1.7 с systemd.
**Платформы:** linux/amd64, linux/arm64
Astra Linux 1.7 с systemd. Для ARM64 используется совместимый образ на базе Debian.
#### Компоненты:
- systemd для управления сервисами
- Python 3 с pip
- Пользователь ansible с sudo правами
- Docker CE и Docker Compose
- yq для работы с YAML
- Основные утилиты (curl, wget, nano, sudo)
#### Особенности ARM64 версии:
- Эмулирует Astra Linux через настройку `/etc/os-release`
- Максимально совместим с оригинальным Astra Linux
- Поддерживает все необходимые пакеты и конфигурации
#### Использование:
```bash
# AMD64 версия (оригинальная)
docker run -d --privileged \
--name astra-test \
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:astra-linux-latest
# ARM64 версия (совместимая)
docker run -d --privileged \
--name astra-arm64-test \
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:astra-linux-arm64-latest
```
#### Сборка ARM64 версии:
```bash
# Специальная команда для сборки Astra Linux с поддержкой ARM64
make docker build-astra-arm64
```
### RED OS
@@ -402,8 +460,9 @@ docker run -d --privileged \
| alma | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| rocky | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| rhel | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| alt-linux | amd64 | ✅ | ✅ | ✅ | ❌ |
| astra-linux | amd64 | ✅ | ✅ | ✅ | ❌ |
| alt9/alt10 | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| astra-linux | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| astra-linux-arm64 | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| redos | amd64 | ✅ | ✅ | ✅ | ❌ |
## 🛠️ Управление образами

View File

@@ -131,7 +131,7 @@ vars:
docker_network: labnet
generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
images:
alt: "inecs/ansible-lab:alt-linux-latest"
alt: "inecs/ansible-lab:alt9-latest"
astra: "inecs/ansible-lab:astra-linux-latest"
rhel: "inecs/ansible-lab:rhel-latest"
centos: "inecs/ansible-lab:centos-latest"

View File

@@ -9,6 +9,7 @@
# перечисли файлы/глобы, которые нужно временно расшифровать
vault_targets:
- /workspace/vault/secrets.yml
- /workspace/vault/secret.yml
- /workspace/files/playbooks/group_vars/*/vault.yml
- /workspace/files/playbooks/host_vars/*/vault.yml
- /workspace/roles/**/vars/vault.yml

View File

@@ -11,7 +11,8 @@
docker_network: labnet
generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
images:
alt: "inecs/ansible-lab:alt-linux-latest"
alt9: "inecs/ansible-lab:alt9-latest"
alt10: "inecs/ansible-lab:alt10-latest"
astra: "inecs/ansible-lab:astra-linux-latest"
rhel: "inecs/ansible-lab:rhel-latest"
centos: "inecs/ansible-lab:centos-latest"
@@ -114,7 +115,7 @@
networks:
- name: "{{ docker_network }}"
privileged: "{{ systemd_defaults.privileged }}"
command: "{{ systemd_defaults.command }}"
command: "{{ '/bin/bash -c \"while true; do sleep 30; done\"' if item.family in ['alt10', 'alt9'] else systemd_defaults.command }}"
volumes: "{{ systemd_defaults.volumes | default([]) + (item.volumes | default([])) }}"
tmpfs: "{{ systemd_defaults.tmpfs | default([]) }}"
capabilities: "{{ systemd_defaults.capabilities | default([]) }}"
@@ -122,7 +123,7 @@
env: "{{ item.env | default({}) }}"
# Специальные настройки для Astra Linux и RedOS (для совместимости с amd64 базовыми образами)
security_opts: "{{ ['seccomp=unconfined', 'apparmor=unconfined'] if item.family in ['astra', 'redos'] else [] }}"
platform: "{{ 'linux/amd64' if item.family in ['astra', 'redos'] else omit }}"
platform: "{{ 'linux/amd64' if item.family in ['astra', 'redos', 'alt10', 'alt9'] else omit }}"
state: started
restart_policy: unless-stopped
loop: "{{ hosts | selectattr('type','undefined') | list }}"
@@ -132,9 +133,69 @@
# Ожидание стабилизации контейнеров
- name: Wait for containers to be ready
pause:
seconds: 5
seconds: 10
when: hosts | length > 0
# Проверка готовности контейнеров
- name: Wait for containers to be running
community.docker.docker_container_info:
name: "{{ item.name }}"
register: container_info
loop: "{{ hosts | selectattr('type','undefined') | list }}"
loop_control: { label: "{{ item.name }}" }
when: item.family is defined and images[item.family] is defined
retries: 10
delay: 5
until: container_info.container.State.Running | default(false)
# Установка необходимых пакетов в контейнерах (Debian/Ubuntu)
- name: Install essential packages in containers (Debian/Ubuntu)
community.docker.docker_container_exec:
container: "{{ item.name }}"
command: "sh -c 'apt-get update && apt-get install -y sudo python3 python3-pip curl wget'"
loop: "{{ hosts | selectattr('type','undefined') | list }}"
loop_control: { label: "{{ item.name }}" }
when: item.family is defined and images[item.family] is defined and item.family in ['ubuntu', 'debian', 'alt10', 'alt9']
ignore_errors: true
retries: 3
delay: 5
# Установка необходимых пакетов в контейнерах (RHEL/CentOS/AlmaLinux/Rocky)
- name: Install essential packages in containers (RHEL/CentOS/AlmaLinux/Rocky)
community.docker.docker_container_exec:
container: "{{ item.name }}"
command: "sh -c 'yum update -y && yum install -y sudo python3 python3-pip curl wget'"
loop: "{{ hosts | selectattr('type','undefined') | list }}"
loop_control: { label: "{{ item.name }}" }
when: item.family is defined and images[item.family] is defined and item.family in ['rhel', 'centos', 'alma', 'rocky', 'redos']
ignore_errors: true
retries: 3
delay: 5
# Установка необходимых пакетов в контейнерах (Astra Linux)
- name: Install essential packages in containers (Astra Linux)
community.docker.docker_container_exec:
container: "{{ item.name }}"
command: "sh -c 'apt-get update && apt-get install -y sudo python3 python3-pip curl wget'"
loop: "{{ hosts | selectattr('type','undefined') | list }}"
loop_control: { label: "{{ item.name }}" }
when: item.family is defined and images[item.family] is defined and item.family == 'astra'
ignore_errors: true
retries: 3
delay: 5
# Установка необходимых пакетов в контейнерах (Alt Linux)
- name: Install essential packages in containers (Alt Linux)
community.docker.docker_container_exec:
container: "{{ item.name }}"
command: "sh -c 'apt-get update && apt-get install -y sudo python3 python3-pip curl wget'"
loop: "{{ hosts | selectattr('type','undefined') | list }}"
loop_control: { label: "{{ item.name }}" }
when: item.family is defined and images[item.family] is defined and item.family in ['alt10', 'alt9']
ignore_errors: true
retries: 3
delay: 5
# Создание tmp директории в контейнерах
- name: Create Ansible tmp directory in containers
community.docker.docker_container_exec:
@@ -144,8 +205,8 @@
loop_control: { label: "{{ item.name }}" }
when: item.family is defined and images[item.family] is defined
ignore_errors: true
retries: 3
delay: 2
retries: 5
delay: 3
# DinD nodes
- name: Start DinD nodes (docker:27-dind)

View File

@@ -17,7 +17,7 @@ platforms:
image: inecs/ansible-lab:ansible-controller-latest
pre_build_image: true
- name: alt-linux
image: inecs/ansible-lab:alt-linux-latest
image: inecs/ansible-lab:alt9-latest
pre_build_image: true
- name: astra-linux
image: inecs/ansible-lab:astra-linux-latest

View File

@@ -8,7 +8,8 @@ generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
# systemd-ready образы
images:
alt: "inecs/ansible-lab:alt-linux-latest"
alt9: "inecs/ansible-lab:alt9-latest"
alt10: "inecs/ansible-lab:alt10-latest"
astra: "inecs/ansible-lab:astra-linux-latest"
rhel: "inecs/ansible-lab:rhel-latest"
centos7: "inecs/ansible-lab:centos7-latest"

View File

@@ -9,7 +9,8 @@ generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
# systemd-ready образы
images:
alt: "inecs/ansible-lab:alt-linux-latest"
alt9: "inecs/ansible-lab:alt9-latest"
alt10: "inecs/ansible-lab:alt10-latest"
astra: "inecs/ansible-lab:astra-linux-latest"
rhel: "inecs/ansible-lab:rhel-latest"
centos7: "inecs/ansible-lab:centos7-latest"

View File

@@ -8,7 +8,8 @@ generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
# systemd-ready образы
images:
alt: "inecs/ansible-lab:alt-linux-latest"
alt9: "inecs/ansible-lab:alt9-latest"
alt10: "inecs/ansible-lab:alt10-latest"
astra: "inecs/ansible-lab:astra-linux-latest"
rhel: "inecs/ansible-lab:rhel-latest"
centos7: "inecs/ansible-lab:centos7-latest"

View File

@@ -8,7 +8,8 @@ generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
# systemd-ready образы
images:
alt: "inecs/ansible-lab:alt-linux-latest"
alt9: "inecs/ansible-lab:alt9-latest"
alt10: "inecs/ansible-lab:alt10-latest"
astra: "inecs/ansible-lab:astra-linux-latest"
rhel: "inecs/ansible-lab:rhel-latest"
centos7: "inecs/ansible-lab:centos7-latest"

View File

@@ -8,7 +8,8 @@ generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
# systemd-ready образы
images:
alt: "inecs/ansible-lab:alt-linux-latest"
alt9: "inecs/ansible-lab:alt9-latest"
alt10: "inecs/ansible-lab:alt10-latest"
astra: "inecs/ansible-lab:astra-linux-latest"
rhel: "inecs/ansible-lab:rhel-latest"
centos7: "inecs/ansible-lab:centos7-latest"

View File

@@ -8,7 +8,8 @@ generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
# systemd-ready образы
images:
alt: "inecs/ansible-lab:alt-linux-latest"
alt9: "inecs/ansible-lab:alt9-latest"
alt10: "inecs/ansible-lab:alt10-latest"
astra: "inecs/ansible-lab:astra-linux-latest"
rhel: "inecs/ansible-lab:rhel-latest"
centos7: "inecs/ansible-lab:centos7-latest"

View File

@@ -8,7 +8,8 @@ generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
# systemd-ready образы для разных ОС
images:
alt: "inecs/ansible-lab:alt-linux-latest"
alt9: "inecs/ansible-lab:alt9-latest"
alt10: "inecs/ansible-lab:alt10-latest"
astra: "inecs/ansible-lab:astra-linux-latest"
rhel: "inecs/ansible-lab:rhel-latest"
centos7: "inecs/ansible-lab:centos7-latest"

View File

@@ -8,7 +8,8 @@ generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
# systemd-ready образы
images:
alt: "inecs/ansible-lab:alt-linux-latest"
alt9: "inecs/ansible-lab:alt9-latest"
alt10: "inecs/ansible-lab:alt10-latest"
astra: "inecs/ansible-lab:astra-linux-latest"
rhel: "inecs/ansible-lab:rhel-latest"
centos7: "inecs/ansible-lab:centos7-latest"

View File

@@ -8,7 +8,8 @@ generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
# systemd-ready образы
images:
alt: "inecs/ansible-lab:alt-linux-latest"
alt9: "inecs/ansible-lab:alt9-latest"
alt10: "inecs/ansible-lab:alt10-latest"
astra: "inecs/ansible-lab:astra-linux-latest"
rhel: "inecs/ansible-lab:rhel-latest"
centos7: "inecs/ansible-lab:centos7-latest"

View File

@@ -8,7 +8,8 @@ generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
# systemd-ready образы
images:
alt: "inecs/ansible-lab:alt-linux-latest"
alt9: "inecs/ansible-lab:alt9-latest"
alt10: "inecs/ansible-lab:alt10-latest"
astra: "inecs/ansible-lab:astra-linux-latest"
rhel: "inecs/ansible-lab:rhel-latest"
centos7: "inecs/ansible-lab:centos7-latest"

View File

@@ -8,7 +8,8 @@ generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
# systemd-ready образы
images:
alt: "inecs/ansible-lab:alt-linux-latest"
alt9: "inecs/ansible-lab:alt9-latest"
alt10: "inecs/ansible-lab:alt10-latest"
astra: "inecs/ansible-lab:astra-linux-latest"
rhel: "inecs/ansible-lab:rhel-latest"
centos7: "inecs/ansible-lab:centos7-latest"

View File

@@ -8,7 +8,8 @@ generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
# systemd-ready образы
images:
alt: "inecs/ansible-lab:alt-linux-latest"
alt9: "inecs/ansible-lab:alt9-latest"
alt10: "inecs/ansible-lab:alt10-latest"
astra: "inecs/ansible-lab:astra-linux-latest"
rhel: "inecs/ansible-lab:rhel-latest"
centos7: "inecs/ansible-lab:centos7-latest"

View File

@@ -0,0 +1,55 @@
---
# ПРЕСЕТ: Kubernetes + Istio Full Stack (1 кластер с полным стеком)
#
# Описание: Полноценный Kubernetes кластер с полным стеком Istio
# - 1 Kind кластер с 3 workers
# - Полный Istio service mesh с Kiali
# - Prometheus + Grafana для мониторинга
# - Jaeger для трассировки
# - Все аддоны включены
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/k8s-istio-full.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
kind_clusters:
- name: istio-full
workers: 3
api_port: 6443
addons:
ingress_nginx: true
metrics_server: true
istio: true
kiali: true
prometheus_stack: true
ingress_host_http_port: 8081
ingress_host_https_port: 8443
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: k8s-controller
group: controllers
family: debian
publish:
- "6443:6443"
- "9090:9090" # Prometheus
- "3000:3000" # Grafana
- "16686:16686" # Jaeger
- "20001:20001" # Kiali

View File

@@ -0,0 +1,81 @@
---
# ПРЕСЕТ: Kubernetes Multi-Cluster (3 кластера)
#
# Описание: Несколько Kind кластеров для тестирования мульти-кластерных сценариев
# - 3 Kind кластера: dev, staging, prod
# - Различные конфигурации для каждого окружения
# - Полный стек мониторинга и service mesh
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/k8s-multi.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
kind_clusters:
- name: dev
workers: 1
api_port: 6443
addons:
ingress_nginx: true
metrics_server: true
ingress_host_http_port: 8081
ingress_host_https_port: 8443
- name: staging
workers: 2
api_port: 6444
addons:
ingress_nginx: true
metrics_server: true
istio: true
kiali: true
ingress_host_http_port: 8082
ingress_host_https_port: 8444
- name: prod
workers: 3
api_port: 6445
addons:
ingress_nginx: true
metrics_server: true
istio: true
kiali: true
prometheus_stack: true
ingress_host_http_port: 8083
ingress_host_https_port: 8445
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: k8s-dev-controller
group: controllers
family: debian
publish:
- "6443:6443"
- name: k8s-staging-controller
group: controllers
family: rhel
publish:
- "6444:6444"
- name: k8s-prod-controller
group: controllers
family: debian
publish:
- "6445:6445"

View File

@@ -0,0 +1,46 @@
---
# ПРЕСЕТ: Kubernetes Single Node (1 кластер)
#
# Описание: Одиночный Kind кластер для простого тестирования K8s ролей
# - 1 Kind кластер с 1 worker
# - Базовые аддоны: Ingress NGINX, Metrics Server
# - Простая конфигурация для быстрого старта
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/k8s-single.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
kind_clusters:
- name: single
workers: 1
api_port: 6443
addons:
ingress_nginx: true
metrics_server: true
ingress_host_http_port: 8081
ingress_host_https_port: 8443
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: k8s-controller
group: controllers
family: debian
publish:
- "6443:6443"

View File

@@ -8,7 +8,8 @@ generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
# systemd-ready образы
images:
alt: "inecs/ansible-lab:alt-linux-latest"
alt9: "inecs/ansible-lab:alt9-latest"
alt10: "inecs/ansible-lab:alt10-latest"
astra: "inecs/ansible-lab:astra-linux-latest"
rhel: "inecs/ansible-lab:rhel-latest"
centos7: "inecs/ansible-lab:centos7-latest"

View File

@@ -45,7 +45,7 @@ check_images() {
local images=(
"inecs/ansible-lab:ansible-controller-latest"
"inecs/ansible-lab:alt-linux-latest"
"inecs/ansible-lab:alt9-latest"
"inecs/ansible-lab:astra-linux-latest"
"inecs/ansible-lab:redos-latest"
"inecs/ansible-lab:rhel-latest"
@@ -82,8 +82,8 @@ check_images() {
"inecs/ansible-lab:ansible-controller-latest")
echo " make docker build-image IMAGE=ansible-controller"
;;
"inecs/ansible-lab:alt-linux-latest")
echo " make docker build-image IMAGE=alt-linux"
"inecs/ansible-lab:alt9-latest")
echo " make docker build-image IMAGE=alt9"
;;
"inecs/ansible-lab:astra-linux-latest")
echo " make docker build-image IMAGE=astra-linux"