Роль 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
29 lines
1.1 KiB
YAML
29 lines
1.1 KiB
YAML
---
|
|
# Раскладывает приватный и публичный ключ k8s пользователя на текущий хост
|
|
# Ключи берутся из hostvars первого мастера (сгенерированы там play'ем generate_keys)
|
|
|
|
- name: Deploy private key to k8s user
|
|
ansible.builtin.copy:
|
|
content: "{{ hostvars[groups['k3s_master'][0]]['k8s_ssh_private_key'] }}"
|
|
dest: "/home/{{ k8s_service_user }}/{{ k8s_service_user_ssh_dir }}/id_rsa"
|
|
owner: "{{ k8s_service_user }}"
|
|
group: "{{ k8s_service_user }}"
|
|
mode: '0600'
|
|
become: true
|
|
|
|
- name: Deploy public key to k8s user
|
|
ansible.builtin.copy:
|
|
content: "{{ hostvars[groups['k3s_master'][0]]['k8s_ssh_public_key'] }}\n"
|
|
dest: "/home/{{ k8s_service_user }}/{{ k8s_service_user_ssh_dir }}/id_rsa.pub"
|
|
owner: "{{ k8s_service_user }}"
|
|
group: "{{ k8s_service_user }}"
|
|
mode: '0644'
|
|
become: true
|
|
|
|
- name: Add k8s public key to authorized_keys
|
|
ansible.posix.authorized_key:
|
|
user: "{{ k8s_service_user }}"
|
|
key: "{{ hostvars[groups['k3s_master'][0]]['k8s_ssh_public_key'] }}"
|
|
state: present
|
|
become: true
|