es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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.

Tags:  , , ,

Answer

  1. Avatar for 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:

    az container exec --resource-group <nombre-del-grupo-de-recursos> --name <nombre> --container-name <nombre-del-contenedor> --exec-command-line "cp /tmp/testfile1.txt /tmp/new/; echo $?"
    

    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:

    az container exec --resource-group <nombre-del-grupo-de-recursos> --name <nombre> --container-name <nombre-del-contenedor> --exec-command-line "cp /tmp/testfile1.txt /tmp/new/; echo $?"
    
    if [ $? -eq 0 ]; then
        echo "El comando se ejecutó correctamente"
    else
        echo "El comando falló"
    fi
    

    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.

Comments are closed.