Обновить playbooks/install_software_win.yml

This commit is contained in:
2025-12-05 10:48:41 +00:00
parent 3d9a903f7a
commit 1ab1d46c7c

View File

@@ -3,45 +3,47 @@
hosts: windows hosts: windows
gather_facts: no gather_facts: no
# Если коллекции не подтягиваются автоматически, раскомментируйте: # Не забываем про коллекции, если они нужны
# collections: collections:
# - community.windows - community.windows
# - ansible.windows - ansible.windows
vars: vars:
drive_letter: "Z" drive_letter: "Z"
# Остальные переменные (smb_user, smb_pass, smb_path) ждем из Semaphore # smb_user, smb_pass, smb_path приходят из Semaphore Environment
tasks: 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 - name: Mount Network Drive
ansible.windows.win_mapped_drive: # Или ansible.windows.win_mapped_drive community.windows.win_mapped_drive:
letter: "{{ drive_letter }}" letter: "{{ drive_letter }}"
path: "{{ smb_path }}" path: "{{ smb_path }}"
username: "{{ smb_user }}" username: "{{ smb_user }}"
password: "{{ smb_pass }}" password: "{{ smb_pass }}"
state: present 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) - name: Install Stirling-PDF (MSI)
ansible.windows.win_package: ansible.windows.win_package:
# Важно: путь начинается с буквы диска (Z:)
path: "{{ drive_letter }}:\\Stirling-PDF.msi" path: "{{ drive_letter }}:\\Stirling-PDF.msi"
state: present state: present
arguments: /quiet /norestart arguments: /quiet /norestart
# Игнорировать ошибки, если файл не найден (для теста можно убрать) when: file_info.stat.exists
ignore_errors: no
# Пример 2: Установка EXE (Notepad++) # Пример 2: Установка EXE (Notepad++)
- name: Install Notepad++ (EXE) - name: Install Notepad++ (EXE)
ansible.windows.win_package: ansible.windows.win_package:
@@ -50,11 +52,10 @@
# Для EXE ключи тихой установки зависят от установщика (/S, /VERYSILENT и т.д.) # Для EXE ключи тихой установки зависят от установщика (/S, /VERYSILENT и т.д.)
arguments: /S arguments: /S
product_id: Notepad++ # Помогает Ansible понять, установлен ли софт product_id: Notepad++ # Помогает Ansible понять, установлен ли софт
when: file_info.stat.exists
# -------------------------------- # 5. Уборка
# 3. Отключаем диск
- name: Unmount Network Drive - name: Unmount Network Drive
ansible.windows.win_mapped_drive: community.windows.win_mapped_drive:
letter: "{{ drive_letter }}" letter: "{{ drive_letter }}"
state: absent state: absent