Files
K3S/playbooks/etcd-restore.yml
Sergey Antropoff 437d0cce34 refactor: перемещение плейбуков в playbooks/, ротация сертификатов, сохранение ключей локально
Организация плейбуков:
- все .yml плейбуки перенесены из корня в playbooks/
- Makefile и entrypoint.sh обновлены — все пути с playbooks/ префиксом
- k8s-user.yml переработан: include_tasks → include_role (корректная работа из подкаталога)

Сохранение ключей и kubeconfig локально:
- k8s-user.yml: новый play сохраняет k8s SSH ключи в ./keys/ на машине запуска
- переменная k8s_local_keys_dir: "./keys" (настраивается в group_vars)
- .gitignore: keys/k8s_id_rsa исключён (публичный ключ можно коммитить)
- kubeconfig уже сохранялся роль k3s (k3s_kubeconfig_local_path: "./kubeconfig")

Автоматическая ротация сертификатов K3S (роль k3s-certs):
- K3S выпускает сертификаты на 1 год (hardcoded), таймер обеспечивает их обновление
- скрипт k3s-cert-check.sh: проверяет срок через openssl, ротирует при k3s_cert_rotate_before_days
- systemd service + timer: запуск по расписанию k3s_cert_check_schedule (по умолчанию monthly)
- RandomizedDelaySec: снижает нагрузку при одновременном запуске на нескольких нодах
- переменные: k3s_cert_validity_years: 5, k3s_cert_rotate_before_days: 90
- добавлен в site.yml (тег certs) и отдельный плейбук playbooks/k3s-certs.yml
- make k3s-certs и команда k3s-certs в entrypoint.sh
2026-04-24 07:00:18 +03:00

61 lines
2.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
# ─────────────────────────────────────────────────────────────────────────────
# Восстановление etcd из снимка
# ВНИМАНИЕ: останавливает K3S на ВСЕХ нодах и восстанавливает данные!
#
# Запуск: make etcd-restore SNAPSHOT=k3s-etcd-20250101T120000.db
# make etcd-list-snapshots — посмотреть доступные снимки
# ─────────────────────────────────────────────────────────────────────────────
- name: List available etcd snapshots
hosts: "{{ groups['k3s_master'][0] }}"
gather_facts: false
become: true
tags: [etcd, list]
tasks:
- name: List snapshots
ansible.builtin.command: k3s etcd-snapshot ls
register: snap_list
changed_when: false
- ansible.builtin.debug:
msg: "{{ snap_list.stdout_lines }}"
- name: Restore etcd snapshot
hosts: "{{ groups['k3s_master'][0] }}"
gather_facts: true
become: true
tags: [etcd, restore]
serial: 1
vars:
etcd_restore_snapshot: "{{ lookup('env', 'SNAPSHOT') }}"
etcd_restore_force: "{{ lookup('env', 'FORCE') | default(false, true) | bool }}"
tasks:
- name: Run etcd restore
ansible.builtin.include_tasks: roles/etcd/tasks/restore.yml
- name: Restart k3s on remaining master nodes
hosts: k3s_master
gather_facts: false
become: true
tags: [etcd, restore]
tasks:
- name: Start k3s (skip first master — already running)
ansible.builtin.systemd:
name: k3s
state: started
when: inventory_hostname != groups['k3s_master'][0]
failed_when: false
- name: Restart k3s-agent on worker nodes
hosts: k3s_workers
gather_facts: false
become: true
tags: [etcd, restore]
tasks:
- name: Start k3s-agent on workers
ansible.builtin.systemd:
name: k3s-agent
state: started
failed_when: false