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:
@@ -49,7 +49,7 @@ k3s_common_packages:
|
||||
- nfs-common
|
||||
- mc
|
||||
- htop
|
||||
- vim
|
||||
- nano
|
||||
- wget
|
||||
- open-iscsi
|
||||
- bash-completion
|
||||
@@ -155,40 +155,54 @@ cert_manager_namespace: "cert-manager"
|
||||
# none — не создавать (настрой вручную)
|
||||
# selfsigned — самоподписанный CA (для внутреннего использования)
|
||||
# letsencrypt — Let's Encrypt (требует публичный домен)
|
||||
cert_manager_issuer: "selfsigned" # none | selfsigned | letsencrypt
|
||||
cert_manager_issuer: "letsencrypt" # none | selfsigned | letsencrypt
|
||||
|
||||
# Let's Encrypt (нужен только если cert_manager_issuer: letsencrypt)
|
||||
cert_manager_acme_email: "admin@example.com"
|
||||
cert_manager_acme_server: "prod" # prod | staging
|
||||
|
||||
# ─── etcd backup ──────────────────────────────────────────────────────────────
|
||||
etcd_backup_dir: "{{ k3s_data_dir }}/server/db/snapshots"
|
||||
etcd_backup_dir: "{{ k3s_data_dir }}/server/etcd/snapshots"
|
||||
etcd_backup_retention: 5 # сколько снимков хранить локально
|
||||
etcd_backup_copy_to_local: false # скопировать снимок на Ansible-хост
|
||||
etcd_backup_local_dir: "./etcd-backups"
|
||||
|
||||
# ─── Istio (Service Mesh) ──────────────────────────────────────────────────────
|
||||
# istio_enabled: false (задаётся выше)
|
||||
# istio_version: "1.22.2"
|
||||
# istio_mtls_mode: "STRICT" # STRICT | PERMISSIVE | DISABLE
|
||||
# istio_install_gateway: true
|
||||
|
||||
# Kiali (UI для Istio) — требует istio_enabled: true
|
||||
# Токен задаётся в vault.yml:
|
||||
# vault_kiali_token: "" # заполни после первой установки (токен выведет Ansible)
|
||||
# kiali_enabled: false (задаётся выше)
|
||||
# vault_kiali_token: "" # заполни после первой установки (токен выведет Ansible)
|
||||
|
||||
# ─── kube-prometheus-stack (Prometheus + Grafana + Alertmanager) ───────────────
|
||||
# prometheus_stack_enabled: false (задаётся выше)
|
||||
# prometheus_stack_version: "60.3.0"
|
||||
# prometheus_retention_days: 7
|
||||
# prometheus_storage_size: "10Gi"
|
||||
|
||||
# Grafana: логин и пароль — задай в vault.yml:
|
||||
# vault_grafana_user: "admin"
|
||||
# vault_grafana_password: "ваш-пароль"
|
||||
# vault_grafana_user: "admin"
|
||||
# vault_grafana_password: "ваш-пароль"
|
||||
# grafana_admin_user: "{{ vault_grafana_user | default('admin') }}"
|
||||
# prometheus_grafana_admin_password: "{{ vault_grafana_password | default('admin') }}"
|
||||
|
||||
# prometheus_grafana_ingress_enabled: false
|
||||
# prometheus_grafana_ingress_host: "grafana.local"
|
||||
|
||||
# ─── mdadm ────────────────────────────────────────────────────────────────────
|
||||
# Поиск RAID массива и монтирование в /storage
|
||||
# Отключить на конкретной ноде: задай mdadm_enabled: false в host_vars/<node>/main.yml
|
||||
mdadm_enabled: false
|
||||
|
||||
# ─── k8s-user ─────────────────────────────────────────────────────────────────
|
||||
# Сервисный пользователь k8s — создаётся на всех серверах (кластер + lab_hosts)
|
||||
# RSA 4096 ключ генерируется один раз на первом мастере, затем раскладывается везде
|
||||
k8s_service_user: k8s
|
||||
k8s_service_user_shell: /bin/bash
|
||||
k8s_service_user_comment: "K8S Service Account"
|
||||
k8s_service_user_key_type: rsa
|
||||
k8s_service_user_key_bits: 4096
|
||||
k8s_service_user_key_comment: "k8s@cluster"
|
||||
k8s_service_user_ssh_dir: ".ssh"
|
||||
k8s_service_user_sudo: true
|
||||
|
||||
Reference in New Issue
Block a user