#python #airflow
#python #поток воздуха
Вопрос:
у меня есть скрипт с именем CC, который собирает данные и отправляет их в хранилище данных. Я создал для него dag
Task_I = BashOperator(
task_id="CC",
run_as_user="koa",
bash_command="sudo /home/koa/CC"
)
и я добавил разрешение на его запуск без ввода пароля, изменив /etc/sudoers
koa ALL = (ALL) NOPASSWD: /home/koa/CC
однако, когда задача завершается неудачно в airflow и в журнале указывается, что требуется пароль
{bash_operator.py:146} INFO - Running command: sudo /home/koa/CC
{bash_operator.py:153} INFO - Output:
{bash_operator.py:157} INFO - sudo: a terminal is required to read
the password; either use the -S option to read from standard input or configure an askpass
helper
{bash_operator.py:159} INFO - Command exited with return code 1
Было бы здорово, если бы вы могли мне помочь, ребята, я новичок в airflow и последние несколько часов боролся с этим
Комментарии:
1. Вероятно, это скорее вопрос sudo, чем Airflow, но airflow немного усложняет понимание того, что именно здесь происходит.
2. Не могли бы вы изменить bash_command на
whoami amp;amp; sudo -nl
— это может дать еще несколько подсказок относительно того, что происходит.3. Также еще одно наблюдение: «run_as_user» выполняет сам sudo, так почему бы просто не указать
run_as_user='root'
4. когда я запускаю команду «sudo / home / koa / CC» от имени моего пользователя по умолчанию «koa», за пределами airflow, она работает без запроса пароля .
5. Я запустил команду bash с помощью whoami amp;amp; sudo -nl, и она возвращает эту команду для запуска ИНФОРМАЦИИ: whoami amp;amp; sudo -nl /home/koa/CC {bash_operator.py:153} INFO — Output: {bash_operator.py:157} INFO — koa {bash_operator.py:157} INFO — /home/koa/CC {bash_operator.py:159} INFO — команда завершается с кодом возврата 0