Загрузка данных


---
# Плейбук: копирование файлов, замена ключа KESL, импорт расписания задачи, рестарт службы
- name: Обновление ключа и расписания KESL
  hosts: kesl_clients
  become: true
  vars:
    src_folder: "/path/to/local/kesl_files"        # локальная папка (на управляющей машине)
    dest_folder: "/tmp/kesl_files"                  # куда копируем на клиенте
    key_file: "new.key"                              # имя файла ключа внутри dest_folder
    schedule_file: "schedule.ini"                     # файл параметров расписания внутри dest_folder
    schedule_task_id: 6                                # ID задачи (у тебя 6)
    kesl_service: "kesl"                               # имя службы, поправь если отличается

  tasks:
    - name: Создать целевую папку на клиенте
      ansible.builtin.file:
        path: "{{ dest_folder }}"
        state: directory
        mode: "0750"

    - name: Скопировать папку с файлами на клиент
      ansible.builtin.copy:
        src: "{{ src_folder }}/"
        dest: "{{ dest_folder }}/"
        mode: preserve

    - name: Удалить старый активный ключ KESL
      ansible.builtin.command:
        cmd: kesl-control --remove-active-key
      register: remove_key_result
      failed_when:
        - remove_key_result.rc != 0
        - "'not found' not in remove_key_result.stderr | default('') | lower"
      changed_when: remove_key_result.rc == 0

    - name: Активировать новый ключ из скопированной папки
      ansible.builtin.command:
        cmd: "kesl-control --install-active-key {{ dest_folder }}/{{ key_file }}"
      register: install_key_result
      changed_when: install_key_result.rc == 0

    - name: Импортировать расписание задачи из файла
      ansible.builtin.command:
        cmd: "kesl-control -T --set-schedule {{ schedule_task_id }} --file {{ dest_folder }}/{{ schedule_file }}"
      register: set_schedule_result
      changed_when: set_schedule_result.rc == 0

    - name: Перезапустить службу kesl
      ansible.builtin.systemd:
        name: "{{ kesl_service }}"
        state: restarted