feat: список пользователей cluster_service_users + роль chrony для синхронизации времени
Список пользователей (cluster_service_users): - заменяет отдельные k8s_service_user и devops_service_user переменные - поддерживает неограниченное число пользователей — добавь строку в список - каждый пользователь: name, comment, shell, sudo, key_type, key_bits, key_comment, ssh_dir - playbooks/k8s-user.yml полностью переработан — все plays используют loop: cluster_service_users - generate_keys/distribute_keys/create_user вызываются через include_role + vars - .gitignore: keys/*_id_rsa (паттерн вместо перечисления конкретных имён) Роль chrony — синхронизация времени: - устанавливается ПЕРЕД k3s как обязательный компонент (добавлена в site.yml play 0) - часовой пояс: chrony_timezone: "Europe/Moscow" (переопределяется в group_vars) - NTP серверы: pool.ntp.org (настраиваемые через chrony_ntp_servers) - community.general.timezone: идемпотентная установка TZ - chronyc makestep: принудительная синхронизация при первом деплое - устанавливается также на lab_hosts в playbooks/k8s-user.yml - make chrony — отдельная цель для переустановки/смены TZ (make chrony TZ=UTC) - команда chrony в entrypoint.sh
This commit is contained in:
17
roles/chrony/defaults/main.yml
Normal file
17
roles/chrony/defaults/main.yml
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
# ─── chrony — синхронизация времени ──────────────────────────────────────────
|
||||
|
||||
# Часовой пояс (формат IANA: Europe/Moscow, UTC, Asia/Novosibirsk, и т.д.)
|
||||
chrony_timezone: "Europe/Moscow"
|
||||
|
||||
# NTP серверы (iburst — быстрая первоначальная синхронизация)
|
||||
chrony_ntp_servers:
|
||||
- 0.pool.ntp.org
|
||||
- 1.pool.ntp.org
|
||||
- 2.pool.ntp.org
|
||||
- 3.pool.ntp.org
|
||||
|
||||
# Максимальный шаг коррекции при старте (секунды) — важно для k8s кластера
|
||||
# Слишком большое расхождение времени нарушает работу TLS и etcd
|
||||
chrony_makestep_threshold: 1.0
|
||||
chrony_makestep_limit: 3
|
||||
6
roles/chrony/handlers/main.yml
Normal file
6
roles/chrony/handlers/main.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
- name: restart chrony
|
||||
ansible.builtin.systemd:
|
||||
name: chrony
|
||||
state: restarted
|
||||
become: true
|
||||
47
roles/chrony/tasks/main.yml
Normal file
47
roles/chrony/tasks/main.yml
Normal file
@@ -0,0 +1,47 @@
|
||||
---
|
||||
- name: Install chrony
|
||||
ansible.builtin.apt:
|
||||
name: chrony
|
||||
state: present
|
||||
update_cache: false
|
||||
become: true
|
||||
|
||||
- name: Set system timezone
|
||||
community.general.timezone:
|
||||
name: "{{ chrony_timezone }}"
|
||||
become: true
|
||||
notify: restart chrony
|
||||
|
||||
- name: Deploy chrony configuration
|
||||
ansible.builtin.template:
|
||||
src: chrony.conf.j2
|
||||
dest: /etc/chrony/chrony.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
backup: true
|
||||
become: true
|
||||
notify: restart chrony
|
||||
|
||||
- name: Enable and start chrony service
|
||||
ansible.builtin.systemd:
|
||||
name: chrony
|
||||
enabled: true
|
||||
state: started
|
||||
become: true
|
||||
|
||||
- name: Force immediate time synchronization
|
||||
ansible.builtin.command: chronyc makestep
|
||||
become: true
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
|
||||
- name: Show synchronization status
|
||||
ansible.builtin.command: chronyc tracking
|
||||
register: chrony_tracking
|
||||
changed_when: false
|
||||
become: true
|
||||
|
||||
- name: Display time sync status
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ chrony_tracking.stdout_lines }}"
|
||||
11
roles/chrony/templates/chrony.conf.j2
Normal file
11
roles/chrony/templates/chrony.conf.j2
Normal file
@@ -0,0 +1,11 @@
|
||||
# Managed by Ansible — не редактируй вручную
|
||||
# K3S Cluster — Time Synchronization (chrony)
|
||||
|
||||
{% for server in chrony_ntp_servers %}
|
||||
server {{ server }} iburst
|
||||
{% endfor %}
|
||||
|
||||
driftfile /var/lib/chrony/drift
|
||||
makestep {{ chrony_makestep_threshold }} {{ chrony_makestep_limit }}
|
||||
rtcsync
|
||||
logdir /var/log/chrony
|
||||
Reference in New Issue
Block a user