Отладка веб-аутентификации для Apache Airflow
Я пытаюсь включить веб-аутентификацию для моего gcp vm, на котором работает сервер воздушного потока. Я использовал официальные документы для обновления файла конфигурации:
[webserver]
authenticate = True
auth_backend = airflow.contrib.auth.backends.password_auth
а также создать пользователя в метаданных.
$ cd ~/airflow
$ python
Python 2.7.9 (default, Feb 10 2015, 03:28:08)
Type "help", "copyright", "credits" or "license" for more information.
>>> import airflow
>>> from airflow import models, settings
>>> from airflow.contrib.auth.backends.password_auth import PasswordUser
>>> user = PasswordUser(models.User())
>>> user.username = 'new_user_name'
>>> user.email = 'new_user_email@example.com'
>>> user.password = 'set_the_password'
>>> session = settings.Session()
>>> session.add(user)
>>> session.commit()
>>> session.close()
>>> exit()
В приведенном выше разделе паролей произошла ошибка, поэтому я выполнил следующую команду, предложенную здесь:
user._set_password = ‘………….’.encode('utf8')
После этого в терминале Python не было ошибок, и я предположил, что пользователь был успешно создан в метабазе. После этого я инициализировал БД, что привело к ошибке:
$ airflow initdb
....
....
File "/usr/lib/python2.7/base64.py", line 119, in urlsafe_b64decode
return b64decode(s.translate(_urlsafe_decode_translation))
File "/usr/lib/python2.7/base64.py", line 78, in b64decode
raise TypeError(msg)
TypeError: Incorrect padding
Я не знаю почему, но настройка ключа Fernet помогла, и я мог запустить initdb без каких-либо ошибок:
~$ airflow initdb
[2018-06-07 20:58:58,301] {driver.py:120} INFO - Generating grammar tables from /usr/lib/python2.7/lib2to3/Grammar.txt
[2018-06-07 20:58:58,322] {driver.py:120} INFO - Generating grammar tables from /usr/lib/python2.7/lib2to3/PatternGrammar.txt
[2018-06-07 20:58:58,447] {__init__.py:45} INFO - Using executor LocalExecutor
[2018-06-07 20:58:58,546] {db.py:312} INFO - Creating tables
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
[2018-06-07 20:58:59,982] {models.py:189} INFO - Filling up the DagBag from /home/username/airflow/dags
Done.
Но... когда я хотел запустить веб-сервер, он не работал:
$ airflow webserver -p 8080
....
....
Traceback (most recent call last):
File "/usr/local/bin/airflow", line 27, in <module>
args.func(args)
File "/usr/local/lib/python2.7/dist-packages/airflow/bin/cli.py", line 678, in webserver
app = cached_app(conf)
File "/usr/local/lib/python2.7/dist-packages/airflow/www/app.py", line 161, in cached_app
app = create_app(config)
File "/usr/local/lib/python2.7/dist-packages/airflow/www/app.py", line 52, in create_app
app=app, config={'CACHE_TYPE': 'filesystem', 'CACHE_DIR': '/tmp'})
File "/usr/local/lib/python2.7/dist-packages/flask_cache/__init__.py", line 121, in __init__
self.init_app(app, config)
File "/usr/local/lib/python2.7/dist-packages/flask_cache/__init__.py", line 156, in init_app
from .jinja2ext import CacheExtension, JINJA_CACHE_ATTR_NAME
File "/usr/local/lib/python2.7/dist-packages/flask_cache/jinja2ext.py", line 33, in <module>
from flask.ext.cache import make_template_fragment_key
ImportError: No module named ext.cache
Кто-то указал мне на эту проблему:
Я установил оба этих пакета, но проблема остается:
У кого-нибудь есть предложения по дальнейшему устранению неполадок?