Проблема с Ansible при запуске exe-файла через win_command

Проблема с Ansible при запуске exe-файла через win_command

В настоящее время я пишу руководство по удалению Fusion Inventory Agent и последующему развертыванию GLPI agent 1.4 на Windows Server 2016-2022. Для всех тестов, которые я подробно опишу ниже, я использую свою учетную запись домена, которая имеет права администратора на всех серверах.

(Я запускаю ansible core 2.12.10 + python 3.9.2 на недавно обновленном Debian 11)

  • Путь реестра для удаления агента Fusion Inventory находится по адресу, "C:\Program Files\FusionInventory-Agent\Uninstall.exe"поэтому, если я запущу его вручную из cmd/powershell с /Sопцией, я получу всплывающее окно UAC «Да/Нет», и если я нажму «Да», агент будет удален.

  • Теперь, если я щелкну правой кнопкой мыши и запущу от имени администратора мой cmd/powershell.exe, я смогу "C:\Program Files\FusionInventory-Agent\Uninstall.exe /S"легко запустить его без UAC, это нормально.

С точки зрения Ansible, если я использую следующую задачу:

  tasks:
  - name: uninstall fusion inventory agent through cmd
    ansible.windows.win_command: '"C:\Program Files\FusionInventory-Agent\Uninstall.exe" "/S"'
    become: yes
    become_user: my_domain_account
    become_method: runas
    register: fusion_agent_out

Это звучит так:

Using module file /usr/lib/python3/dist-packages/ansible_collections/ansible/windows/plugins/modules/win_command.ps1
Pipelining is enabled.
<frhd01inp009> ESTABLISH WINRM CONNECTION FOR USER: mydomain_account@my_domain on PORT 5985 TO my_server
EXEC (via pipeline wrapper)
changed: [server_name] => {
    "changed": true,
    "cmd": "\"C:\\Program Files\\FusionInventory-Agent\\Uninstall.exe\" \"/S\"",
    "delta": "0:00:00.468425",
    "end": "2022-11-24 16:32:12.065029",
    "rc": 0,
    "start": "2022-11-24 16:32:11.596603",
    "stderr": "",
    "stderr_lines": [],
    "stdout": "",
    "stdout_lines": []
}

НО на самом деле он ничего не удаляет, похоже, Ansible успешно запускает команду, но не получает результат.

Я также пробовал разные вещи, чтобы проверить, меняет ли это что-то (запускал powershell.exe из cmd, из psexec ...), но результаты не удались или «изменились», но uninstall.exe не запускается, как должно быть.

Как с точки зрения Ansible справиться с таким типом удаления?

С наилучшими пожеланиями

Гаэль

решение1

В конце концов я пришел к другому решению: просто создал запланированную задачу Windows (все еще используя ansible) для запуска деинсталлятора и нужной мне опции, затем указал имя пользователя, триггер и запустил ее один раз.

Это обходной путь, но работает довольно хорошо.

Связанный контент