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

This commit is contained in:
ogrechko committed 2026-10-02 12:12:10 +03:00
1 parent e4a3828431
commit 56c73827e9
1 file changed
+30 -25
+30 -25
View File
@@ -32,35 +32,40 @@
File: "{{ installer_file }}" File: "{{ installer_file }}"
script: | script: |
param($Share, $User, $Pass, $File) param($Share, $User, $Pass, $File)
$ErrorActionPreference = 'Stop' $ErrorActionPreference = 'Continue'
net use $Share /delete /y 2>&1 | Out-Null $res = @{ exists = $false; files = @(); error = '' }
$out = net use $Share /user:$User $Pass 2>&1 try {
if ($LASTEXITCODE -ne 0) { throw "net use failed: $out" } & net.exe use $Share /delete /y 2>&1 | Out-Null
$names = Get-ChildItem -LiteralPath $Share | Select-Object -ExpandProperty Name $out = & net.exe use $Share "/user:$User" $Pass 2>&1 | Out-String
$Ansible.Result = @{ if ($LASTEXITCODE -ne 0) {
exists = [bool]($names -contains $File) $res.error = "net use failed (code $LASTEXITCODE): $out"
files = $names } else {
$names = @(Get-ChildItem -LiteralPath $Share -ErrorAction Stop | Select-Object -ExpandProperty Name)
$res.files = $names
$res.exists = [bool]($names -contains $File)
& net.exe use $Share /delete /y 2>&1 | Out-Null
} }
net use $Share /delete /y 2>&1 | Out-Null } catch {
$res.error = $_.Exception.Message
}
$Ansible.Result = $res
error_action: continue
register: share_check register: share_check
no_log: true no_log: true
failed_when: false
- name: Show files on share - name: Show share check result
ansible.builtin.debug: ansible.builtin.debug:
var: share_check.result.files msg:
error: "{{ share_check.result.error | default(share_check.msg | default('нет данных')) }}"
files: "{{ share_check.result.files | default([]) }}"
- name: Fail if installer not found - name: Fail if share unavailable or file missing
ansible.builtin.fail: ansible.builtin.fail:
msg: "Файл {{ installer_file }} не найден в {{ smb_path }}" msg: >-
when: not share_check.result.exists {{ 'Ошибка доступа к шаре: ' ~ share_check.result.error
if (share_check.result.error | default('')) != ''
- name: Install {{ installer_file }} else 'Файл ' ~ installer_file ~ ' не найден в ' ~ smb_path }}
ansible.windows.win_package: when: >-
path: "{{ unc_file }}" (share_check.result.error | default('x')) != '' or
username: "{{ smb_user }}" not (share_check.result.exists | default(false))
password: "{{ smb_pass }}"
state: present
arguments: "{{ installer_args }}"
product_id: "{{ product_id | default(omit) }}"
creates_path: "{{ creates_path | default(omit) }}"
no_log: true