Problema Ansible ao iniciar um exe através do win_command

Problema Ansible ao iniciar um exe através do win_command

Atualmente estou escrevendo um manual sobre como desinstalar o Fusion Inventory Agent e, em seguida, implantar o agente GLPI 1.4 no Windows Server 2016-2022. Para todos os testes detalhados abaixo, uso minha conta de domínio que possui direitos de administrador em qualquer servidor.

(Eu executo o ansible core 2.12.10 + python 3.9.2 em um Debian 11 recém-atualizado)

  • O caminho do registro do desinstalador do agente Fusion Inventory está localizado em, "C:\Program Files\FusionInventory-Agent\Uninstall.exe"portanto, se eu executá-lo manualmente a partir do cmd/powershell com /Sa opção, recebo um pop-up Sim/Não do UAC e, portanto, desinstalo o agente se pressionar Sim.

  • Agora, se eu clicar com o botão direito e executar como administrador em meu cmd/powershell.exe, posso iniciar "C:\Program Files\FusionInventory-Agent\Uninstall.exe /S"facilmente sem o UAC, é normal.

De uma perspectiva Ansible, se eu usar a seguinte tarefa:

  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

É assim:

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": []
}

MAS, na verdade, ele não desinstala nada, parece que o Ansible inicia o comando com sucesso, mas não captura o resultado.

Também tentei coisas diferentes para verificar se isso muda alguma coisa (iniciar o powershell.exe no cmd, do psexec ...), mas os resultados falham ou "alteraram", mas não inicia o unlock.exe como deveria.

Do ponto de vista do Ansible, como lidar com esse tipo de desinstalação?

Atenciosamente

Gael

Responder1

Finalmente acabei com uma solução diferente: acabei de criar uma tarefa agendada do Windows (ainda usando ansible) para iniciar o desinstalador e a opção necessária, depois especificar um nome de usuário, acionar e executá-lo uma vez.

É um bypass, mas funciona muito bem

informação relacionada