feat: добавлены роли mdadm и k8s-user с полной оркестрацией SSH ключей

Роль mdadm:
- автоопределение RAID массива через mdadm --detail --scan
- монтирование в /storage через fstab (UUID-based, nofail)
- автоопределение fstype через blkid
- обновление mdadm.conf + initramfs
- флаг mdadm_enabled для отключения на отдельных нодах

Роль k8s-user:
- создание пользователя k8s + группа + sudo без пароля (visudo validation)
- генерация RSA 4096 ключевой пары на первом мастере (идемпотентно, creates:)
- раскладка приватного и публичного ключа на все ноды кластера
- добавление public key в authorized_keys — SSH с любой ноды на любую
- обновление /etc/hosts блоками через blockinfile (k3s_cluster + lab_hosts)
- поддержка lab_hosts: создание пользователя и деплой ключей через пароль из vault

Плейбуки:
- k8s-user.yml — полная оркестрация (5 plays: create → generate → distribute → hosts → lab)
- mdadm.yml — запуск роли mdadm на k3s_cluster

Инфраструктура:
- inventory: добавлена группа [lab_hosts] с примерами
- host_vars/nas01/vault.yml.example — шаблон credentials для лаб-серверов
- group_vars/all/main.yml: переменные mdadm_enabled и k8s_service_user_*
- Makefile: цели k8s-user и mdadm
- docker/entrypoint.sh: команды k8s-user и mdadm
This commit is contained in:
Sergey Antropoff
2026-04-24 06:50:22 +03:00
parent 24846d2e52
commit 408779a379
15 changed files with 470 additions and 10 deletions

View File

@@ -30,3 +30,13 @@ master01
# Если NFS на отдельной машине — закомментируй строку выше и раскомментируй:
# nfshost ansible_host=192.168.1.20 ansible_user=ubuntu
# ─────────────────────────────────────────────────────────────────────────────
# Лабораторные серверы (не входят в k3s кластер)
# Используются для: распределения SSH ключей k8s пользователя, /etc/hosts
# Подключение: через bootstrap_user/bootstrap_password из host_vars/<host>/vault.yml
# ─────────────────────────────────────────────────────────────────────────────
[lab_hosts]
# nas01 ansible_host=192.168.1.30
# devbox ansible_host=192.168.1.31
# proxy01 ansible_host=192.168.1.32