pbezpal5
(Pavel)
01.Июнь.2020 16:15:11
#1
Всем привет! Стоит задача, сделать deploy программы на Windows 10. Сама программа собирается на linux + wine, поэтому решил выбрать в качестве аркестрации инструмент ansible. Удалось выполнить следующее:
подключиться при помощи winrm к Windows
Далее выполняется таска по удалению ПО на Windows
Playbool
---
- name: Windows install roschat client
hosts: windows
tasks:
- name: Uninstall roschat
win_package:
path: C:\Program Files\roschat\Uninstall РосЧат.exe
productid: "56e2ec90-1579-5edf-8225-77cb72eed1a1"
arguments: /allusers
state: absent
В реестре Windows пути и аргументы похожи
Сценарий выполняется без ошибок, но сама программа не удаляется
Результат выполнения Ansible
pbezpal@devops:/etc/ansible/windows/playbooks$ sudo ansible-playbook -i /etc/ansible/windows/hosts /etc/ansible/windows/playbooks/windows.yml
PLAY [Example] **************************************************************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************************************************************
ok: [10.10.225.189]
TASK [Uninstall roschat] ****************************************************************************************************************************************************
changed: [10.10.225.189]
PLAY RECAP ******************************************************************************************************************************************************************
10.10.225.189 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Делал по официальной документации Ansible. Может кто сталкивался с такой проблемой?
Noksa
(Alexandr D.)
01.Июнь.2020 16:26:21
#2
Путь с пробелом, попробуйте в кавычки его взять.
1 лайк
pbezpal5
(Pavel)
01.Июнь.2020 16:37:50
#3
Взял путь в одинарные кавычки, но результат тот же(
Noksa
(Alexandr D.)
01.Июнь.2020 17:16:28
#4
А так?
"C:\\Program Files\\roschat\\Uninstall РосЧат.exe"
Обязательно двойные поставьте.
1 лайк
pbezpal5
(Pavel)
01.Июнь.2020 17:45:59
#5
Не помогло. Но при запуске удаления программы вижу такой процесс
Не знаю влияет ли это как-то на удаление
Noksa
(Alexandr D.)
01.Июнь.2020 17:47:52
#6
А в журнал событий винды не смотрели?
Если там ничего нет, попробуйте запускать плэйбук с ключами:
-v
-vv
-vvv
-vvvv
Наверняка там будет подробное описание что произошло и что не произошло и почему. Соответственно если -v недостаточно, то прибавляем ещё один и так до самого подробного лога.
1 лайк
pbezpal5
(Pavel)
01.Июнь.2020 17:53:12
#7
TASK [Uninstall roschat] ****************************************************************************************************************************************************
task path: /etc/ansible/windows/playbooks/windows.yml:16
Using module file /usr/lib/python3/dist-packages/ansible/modules/windows/win_package.ps1
Pipelining is enabled.
<10.10.225.189> ESTABLISH WINRM CONNECTION FOR USER: bezpa on PORT 5986 TO 10.10.225.189
EXEC (via pipeline wrapper)
changed: [10.10.225.189] => {
"changed": true,
"rc": 0,
"reboot_required": false
}
META: ran handlers
META: ran handlers
Похоже ничего не происходит((( Но почему, пока не понимаю
Noksa
(Alexandr D.)
01.Июнь.2020 18:03:15
#8
А какие-то команды ансиблом выполняются на этой машине вообще?
1 лайк
pbezpal5
(Pavel)
01.Июнь.2020 18:04:51
#9
Только эта. Пробовал на другой, но результат такой же
Noksa
(Alexandr D.)
01.Июнь.2020 18:08:44
#10
Я бы проверил, что там вообще хоть какая-нибудь команда выполняется.
Ну например создание файла.
Может проблема глобальная.
1 лайк
pbezpal5
(Pavel)
01.Июнь.2020 18:13:29
#11
Создание директории и копирование файла с ftp работают.
TASK [Create directory] *****************************************************************************************************************************************************
task path: /etc/ansible/windows/playbooks/windows.yml:6
Using module file /usr/lib/python3/dist-packages/ansible/modules/windows/win_file.ps1
Pipelining is enabled.
<10.10.225.189> ESTABLISH WINRM CONNECTION FOR USER: bezpa on PORT 5986 TO 10.10.225.189
EXEC (via pipeline wrapper)
ok: [10.10.225.189] => {
"changed": false
}
TASK [Get exe file from ftp] ************************************************************************************************************************************************
task path: /etc/ansible/windows/playbooks/windows.yml:11
Using module file /usr/lib/python3/dist-packages/ansible/modules/windows/win_get_url.ps1
Pipelining is enabled.
<10.10.225.189> ESTABLISH WINRM CONNECTION FOR USER: bezpa on PORT 5986 TO 10.10.225.189
EXEC (via pipeline wrapper)
ok: [10.10.225.189] => {
"changed": false,
"checksum_dest": "9485bcd92f6d4105bae6be68f0d4ff783187829f",
"checksum_src": "9485bcd92f6d4105bae6be68f0d4ff783187829f",
"dest": "d:\\roschat\\roschat-0.1.1143.x64.exe",
"elapsed": 20.4435522,
"invocation": {
"module_args": {
"checksum": null,
"checksum_algorithm": "sha1",
"checksum_url": null,
"dest": "d:\\roschat",
"force": true,
"force_basic_auth": false,
"headers": {},
"proxy_password": null,
"proxy_url": null,
"proxy_username": null,
"timeout": 10,
"url": "ftp://10.10.199.31/releases/RosChat/client/roschat-client/01.06.2020_10%3A27_0.1-1143/windows/x64/roschat-0.1.1143.x64.exe",
"url_password": null,
"url_username": null,
"use_proxy": true,
"validate_certs": true
}
},
"msg": "226 Transfer complete.\r\n",
"size": 62128920,
"status_code": 226,
"url": "ftp://10.10.199.31/releases/RosChat/client/roschat-client/01.06.2020_10%3A27_0.1-1143/windows/x64/roschat-0.1.1143.x64.exe"
}
Noksa
(Alexandr D.)
01.Июнь.2020 18:16:53
#12
Окей, попробуйте поменять ваш product_id
на такой:
'{56e2ec90-1579-5edf-8225-77cb72eed1a1}'
(с одинарными кавычками)
Хотя это вряд ли поможет, конечно. Но может хотя бы ошибка будет =)
1 лайк
Noksa
(Alexandr D.)
01.Июнь.2020 18:18:48
#13
Либо просто поменяйте в том, что у вас написано - двойные кавычки на одинарные.
1 лайк
Noksa
(Alexandr D.)
01.Июнь.2020 18:20:24
#14
Ещё как вариант попробуйте вообще убрать product_id
, раз у вас и так указан путь уже.
1 лайк
pbezpal5
(Pavel)
01.Июнь.2020 18:28:10
#15
Без product_id ругается
TASK [Uninstall roschat] ****************************************************************************************************************************************************
task path: /etc/ansible/windows/playbooks/windows.yml:16
Using module file /usr/lib/python3/dist-packages/ansible/modules/windows/win_package.ps1
Pipelining is enabled.
<10.10.225.189> ESTABLISH WINRM CONNECTION FOR USER: bezpa on PORT 5986 TO 10.10.225.189
EXEC (via pipeline wrapper)
fatal: [10.10.225.189]: FAILED! => {
"changed": false,
"msg": "product_id is required when the path is not an MSI or the path is an MSI but not local",
"reboot_required": false
}
Все предложенные варианты тоже не помогают(
Может через Ansible нельзя удалить софт, который установлен был установлен вручную?
pbezpal5
(Pavel)
01.Июнь.2020 18:38:14
#16
Поменял playbook
- name: Uninstall roschat
win_package:
productid: '56e2ec90-1579-5edf-8225-77cb72eed1a1'
state: absent
Так ругается
TASK [Uninstall roschat] ****************************************************************************************************************************************************
task path: /etc/ansible/windows/playbooks/windows.yml:16
Using module file /usr/lib/python3/dist-packages/ansible/modules/windows/win_package.ps1
Pipelining is enabled.
<10.10.225.189> ESTABLISH WINRM CONNECTION FOR USER: bezpa on PORT 5986 TO 10.10.225.189
EXEC (via pipeline wrapper)
fatal: [10.10.225.189]: FAILED! => {
"changed": false,
"msg": "failed to run uninstall process (\"\\\"C:\\Program Files\\roschat\\Uninstall РосЧат.exe\\\" /allusers\"): Exception calling \"SearchPath\" with \"1\" argument(s): \"Could not find file '\\.exe'.\"",
"reboot_required": false
}
Noksa
(Alexandr D.)
01.Июнь.2020 19:12:31
#18
Ну вы можете попробовать в реестре переименовать файл с кириллицей, чтобы он был без неё.
И поменять путь.
Вполне вероятно.
1 лайк
BabyRoot
(Vasily)
01.Июнь.2020 20:19:43
#19
А какой версии ансибл-то? Вы же с линуксов его запускаете?
Я не в курсе, а на винде для него надо что-нить ставить?
1 лайк
Noksa
(Alexandr D.)
01.Июнь.2020 20:20:41
#20
Там PS скрипт есть, который всё что надо делает.
1 лайк