용어정리
- operator : 특정 기능들의 모음 클래스 (설계도)
- task : Dag에서 실행가능한 오브젝트
- task들은 방향성을 가지고 비순환 참조- BashOperator : 쉘 명령어 실행 가능한 operator
이외에 다양한 operator 존재
from airflow import DAG
from airflow.operators.bash import BashOperator
import datetime
import pendulum
with DAG (
dag_id ="dags_bash_operator",
schedule ="0 0 * * *" , ##cron
start_date = pendulum.datetime(2025,1,1,tz="Asia/Seoul"),
catchup = False, ## 누락된 구간 x 소급적용 x
)as dag: ## 실행할 bash 명령어
bash_t1 = BashOperator(
task_id = "bash_t1",
bash_command="echo whoami"
)
bash_t2 = BashOperator(
task_id = "bash_t2",
bash_command="echo $HOSTNAME"
)
bash_t1 >> bash_t2
airflow webserver 반영 하기 위해 dag 경로 수정
-> docker-compose.yaml 파일 내
volumes:
- ${AIRFLOW_PROJ_DIR:-.}/Airflow/dags:/opt/airflow/dags
프로젝트 내 dags 폴더 경로 지정
docker container 재실행 후 웹서버 접속하면 만들어놓은 dag가 보인다

dag에서 작성한 task 순서대로 차례로 queueing - running 된다.

ehco $HOSTNAME 에서 나오는 컨테이너 ID는 Airflow-worker의 컨테이너 ID이다 .
즉 task를 실제 처리하는 컨테이너는 worker이다