Actualmente estoy escribiendo un manual sobre cómo desinstalar Fusion Inventory Agent y luego implementar el agente GLPI 1.4 en Windows Server 2016-2022. Para todas las pruebas que detallo a continuación, uso mi cuenta de dominio que tiene derechos de administrador en cualquier servidor.
(Ejecuto ansible core 2.12.10 + python 3.9.2 en un Debian 11 recién actualizado)
La ruta de registro del desinstalador del agente Fusion Inventory se encuentra en,
"C:\Program Files\FusionInventory-Agent\Uninstall.exe"
por lo que si lo ejecuto manualmente desde cmd/powershell con/S
la opción, aparece una ventana emergente Sí/No UAC y, por lo tanto, desinstalo el agente si presiono Sí.Ahora, si hago clic derecho y lo ejecuto como administrador en mi cmd/powershell.exe, puedo iniciarlo
"C:\Program Files\FusionInventory-Agent\Uninstall.exe /S"
fácilmente sin UAC, es normal.
Desde una perspectiva de Ansible, si uso la siguiente tarea:
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
Dice así:
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": []
}
PERO, en realidad no desinstala nada, parece que Ansible inicia correctamente el comando pero no detecta el resultado.
También probé diferentes cosas para comprobar si cambia algo (inicie powershell.exe dentro de cmd, desde psexec...) pero los resultados fallan o "cambiaron" pero no inicia uninstall.exe como debería ser.
Desde una perspectiva de Ansible, ¿cómo manejar ese tipo de desinstalación?
Atentamente
gaélico
Respuesta1
Finalmente terminé con una solución diferente: acabo de crear una tarea programada de Windows (aún usando ansible) para iniciar el desinstalador y la opción que necesito, luego especificar un nombre de usuario, activarlo y ejecutarlo una vez.
Es un bypass, pero funciona bastante bien.