Обновить playbooks/install_software_win.yml
This commit is contained in:
1 parent
cda39fc1f9
commit
64316ed83c
1 file changed
+41
-40
@@ -1,28 +1,41 @@
|
|||||||
---
|
---
|
||||||
- name: Install Software from SMB
|
- name: Prepare target host
|
||||||
hosts: windows
|
hosts: localhost
|
||||||
gather_facts: no
|
gather_facts: no
|
||||||
|
tasks:
|
||||||
# Не забываем про коллекции, если они нужны
|
- name: Add target host from survey
|
||||||
|
ansible.builtin.add_host:
|
||||||
|
name: "{{ target_ip }}"
|
||||||
|
groups: dynamic_windows
|
||||||
|
ansible_connection: winrm
|
||||||
|
ansible_port: "{{ winrm_port | default(5985) }}"
|
||||||
|
ansible_winrm_transport: "{{ winrm_transport | default('ntlm') }}"
|
||||||
|
ansible_winrm_server_cert_validation: ignore
|
||||||
|
ansible_user: "{{ win_user }}"
|
||||||
|
ansible_password: "{{ win_pass }}"
|
||||||
|
|
||||||
|
- name: Install Software from SMB
|
||||||
|
hosts: dynamic_windows
|
||||||
|
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 Environment
|
# target_ip, installer_file приходят из Survey
|
||||||
|
# smb_user, smb_pass, smb_path, win_user, win_pass приходят из Environment
|
||||||
|
installer_args: "/S" # можно переопределить в Survey
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
# 1. СНАЧАЛА УДАЛЯЕМ ДИСК (Принудительная зачистка)
|
- name: Force unmount drive
|
||||||
# Это гарантирует, что старые зависшие сессии не помешают
|
|
||||||
- name: Force unmount Z drive
|
|
||||||
community.windows.win_mapped_drive:
|
community.windows.win_mapped_drive:
|
||||||
letter: "{{ drive_letter }}"
|
letter: "{{ drive_letter }}"
|
||||||
state: absent
|
state: absent
|
||||||
ignore_errors: yes # Не падать, если диска и так нет
|
ignore_errors: yes
|
||||||
|
|
||||||
# 2. ТЕПЕРЬ МОНТИРУЕМ НАЧИСТО
|
- name: Mount network drive
|
||||||
- name: Mount Network Drive
|
|
||||||
community.windows.win_mapped_drive:
|
community.windows.win_mapped_drive:
|
||||||
letter: "{{ drive_letter }}"
|
letter: "{{ drive_letter }}"
|
||||||
path: "{{ smb_path }}"
|
path: "{{ smb_path }}"
|
||||||
@@ -30,39 +43,27 @@
|
|||||||
password: "{{ smb_pass }}"
|
password: "{{ smb_pass }}"
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
# 3. Проверяем файлы (для отладки)
|
- name: Check installer exists
|
||||||
- name: Check file existence
|
ansible.windows.win_stat:
|
||||||
win_stat:
|
path: "{{ drive_letter }}:\\{{ installer_file }}"
|
||||||
path: "{{ drive_letter }}:\\freecad.exe"
|
|
||||||
register: file_info
|
register: file_info
|
||||||
|
|
||||||
# 4. Установка
|
- name: Fail if installer not found
|
||||||
#- name: Install Stirling-PDF (MSI)
|
ansible.builtin.fail:
|
||||||
# ansible.windows.win_package:
|
msg: "Файл {{ installer_file }} не найден в {{ smb_path }}"
|
||||||
# path: "{{ drive_letter }}:\\Stirling-PDF.msi"
|
when: not file_info.stat.exists
|
||||||
# state: present
|
|
||||||
# arguments: /quiet /norestart
|
|
||||||
# when: file_info.stat.exists
|
|
||||||
|
|
||||||
# Пример 2: Установка EXE (mango)
|
|
||||||
#- name: Install mango (EXE)
|
|
||||||
# ansible.windows.win_package:
|
|
||||||
# path: "{{ drive_letter }}:\\mango.exe"
|
|
||||||
# state: present
|
|
||||||
# Для EXE ключи тихой установки зависят от установщика (/S, /VERYSILENT и т.д.)
|
|
||||||
# arguments: /--silent
|
|
||||||
# product_id: mango # Помогает Ansible понять, установлен ли софт
|
|
||||||
|
|
||||||
- name: Install freecad (EXE)
|
- name: Install {{ installer_file }}
|
||||||
ansible.windows.win_package:
|
ansible.windows.win_package:
|
||||||
path: "{{ drive_letter }}:\\freecad.exe"
|
path: "{{ drive_letter }}:\\{{ installer_file }}"
|
||||||
state: present
|
state: present
|
||||||
# Для EXE ключи тихой установки зависят от установщика (/S, /VERYSILENT и т.д.)
|
arguments: "{{ installer_args }}"
|
||||||
arguments: /--silent
|
product_id: "{{ product_id | default(omit) }}"
|
||||||
product_id: mango
|
creates_path: "{{ creates_path | default(omit) }}"
|
||||||
|
|
||||||
# 5. Уборка
|
post_tasks:
|
||||||
- name: Unmount Network Drive
|
- name: Unmount network drive
|
||||||
community.windows.win_mapped_drive:
|
community.windows.win_mapped_drive:
|
||||||
letter: "{{ drive_letter }}"
|
letter: "{{ drive_letter }}"
|
||||||
state: absent
|
state: absent
|
||||||
|
ignore_errors: yes
|
||||||
Reference in new issue
Block a user