Files
K3S/roles/k3s-certs/tasks/main.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

58 lines
1.3 KiB
YAML

---
- name: Skip cert rotation if not enabled
ansible.builtin.meta: end_play
when: not k3s_cert_auto_rotate | bool
- name: Deploy cert check script
ansible.builtin.template:
src: k3s-cert-check.sh.j2
dest: /usr/local/bin/k3s-cert-check.sh
owner: root
group: root
mode: '0755'
become: true
- name: Deploy cert check systemd service
ansible.builtin.template:
src: k3s-cert-check.service.j2
dest: /etc/systemd/system/k3s-cert-check.service
owner: root
group: root
mode: '0644'
become: true
notify: reload systemd
- name: Deploy cert check systemd timer
ansible.builtin.template:
src: k3s-cert-check.timer.j2
dest: /etc/systemd/system/k3s-cert-check.timer
owner: root
group: root
mode: '0644'
become: true
notify:
- reload systemd
- enable cert timer
- name: Reload systemd daemon
ansible.builtin.systemd:
daemon_reload: true
become: true
- name: Enable and start cert rotation timer
ansible.builtin.systemd:
name: k3s-cert-check.timer
enabled: true
state: started
become: true
- name: Show timer status
ansible.builtin.command: systemctl status k3s-cert-check.timer --no-pager
register: timer_status
changed_when: false
become: true
- name: Display timer info
ansible.builtin.debug:
msg: "{{ timer_status.stdout_lines }}"