【发布时间】:2018-03-30 19:21:51
【问题描述】:
我试图让模拟工作没有成功。我正在按照这里的说明进行操作 - https://airflow.apache.org/security.html#impersonation
我启动了气流网络服务器、调度程序和工作程序作为 sudo 在“气流”用户下运行。此用户在 sudoers 文件中设置为不允许密码登录。
我创建了一个 BashOperator 和一个 PythonOperator,并将 run_as_user 参数设置为服务器上名为“linus”的现有用户。当我以“airflow”身份登录时,我可以通过运行 sudo -u linus 来切换用户,而不会提示我输入密码。
dag = DAG('test_impersonation', default_args=args)
def print_user(**kwargs):
print('USER:', getpass.getuser())
t1 = BashOperator(task_id='bash_task',
bash_command='touch /home/linus/test.x',
run_as_user='linus',
dag=dag)
t2 = PythonOperator(task_id='py_task',
python_callable='print_user',
run_as_user='linus',
dag=dag)
我正在终端中使用以下命令测试这些任务:
airflow test test_impersonation bash_task 2018-03-30
airflow test test_impersonation py_task 2018-03-30
第一个命令(BashOperator 任务)失败,出现权限被拒绝错误,告诉我它仍在以“airflow”用户身份运行。
第二个命令(PythonOperator 任务)打印以下内容:
USER: airflow
我希望这会打印出 USER: linus
我有什么遗漏吗?任何帮助将不胜感激。
感谢阅读!
【问题讨论】: