我已经在本地Mac上设置了airflow 2.0,并以PostgresSQL作为sql_alchemy_conn的支持。我的DAG运行良好,并在sqla数据库中维护了元数据,但是任何气流用户都命令错误,并且角色表/视图未创建。
我尝试设置和重置气流resetdb,但是这些表在sql_alchemy_conn DB中仍然不可用。
modify permissions
psycopg2.ProgrammingError: relation "ab_permission_view_role" does not exist
LINE 2: FROM ab_permission_view_role JOIN ab_permission_view ON ab_p...
我希望这些表应该在后端的某个地方创建。我想使用气流用户命令通过脚本自动创建用户,但是由于存在现有错误,上帝保佑我:)
答案 0 :(得分:8)
我得到了这个解决方案。发生这种情况是因为未在ab_* tables
上创建airflow initdb
。所有这些表都用于基于角色的访问控制– RBAC 。
要拥有这些表,请按照说明进行操作:
airflow.cfg
[webserver]
rbac = True
airflow initdb
以创建这些丢失的表。 这解决了我的问题。
答案 1 :(得分:1)
在气流1.10.12中最常见的原因是添加一个覆盖默认设置的$AIRFLOW_HOME/webserver_config.py
文件。
如果要添加webserver_config.py
,则必须包含
SQLALCHEMY_DATABASE_URI = conf.get('core', 'SQL_ALCHEMY_CONN')
就像在default webserver_config.py中一样。
原则上,如果您在rbac = True
中设置airflow.cfg
,删除webserver_config.py
并执行诸如airflow list_users
之类的命令,那么气流将为您创建一个webserver_config.py
文件您以后可以修改的正确的SQLALCHEMY_DATABASE_URI = ...
。
答案 2 :(得分:0)
您可以在气流源代码中修补app.py
:
在数据库初始化SQLALCHEMY_DATABASE_URI
之前,从SQL_ALCHEMY_CONN
在app.config中设置db = SQLA(app)
。
这是app.py
文件的路径:
/Users/deepaksaroha/Desktop/apache_2.0/nb-atom-airflow/lib/python3.7/site-packages/airflow/www_rbac/app.py
这是您应该包括的行:
app.config['SQLALCHEMY_DATABASE_URI'] = conf.get('core', 'SQL_ALCHEMY_CONN')
答案 3 :(得分:0)
@appleboy选择的答案对我不起作用,但@Nando_Quintana的解决方案却没有。
执行以下操作以将其修补程序应用为补丁
cd path/to/python/site-packages/airflow/www_rbac/
patch <<EOF
--- _app.py2019-09-25 17:18:59.127378849 +0000
+++ app.py 2019-09-25 17:18:53.467413221 +0000
@@ -53,6 +53,7 @@
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['APP_NAME'] = app_name
app.config['TESTING'] = testing
+ app.config['SQLALCHEMY_DATABASE_URI'] = conf.get('core', 'SQL_ALCHEMY_CONN')
csrf.init_app(app)
EOF
在Python 3.6.8和Airflow 1.10.2上进行了测试