You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesi贸n a prueba de IA

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

0 D铆as
12 Hrs
0 Min
52 Seg

Bash Operator

12/29
Resources

Contributions 28

Questions 6

Sort by:

Want to see more contributions, questions and answers from the community?

馃幃 Bash Operator

Ademas de lo mencionado en clase este se puede ejecutar cualquier comando de bash, por tanto podemos ejemplo bajar un fichero con wget o curl y luego retornar la data filtrado con grep o awk o en si ejecutar cualquier script de bash para ello solo hace falta que lo tengas dentro de la carpeta dags, (Lo unico es que script bash no pude ser ejecutado con source file.sh sino que debemos darle permisos de ejecuci贸n y llamarlo asi ./file.sh)

from airflow import DAG
from airflow.decorators import dag
from airflow.operators.bash import BashOperator
from datetime import datetime

with DAG(dag_id='primer_dag_bash', schedule_interval='@once', start_date=datetime(2022, 7, 1)) as dag:
    t1 = BashOperator(task_id='primer_task_bash',
                      bash_command='echo "Hola mundo"')

Les comparto el c贸digo de la clase:

from airflow import DAG
from airflow.decorators import dag
from airflow.operators.bash import BashOperator

from datetime import datetime
with DAG(
dag_id="bashoperator",
description="Utilizando BASH operator",
start_date=datetime(2022, 10, 31)
) as dag:

t1 = BashOperator(task_id="hello_with_bash",
bash_command="echo 'hello bash operator'")
t1

Hola, les comparto imagen del log

![](https://static.platzi.com/media/user_upload/image-d3526766-197d-4f2e-be63-86dd97c9528d.jpg)![](https://static.platzi.com/media/user_upload/image-cd46d427-c87f-4bb5-ae95-4060952432da.jpg)

Este curso si que me ha traido felicidades!

![](https://static.platzi.com/media/user_upload/image-35c79ec3-d120-4a67-9da0-61cc90fcc641.jpg)
No he podido quitar los DAGs que vienen como ejemplo en el Airflow, desactiv茅 la opci贸n desde el docker\_composer.yml AIRFLOW\_\_CORE\_\_LOAD\_EXAMPLES: 'false' pero siguen saliendo. Ayuda!
\[2024-03-24, 01:18:47 UTC] {taskinstance.py:1979} INFO - Dependencies all met for dep\_context=non-requeueable deps ti=\<TaskInstance: bashoperator.hello\_with\_bash manual\_\_2024-03-24T01:18:43.924062+00:00 \[queued]> \[2024-03-24, 01:18:47 UTC] {taskinstance.py:1979} INFO - Dependencies all met for dep\_context=requeueable deps ti=\<TaskInstance: bashoperator.hello\_with\_bash manual\_\_2024-03-24T01:18:43.924062+00:00 \[queued]> \[2024-03-24, 01:18:47 UTC] {taskinstance.py:2193} INFO - Starting attempt 1 of 1 \[2024-03-24, 01:18:47 UTC] {taskinstance.py:2217} INFO - Executing \<Task(BashOperator): hello\_with\_bash> on 2024-03-24 01:18:43.924062+00:00 \[2024-03-24, 01:18:47 UTC] {standard\_task\_runner.py:60} INFO - Started process 2075 to run task \[2024-03-24, 01:18:47 UTC] {standard\_task\_runner.py:87} INFO - Running: \['\*\*\*', 'tasks', 'run', 'bashoperator', 'hello\_with\_bash', 'manual\_\_2024-03-24T01:18:43.924062+00:00', '--job-id', '3', '--raw', '--subdir', 'DAGS\_FOLDER/1-bashoperator.py', '--cfg-path', '/tmp/tmpzk\_i2e5w'] \[2024-03-24, 01:18:47 UTC] {standard\_task\_runner.py:88} INFO - Job 3: Subtask hello\_with\_bash \[2024-03-24, 01:18:47 UTC] {task\_command.py:423} INFO - Running \<TaskInstance: bashoperator.hello\_with\_bash manual\_\_2024-03-24T01:18:43.924062+00:00 \[running]> on host 233392a8204a \[2024-03-24, 01:18:47 UTC] {taskinstance.py:2513} INFO - Exporting env vars: AIRFLOW\_CTX\_DAG\_OWNER='\*\*\*' AIRFLOW\_CTX\_DAG\_ID='bashoperator' AIRFLOW\_CTX\_TASK\_ID='hello\_with\_bash' AIRFLOW\_CTX\_EXECUTION\_DATE='2024-03-24T01:18:43.924062+00:00' AIRFLOW\_CTX\_TRY\_NUMBER='1' AIRFLOW\_CTX\_DAG\_RUN\_ID='manual\_\_2024-03-24T01:18:43.924062+00:00' \[2024-03-24, 01:18:47 UTC] {subprocess.py:63} INFO - Tmp dir root location: /tmp \[2024-03-24, 01:18:47 UTC] {subprocess.py:75} INFO - Running command: \['/usr/bin/bash', '-c', "echo 'Hello gente soy gianmarco'"] \[2024-03-24, 01:18:47 UTC] {subprocess.py:86} INFO - Output: \[2024-03-24, 01:18:47 UTC] {subprocess.py:93} INFO - Hello gente soy gianmarco \[2024-03-24, 01:18:47 UTC] {subprocess.py:97} INFO - Command exited with return code 0 \[2024-03-24, 01:18:48 UTC] {taskinstance.py:1149} INFO - Marking task as SUCCESS. dag\_id=bashoperator, task\_id=hello\_with\_bash, execution\_date=20240324T011843, start\_date=20240324T011847, end\_date=20240324T011848 \[2024-03-24, 01:18:48 UTC] {local\_task\_job\_runner.py:234} INFO - Task exited with return code 0 \[2024-03-24, 01:18:48 UTC] {taskinstance.py:3312} INFO - 0 downstream tasks scheduled from follow-on schedule check

Ac谩 esta:

Ha cambiado un poco la interfaz, pero no mucho

No entiendo como poner imagenes, por lo que adjunto el script creado:

from datetime import datetime
from airflow.operators.bash import BashOperator
from airflow import DAG


with DAG(dag_id="bashoperator",
    description="Utilizando bash Operator",
    start_date=datetime(2022, 11, 1)    
) as dag:
    t1= BashOperator(
        task_id="hello_with_bash",
        bash_command="echo 'Hi Platzi people from bash operator'"
    )
    t1
tuve un problema como se muestra en la figura, usando el mismo codigo, si lo hacia corrrer manual funcionaba pero a veces persiste el error, si alguien puede explicarlo, lo agradezco.![](https://static.platzi.com/media/user_upload/image-9da99c7b-8716-4e8e-a92c-3e8070c915b3.jpg)
![](https://static.platzi.com/media/user_upload/image-2fac868d-7104-457e-94db-7e8dad670702.jpg)![](https://static.platzi.com/media/user_upload/image-c63b94b3-8372-4006-bc8a-77b85b232b47.jpg)
Consulta regularmente es por comodidad o porque estoy acostumbrado pero saben como podria hacer el autocompletado con airflow?
No me aparece el bot贸n de logs para la tarea
![](https://static.platzi.com/media/user_upload/image-ec06c632-62ba-4ece-a6da-7cf6d460179c.jpg)
![](https://static.platzi.com/media/user_upload/image-72332b5a-c307-41d2-b140-ff500abd419b.jpg) Hice un sencillo hello world jiji
El **BashOperator** en Apache Airflow permite ejecutar comandos de Bash en un flujo de trabajo. Es 煤til para realizar tareas como mover archivos, ejecutar scripts de shell, o interactuar con herramientas del sistema operativo desde un DAG. ### **Estructura B谩sica del BashOperator** Aqu铆 tienes un ejemplo b谩sico de c贸mo usar el `BashOperator`: from airflow import DAG from airflow.operators.bash import BashOperator from datetime import datetime \# Definir el DAG with DAG( dag\_id="bash\_operator\_example", description="Ejemplo de uso del BashOperator", start\_date=datetime(2024, 11, 28), # Fecha en el pasado schedule\_interval="@daily", # Se ejecuta diariamente catchup=False, # No ejecuta tareas pendientes de fechas pasadas ) as dag: \# Definir una tarea usando BashOperator t1 = BashOperator( task\_id="print\_date", bash\_command="date", # Comando de Bash que imprime la fecha actual ) \# Otra tarea para ejecutar un script t2 = BashOperator( task\_id="run\_script", bash\_command="echo 'Ejecutando mi script'; ./mi\_script.sh", # Comando Bash con script ) \# Definir dependencias entre tareas t1 >> t2 ### **Par谩metros principales** El `BashOperator` tiene varios par谩metros que puedes configurar: **Par谩metroDescripci贸n**`task_id`Identificador 煤nico de la tarea.`bash_command`Comando de Bash que se ejecutar谩. Puede incluir m煤ltiples l铆neas.`env`Diccionario para configurar variables de entorno que se usar谩n durante la ejecuci贸n del comando.`cwd`Cambia el directorio de trabajo donde se ejecutar谩 el comando.`execution_timeout`Tiempo m谩ximo permitido para que el comando termine antes de ser interrumpido. ### **Ejemplo con variables de entorno** Puedes pasar variables de entorno al comando de Bash: t3 = BashOperator( task\_id="custom\_environment", bash\_command="echo 'El usuario actual es: $USER'", env={"USER": "airflow\_user"} # Establece la variable USER ) ### **Logs de la ejecuci贸n** Airflow registra los logs de cada ejecuci贸n, por lo que puedes verificar los resultados de tu comando en el log del operador. Para ver los logs: 1. Ve al **Airflow UI**. 2. Selecciona el DAG y luego la tarea. 3. Haz clic en **View Log**. ### **Errores comunes** 1. **Permisos insuficientes**: Aseg煤rate de que los scripts o comandos tengan los permisos necesarios. 2. **Rutas incorrectas**: Si usas rutas relativas, verifica que el directorio de trabajo sea el correcto. 3. **Dependencias del sistema**: Si tu comando requiere herramientas externas, verifica que est茅n instaladas en el entorno donde se ejecuta Airflow. ### **Avanzado: Plantillas Jinja** El `bash_command` soporta **plantillas Jinja**, lo que permite usar variables din谩micas como fechas de ejecuci贸n: t4 = BashOperator( task\_id="templated\_command", bash\_command="echo 'Fecha de ejecuci贸n: {{ ds }}'", # `ds` es la fecha de ejecuci贸n ) Este ejemplo imprime la fecha de ejecuci贸n del DAG (por ejemplo, `2024-11-28`). 隆Con estos ejemplos deber铆as poder usar el `BashOperator` con confianza! 馃槉
No estoy pudiendo correr ningun DAG, tengo la versi贸n 2.3.3 corriendo dockerizada con este compose <https://airflow.apache.org/docs/apache-airflow/2.3.3/docker-compose.yaml> Al parecer cuando ejecuta no puede escribir los logs, por eso falla y por eso no puedo ver el error desde la consola web. ![](https://static.platzi.com/media/user_upload/image-d0db4915-35bd-413b-8079-0e37eb9dd6fa.jpg) Probe creando las carpetas dags y logs antes de correr el compose, probe dejando que las cree el airflow-init por su cuenta, mismo resultado. Fallan todos los DAGs inlcuso los de ejemplo que vienen en airflow. Probe con la version 2.9.0 y tengo los mismos problemas, salvo que as tasks no fallan inmediatamente pero no terminan nunca, pero en los logs del contenedor veo los mismos errores. Estoy corriendo ubuntu 22.04 docker 26.1.1 compose 2.27.0
![](https://static.platzi.com/media/user_upload/image-ab0d5d3f-7d13-4096-973c-789286863fd1.jpg)

muy chevere !

Como coloco mi imagen?
Ya me quedo mi DAG