diff --git a/playbooks/install_software_win.yml b/playbooks/install_software_win.yml index 87ddf91..547fbe3 100644 --- a/playbooks/install_software_win.yml +++ b/playbooks/install_software_win.yml @@ -3,45 +3,47 @@ hosts: windows gather_facts: no - # Если коллекции не подтягиваются автоматически, раскомментируйте: - # collections: - # - community.windows - # - ansible.windows + # Не забываем про коллекции, если они нужны + collections: + - community.windows + - ansible.windows vars: drive_letter: "Z" - # Остальные переменные (smb_user, smb_pass, smb_path) ждем из Semaphore + # smb_user, smb_pass, smb_path приходят из Semaphore Environment tasks: - # 1. Монтируем диск + # 1. СНАЧАЛА УДАЛЯЕМ ДИСК (Принудительная зачистка) + # Это гарантирует, что старые зависшие сессии не помешают + - name: Force unmount Z drive + community.windows.win_mapped_drive: + letter: "{{ drive_letter }}" + state: absent + ignore_errors: yes # Не падать, если диска и так нет + + # 2. ТЕПЕРЬ МОНТИРУЕМ НАЧИСТО - name: Mount Network Drive - ansible.windows.win_mapped_drive: # Или ansible.windows.win_mapped_drive + community.windows.win_mapped_drive: letter: "{{ drive_letter }}" path: "{{ smb_path }}" username: "{{ smb_user }}" password: "{{ smb_pass }}" state: present - - - name: List files on Z drive (Debug) - ansible.windows.win_shell: Get-ChildItem -Path Z:\ - register: dir_out - - - name: Show files - debug: - var: dir_out.stdout_lines - # --- СЮДА ВСТАВЛЯЕМ УСТАНОВКУ --- + # 3. Проверяем файлы (для отладки) + - name: Check file existence + win_stat: + path: "{{ drive_letter }}:\\Stirling-PDF.msi" + register: file_info - # Пример 1: Установка MSI (самый надежный вариант) + # 4. Установка - name: Install Stirling-PDF (MSI) ansible.windows.win_package: - # Важно: путь начинается с буквы диска (Z:) path: "{{ drive_letter }}:\\Stirling-PDF.msi" state: present arguments: /quiet /norestart - # Игнорировать ошибки, если файл не найден (для теста можно убрать) - ignore_errors: no - + when: file_info.stat.exists + # Пример 2: Установка EXE (Notepad++) - name: Install Notepad++ (EXE) ansible.windows.win_package: @@ -50,11 +52,10 @@ # Для EXE ключи тихой установки зависят от установщика (/S, /VERYSILENT и т.д.) arguments: /S product_id: Notepad++ # Помогает Ansible понять, установлен ли софт + when: file_info.stat.exists - # -------------------------------- - - # 3. Отключаем диск + # 5. Уборка - name: Unmount Network Drive - ansible.windows.win_mapped_drive: + community.windows.win_mapped_drive: letter: "{{ drive_letter }}" state: absent \ No newline at end of file