Обновить playbooks/install_software_win.yml
This commit is contained in:
1 parent
e4a3828431
commit
56c73827e9
1 file changed
+31
-26
@@ -23,7 +23,7 @@
|
||||
unc_file: "{{ smb_path | regex_replace('\\\\+$', '') }}\\{{ installer_file }}"
|
||||
|
||||
tasks:
|
||||
- name: Check installer on share and list folder
|
||||
- name: Check installer on share and list folder
|
||||
ansible.windows.win_powershell:
|
||||
parameters:
|
||||
Share: "{{ smb_path }}"
|
||||
@@ -32,35 +32,40 @@
|
||||
File: "{{ installer_file }}"
|
||||
script: |
|
||||
param($Share, $User, $Pass, $File)
|
||||
$ErrorActionPreference = 'Stop'
|
||||
net use $Share /delete /y 2>&1 | Out-Null
|
||||
$out = net use $Share /user:$User $Pass 2>&1
|
||||
if ($LASTEXITCODE -ne 0) { throw "net use failed: $out" }
|
||||
$names = Get-ChildItem -LiteralPath $Share | Select-Object -ExpandProperty Name
|
||||
$Ansible.Result = @{
|
||||
exists = [bool]($names -contains $File)
|
||||
files = $names
|
||||
$ErrorActionPreference = 'Continue'
|
||||
$res = @{ exists = $false; files = @(); error = '' }
|
||||
try {
|
||||
& net.exe use $Share /delete /y 2>&1 | Out-Null
|
||||
$out = & net.exe use $Share "/user:$User" $Pass 2>&1 | Out-String
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
$res.error = "net use failed (code $LASTEXITCODE): $out"
|
||||
} 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
|
||||
}
|
||||
} catch {
|
||||
$res.error = $_.Exception.Message
|
||||
}
|
||||
net use $Share /delete /y 2>&1 | Out-Null
|
||||
$Ansible.Result = $res
|
||||
error_action: continue
|
||||
register: share_check
|
||||
no_log: true
|
||||
failed_when: false
|
||||
|
||||
- name: Show files on share
|
||||
- name: Show share check result
|
||||
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:
|
||||
msg: "Файл {{ installer_file }} не найден в {{ smb_path }}"
|
||||
when: not share_check.result.exists
|
||||
|
||||
- name: Install {{ installer_file }}
|
||||
ansible.windows.win_package:
|
||||
path: "{{ unc_file }}"
|
||||
username: "{{ smb_user }}"
|
||||
password: "{{ smb_pass }}"
|
||||
state: present
|
||||
arguments: "{{ installer_args }}"
|
||||
product_id: "{{ product_id | default(omit) }}"
|
||||
creates_path: "{{ creates_path | default(omit) }}"
|
||||
no_log: true
|
||||
msg: >-
|
||||
{{ 'Ошибка доступа к шаре: ' ~ share_check.result.error
|
||||
if (share_check.result.error | default('')) != ''
|
||||
else 'Файл ' ~ installer_file ~ ' не найден в ' ~ smb_path }}
|
||||
when: >-
|
||||
(share_check.result.error | default('x')) != '' or
|
||||
not (share_check.result.exists | default(false))
|
||||
Reference in new issue
Block a user