气流用户问题

时间:2019-08-08 08:41:08

标签: unix airflow airflow-scheduler user-management

我们已经在虚拟环境中使用sudo根从服务帐户“ ABC”安装了气流,但是我们面临的问题很少。

  • 使用bash运算符调用python脚本。 Python脚本使用了一些 来自Unix帐户“ ABC”的环境变量。 气流,没有选择环境变量。为了找到 气流的用户,使用bashoperator命令创建了虚拟dag 'whoami',它返回ABC用户。所以气流使用的是相同的“ ABC” 用户。那为什么不选择环境变量呢?

  • 然后尝试了sudo -u ABC python script。由于使用sudo,因此未选择环境变量。解决方法是否没有环境变量,并且可以在开发环境中顺利运行而没有问题。但是当移动到其他环境时,出现以下错误,我们没有编辑sudoers文件的权限。管理员政策不符合要求。

  

sudo:抱歉,您必须有一个tty才能运行sudo

  • 然后在.cfg文件中使用'impersonation = ABC'选项,并在没有sudo的情况下运行气流。这次,bash命令无法获取环境变量,它会询问虚拟环境中脚本中使用的所有软件包。

我的问题:

  1. 对root进行suding后,通过ABC安装气流。为什么ABC不是 在运行脚本时得到了处理。
  2. 为什么不选择ABC环境变量?
  3. 即使“模拟”选项也没有选择环境 变量?
  4. 可以在没有虚拟环境的情况下安装气流吗?
  5. 哪种方法是安装气流的最佳方法?使用单独的用户 和sudoing根?我们正在使用专用用户来运行python 脚本。专家请澄清。

2 个答案:

答案 0 :(得分:0)

使用virtualenv安装任何python软件包总是一个好主意。因此,您应该始终喜欢在virtaulenv中安装气流。

您可以使用systemd或supervisord并为气流Web服务器和调度程序创建程序。主管的示例配置:

[program:airflow-webserver]
command=sh /home/airflow/scripts/start-airflow-webserver.sh
directory=/home/airflow
autostart=true
autorestart=true
startretries=3
stderr_logfile=/home/airflow/supervisor/logs/airflow-webserver.err.log
stdout_logfile=/home/airflow/supervisor/logs/airflow-webserver.log
user=airflow
environment=AIRFLOW_HOME='/home/airflow/'

[program:airflow-scheduler]
command=sh /home/airflow/scripts/start-airflow-scheduler.sh
directory=/home/airflow
autostart=true
autorestart=true
startretries=3
stderr_logfile=/home/airflow/supervisor/logs/airflow-scheduler.err.log
stdout_logfile=/home/airflow/supervisor/logs/airflow-scheduler.log
user=airflow
environment=AIRFLOW_HOME='/home/airflow/'

答案 1 :(得分:0)

我们遇到了同样的问题。

sudo: sorry, you must have a tty to run sudo

我们得到的解决方案是

su ABC python script