Good day,
Struggling to find a way to run the below vendor-provided batch file via Ansible. The script works fine when run manually, but I receive dozens of the below error when executing via Ansible win_command or win_shell. I have also tried to execute the batch file interactively using become. When ran interactively it simply hangs. Hoping to find a solution that doesn’t involve modifying vendor provided code.
Ansible:
- name: Upgrade RabbitMQ
ansible.windows.win_shell: .\install_rabbitmq.bat
args:
chdir: ‘{{ install_app_download_dir }}\Prerequisites’
Error:
ERROR: Input redirection is not supported, exiting the process immediately.
install_rabbitmq.bat File:
CLS
@ECHO OFF
%Temp%\install_rabbitmq.log
CALL sc qc RabbitMQ > NUL
if errorlevel 1 (
goto rabbitchecked
)
CALL sc qc RabbitMQ | findstr “erts-13.1.2” > NUL
if %errorlevel% equ 0 (
ECHO RabbitMQ in the newest version detected. Aborting reinstall
goto newestrabbit
)
:rabbitchecked
CALL SC QUERY AppNetStateService > NUL
if errorlevel 1060 (
ECHO Services are stopped >>%Temp%\install_rabbitmq.log
goto servicesstopped
)
ECHO Stopping Services… >>%Temp%\install_rabbitmq.log
CALL “%~dp0\App.ServiceManager.exe” /Mode:Stop 2>>%Temp%\install_rabbitmq.log
:servicesstopped
CALL SC QUERY RabbitMQ > NUL
if errorlevel 1060 (
ECHO Rabbit is uninstalled >>%Temp%\install_rabbitmq.log
goto rabbituninstalled
)
ECHO UNinstalling Rabbit >>%Temp%\install_rabbitmq.log
CALL sc stop RabbitMQ 2>>%Temp%\install_rabbitmq.log
:rabbitloop
CALL sc query RabbitMQ | find “STOPPED”
if errorlevel 1 (
TIMEOUT 10
goto rabbitloop
)
CALL sc config RabbitMQ binPath= “%ProgramW6432%\Erlang OTP\erts-13.1.2\bin\erlsrv.exe”
ECHO Uninstalling RabbitMQ…
CALL “%ProgramW6432%\RabbitMQ Server\uninstall.exe” /S 2>>%Temp%\install_rabbitmq.log
:LOOPUNINSTALL1
CALL “%~dp0\PSLIST” Un_A /accepteula 2>>%Temp%\install_rabbitmq.log
IF ERRORLEVEL 1 (
ECHO RabbitMQ uninstallation finished.
GOTO CONTINUEUNINSTALL1
) ELSE (
TIMEOUT 2
GOTO LOOPUNINSTALL1
)
:CONTINUEUNINSTALL1
TIMEOUT 60 >nul 2>&1
:rabbituninstalled
ECHO Uninstalling Erlang OTP…
IF NOT DEFINED ERLANG_HOME (
SET ERLANG_HOME=%ProgramW6432%\erl-24.2.1
)
CALL “%ERLANG_HOME%\uninstall.exe” /S 2>>%Temp%\install_rabbitmq.log
:LOOPUNINSTALL2
CALL “%~dp0\PSLIST” Un_A /accepteula >nul 2>>%Temp%\install_rabbitmq.log
IF ERRORLEVEL 1 (
ECHO Erlang OTP uninstallation finished.
GOTO CONTINUEUNINSTALL2
) ELSE (
TIMEOUT 2
GOTO LOOPUNINSTALL2
)
:CONTINUEUNINSTALL2
TIMEOUT 60 >nul 2>&1
ECHO Removing cookies, old files and registries…
DEL /F “C:\Windows\System32\config\systemprofile.erlang.cookie” 2>>%Temp%\install_rabbitmq.log
DEL /F “%SystemRoot%.erlang.cookie” 2>>%Temp%\install_rabbitmq.log
DEL /F “%USERPROFILE%.erlang.cookie” 2>>%Temp%\install_rabbitmq.log
DEL /S /Q /F "%AppData%\RabbitMQ" 2>>%Temp%\install_rabbitmq.log
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Ericsson\Erlang” /f
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Ericsson\Erlang” /f
TIMEOUT 10 >nul 2>&1
ECHO Installing Erlang OTP 25…
CALL “%~dp0\otp_win64_25.1.2.exe” /S 2>>%Temp%\install_rabbitmq.log
:LOOP1
CALL “%~dp0\PSLIST” otp_win64_25.1.2 >nul 2>>%Temp%\install_rabbitmq.log
IF ERRORLEVEL 1 (
ECHO Erlang OTP 25 installation finished.
GOTO CONTINUE1
) ELSE (
TIMEOUT 2
GOTO LOOP1
)
:CONTINUE1
SET ERLANG_HOME=%ProgramW6432%\Erlang OTP
SETX ERLANG_HOME “%ProgramW6432%\Erlang OTP”
ECHO Installing RabbitMQ Server 3.11.4…
CALL “%~dp0\rabbitmq-server-3.11.4.exe” /S 2>>%Temp%\install_rabbitmq.log
:LOOP2
CALL “%~dp0\PSLIST” rabbitmq-server-3.11.4 >nul 2>>%Temp%\install_rabbitmq.log
IF ERRORLEVEL 1 (
ECHO RabbitMQ Server 3.11.4 installation finished.
GOTO CONTINUE2
) ELSE (
TIMEOUT 2
GOTO LOOP2
)
:CONTINUE2
ECHO Synchronising Erlang cookies…
:LOOP3
IF EXIST “%USERPROFILE%.erlang.cookie” (
GOTO CONTINUE3
) ELSE (
GOTO LOOP3
)
:CONTINUE3
TIMEOUT 10 >nul 2>&1
DEL /F “C:\Windows\System32\config\systemprofile.erlang.cookie” 2>>%Temp%\install_rabbitmq.log
COPY /Y “%USERPROFILE%.erlang.cookie” “C:\Windows\System32\config\systemprofile.erlang.cookie” 2>>%Temp%\install_rabbitmq.log
DEL /F “%SystemRoot%.erlang.cookie” 2>>%Temp%\install_rabbitmq.log
COPY /Y “%USERPROFILE%.erlang.cookie” “%SystemRoot%.erlang.cookie” 2>>%Temp%\install_rabbitmq.log
ECHO Configuring RabbitMQ…
TIMEOUT 10 >nul 2>&1
CALL “%ProgramW6432%\RabbitMQ Server\rabbitmq_server-3.11.4\sbin\rabbitmq-service” stop 2>>%Temp%\install_rabbitmq.log
TIMEOUT 10 >nul 2>&1
CALL “%ProgramW6432%\RabbitMQ Server\rabbitmq_server-3.11.4\sbin\rabbitmq-service” start 2>>%Temp%\install_rabbitmq.log
:LOOP4
CALL “%ProgramW6432%\RabbitMQ Server\rabbitmq_server-3.11.4\sbin\rabbitmqctl” status >nul 2>>%Temp%\install_rabbitmq.log
IF ERRORLEVEL 1 (
TIMEOUT 5 >nul 2>&1
GOTO LOOP4
) ELSE (
GOTO CONTINUE4
)
:CONTINUE4
TIMEOUT 30 >nul 2>&1
CALL “%ProgramW6432%\RabbitMQ Server\rabbitmq_server-3.11.4\sbin\rabbitmqctl” start_app 2>>%Temp%\install_rabbitmq.log
TIMEOUT 30 >nul 2>&1
CALL “%ProgramW6432%\RabbitMQ Server\rabbitmq_server-3.11.4\sbin\rabbitmqctl” add_user admin 9 2>>%Temp%\install_rabbitmq.log
TIMEOUT 5 >nul 2>&1
CALL “%ProgramW6432%\RabbitMQ Server\rabbitmq_server-3.11.4\sbin\rabbitmqctl” set_user_tags admin administrator 2>>%Temp%\install_rabbitmq.log
CALL “%ProgramW6432%\RabbitMQ Server\rabbitmq_server-3.11.4\sbin\rabbitmqctl” add_vhost / 2>>%Temp%\install_rabbitmq.log
CALL “%ProgramW6432%\RabbitMQ Server\rabbitmq_server-3.11.4\sbin\rabbitmqctl” set_permissions -p / admin .* .* .* 2>>%Temp%\install_rabbitmq.log
TIMEOUT 5 >nul 2>&1
:LOOP5
CALL “%ProgramW6432%\RabbitMQ Server\rabbitmq_server-3.11.4\sbin\rabbitmqctl” status >nul 2>>%Temp%\install_rabbitmq.log
IF ERRORLEVEL 1 (
TIMEOUT 5 >nul 2>&1
GOTO LOOP5
) ELSE (
GOTO CONTINUE5
)
:CONTINUE5
SC QUERY AppNetStateService > NUL
if errorlevel 1060 (
goto servicesstarted
)
ECHO Restarting services…
CALL “%~dp0\App.ServiceManager.exe” /Mode:Start 2>>%Temp%\install_rabbitmq.log
:servicesstarted
:newestrabbit
Thank you for any and all assistance!