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

@@ -59,6 +59,8 @@ print_help() {
echo ""
echo -e "${BOLD}Доступные команды:${NC}"
echo " bootstrap — создать пользователя + задеплоить SSH ключ"
echo " k8s-user — создать k8s пользователя + разложить SSH ключи"
echo " mdadm — найти RAID массив и смонтировать в /storage"
echo " install — полный стек (site.yml)"
echo " install-k3s — только K3S"
echo " install-kubevip — только kube-vip"
@@ -204,6 +206,18 @@ case "${COMMAND}" in
exec ansible-playbook bootstrap.yml "$@"
;;
# ── k8s-user ──────────────────────────────────────────────────────────────
k8s-user)
log "Создание k8s пользователя и деплой SSH ключей..."
run_playbook k8s-user.yml "$@"
;;
# ── mdadm ─────────────────────────────────────────────────────────────────
mdadm)
log "Настройка mdadm RAID и монтирование /storage..."
run_playbook mdadm.yml "$@"
;;
# ── Основные команды ───────────────────────────────────────────────────────
install)
log "Разворачиваю полный K3S стек..."