Организация плейбуков: - все .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
102 lines
2.7 KiB
YAML
102 lines
2.7 KiB
YAML
---
|
||
# Полное удаление всего стека
|
||
# Порядок: обратный установке
|
||
# Запуск: ansible-playbook uninstall.yml
|
||
|
||
- name: Confirm uninstall
|
||
hosts: localhost
|
||
gather_facts: false
|
||
tasks:
|
||
- name: Ask for confirmation
|
||
ansible.builtin.pause:
|
||
prompt: |
|
||
⚠️ ВНИМАНИЕ! Будут удалены: ingress-nginx, CSI NFS, kube-vip, K3S и ВСЕ данные.
|
||
Введите 'yes' для подтверждения
|
||
register: confirm
|
||
when: confirm_uninstall is not defined
|
||
|
||
- name: Abort if not confirmed
|
||
ansible.builtin.fail:
|
||
msg: "Отменено."
|
||
when:
|
||
- confirm_uninstall is not defined
|
||
- confirm.user_input != 'yes'
|
||
|
||
- name: Remove ingress-nginx
|
||
hosts: k3s_master
|
||
gather_facts: false
|
||
become: true
|
||
tags: [ingress_nginx]
|
||
tasks:
|
||
- name: Uninstall ingress-nginx Helm release
|
||
ansible.builtin.command: >
|
||
helm uninstall ingress-nginx -n ingress-nginx
|
||
failed_when: false
|
||
changed_when: true
|
||
environment:
|
||
KUBECONFIG: "{{ k3s_kubeconfig_path }}"
|
||
|
||
- name: Delete ingress-nginx namespace
|
||
ansible.builtin.command: k3s kubectl delete namespace ingress-nginx --ignore-not-found
|
||
changed_when: true
|
||
|
||
- name: Remove CSI NFS Driver
|
||
hosts: k3s_master
|
||
gather_facts: false
|
||
become: true
|
||
tags: [csi_nfs]
|
||
tasks:
|
||
- name: Uninstall CSI NFS Helm release
|
||
ansible.builtin.command: >
|
||
helm uninstall csi-driver-nfs -n kube-system
|
||
failed_when: false
|
||
changed_when: true
|
||
environment:
|
||
KUBECONFIG: "{{ k3s_kubeconfig_path }}"
|
||
|
||
- name: Delete NFS StorageClass
|
||
ansible.builtin.command: >
|
||
k3s kubectl delete storageclass nfs-client --ignore-not-found
|
||
changed_when: true
|
||
|
||
- name: Remove kube-vip
|
||
hosts: k3s_master
|
||
gather_facts: false
|
||
become: true
|
||
tags: [kube_vip]
|
||
tasks:
|
||
- name: Remove kube-vip manifests
|
||
ansible.builtin.file:
|
||
path: "{{ item }}"
|
||
state: absent
|
||
loop:
|
||
- "{{ k3s_data_dir }}/server/manifests/kube-vip.yaml"
|
||
- "{{ k3s_data_dir }}/server/manifests/kube-vip-rbac.yaml"
|
||
|
||
- name: Uninstall K3S workers
|
||
hosts: k3s_workers
|
||
gather_facts: true
|
||
become: true
|
||
tags: [k3s]
|
||
tasks:
|
||
- ansible.builtin.include_role:
|
||
name: k3s
|
||
tasks_from: uninstall
|
||
|
||
- name: Uninstall K3S master
|
||
hosts: k3s_master
|
||
gather_facts: true
|
||
become: true
|
||
tags: [k3s]
|
||
tasks:
|
||
- ansible.builtin.include_role:
|
||
name: k3s
|
||
tasks_from: uninstall
|
||
|
||
- name: Done
|
||
hosts: localhost
|
||
gather_facts: false
|
||
tasks:
|
||
- ansible.builtin.debug:
|
||
msg: "✓ Весь стек удалён."
|