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

@@ -0,0 +1,18 @@
# ─────────────────────────────────────────────────────────────────────────────
# Bootstrap credentials для лабораторного сервера nas01
# Используются при ansible-playbook k8s-user.yml для создания k8s пользователя
# и деплоя SSH ключей через пароль (без предварительного SSH ключа)
#
# Для создания зашифрованного файла:
# cp host_vars/nas01/vault.yml.example host_vars/nas01/vault.yml
# ansible-vault encrypt host_vars/nas01/vault.yml
# ─────────────────────────────────────────────────────────────────────────────
# Начальный пользователь на сервере (root, admin, ubuntu, и т.д.)
bootstrap_user: root
# SSH пароль этого пользователя
bootstrap_password: "замени-на-реальный-пароль"
# Sudo пароль (если отличается от bootstrap_password, иначе можно не указывать)
# bootstrap_sudo_password: "другой-пароль"