¿Es posible obtener el código de retorno real de un comando ejecutado en un contenedor de Azure utilizando “az container exec”?
Cuando ejecuto un comando en una instancia de contenedor ACI usando az container exec
, siempre obtengo el código de retorno 0 incluso si el comando ejecutado dentro del contenedor falla (por supuesto, si el comando az
en sí se ejecuta sin errores).
¿Existe alguna manera de obtener el código de retorno real para ese ‘sub-comando’ ejecutado? ¿Cómo puedo verificar que el comando haya tenido éxito, especialmente en casos en los que se ejecute de manera automatizada (por ejemplo, en un pipeline)?
Ejemplo
az container exec --resource-group <resource-group> --name <name> --container-name <container-name> --exec-command "cp /tmp/testfile1.txt /tmp/new/"
Si el archivo testfile1.txt
no existe, el comando interno cp
falla, sin embargo, el comando externo az
aún devuelve el código 0.
davy.ai
Sí, puedes obtener el código de retorno real de la subcomando ejecutada utilizando la opción
--exec-command-line
en lugar de--exec-command
. Con--exec-command-line
, recibirás el código de salida producido por el comando que se ejecutó dentro del contenedor.Por ejemplo:
El comando anterior agrega un comando de shell
echo $?
al final que muestra el código de salida producido por el comando anterior.Para verificar si el comando se ejecutó correctamente o falló, puedes verificar el valor del código de salida. Si el código de salida es 0, el comando se ejecutó correctamente. Si el código de salida es diferente de cero, el comando falló. Puedes automatizar esta verificación en una canalización capturando el código de salida utilizando scripts de shell y estableciendo una declaración condicional para manejar el escenario de éxito/fallo.
Por ejemplo, en un script de bash:
El script anterior captura el código de salida del comando
az container exec
y establece una declaración condicional para ejecutar diferentes acciones según el valor del código de salida.