Удалить пробел после "log_cleanup.sh "
в bash_command
Таким образом, ваша задача должна стать:
log_cleanup_task = BashOperator(
task_id='log_cleanup_task',
provide_context=True,
bash_command= "scripts/log_cleanup.sh",
params = {'BASE_LOG_FOLDER': "/var/opt" },
dag=dagInstance,
)
Примечание , что сценарии папка должна находиться внутри папки, содержащей файл DAG, и должна содержать относительный путь к сценарию (относительно папки, содержащей эту группу DAG)
Основной причиной, по которой вы получили ошибку TemplateNotFound
, был путь, упомянутый в bash_command
не распознается Jinja (шаблонизатор, используемый Airflow). Jinja распознает только путь, переданный в DAG.template_searchpath Путь по умолчанию - это папка, содержащая DAG, так что вы можете напрямую поместить папку сценариев в папку DAG, если ваша DAG находится непосредственно в $AIRFLOW_HOME/dags
. Или вы можете передать путь к вашей папке в DAG.template_searchpath следующим образом:
dag = DAG("example_dag", template_searchpath="/var/opt/scripts")
# And then just pass "filename" to bash_command
log_cleanup_task = BashOperator(
task_id='log_cleanup_task',
provide_context=True,
bash_command= "log_cleanup.sh ",
params = {'BASE_LOG_FOLDER': "/var/opt" },
dag=dag,
)