gunnar
04/28/2021, 8:00 PMdouwe_maan
04/28/2021, 8:02 PMairflow.cfg
based on its own config for Airflow! You can set any Airlfow config value directly using meltano config airflow set
and in meltano.yml
gunnar
04/28/2021, 8:02 PMgunnar
04/28/2021, 8:05 PMdouwe_maan
04/28/2021, 8:06 PMgunnar
04/28/2021, 8:07 PMdouwe_maan
04/28/2021, 8:07 PMmeltano config
and meltano.yml
are the way to go. Once you have a value in meltano.yml
, it will also show up in meltano config airflow list
and you can override it using an env vardouwe_maan
04/28/2021, 8:07 PMairflow.cfg
will always be regenerated based on Meltano's own understanding of the Airflow config 🙂gunnar
04/28/2021, 8:13 PMdouwe_maan
04/28/2021, 8:13 PMwebserver.autheticate
, right? Try this:
meltano config airflow set webserver authenticate true
gunnar
04/28/2021, 8:14 PMdouwe_maan
04/28/2021, 8:14 PMwebserver: authenticate: true
to meltano.yml
, and next time you run meltano invoke airflow ...
you'll see airflow.cfg
automatically updated with the new settinggunnar
04/28/2021, 8:16 PM[2021-04-28 20:15:15,887] {configuration.py:376} WARNING - section/key [webserver/auth_backend] not found in config
Traceback (most recent call last):
File "/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/venv/lib/python3.8/site-packages/airflow/__init__.py", line 61, in load_login
auth_backend = conf.get('webserver', 'auth_backend')
File "/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/venv/lib/python3.8/site-packages/airflow/configuration.py", line 380, in get
raise AirflowConfigException(
airflow.exceptions.AirflowConfigException: section/key [webserver/auth_backend] not found in config
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/venv/bin/airflow", line 37, in <module>
args.func(args)
File "/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/venv/lib/python3.8/site-packages/airflow/utils/cli.py", line 81, in wrapper
return f(*args, **kwargs)
File "/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/venv/lib/python3.8/site-packages/airflow/bin/cli.py", line 1179, in webserver
app = cached_app_rbac(None) if settings.RBAC else cached_app(None)
File "/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/venv/lib/python3.8/site-packages/airflow/www/app.py", line 244, in cached_app
app = create_app(config, testing)
File "/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/venv/lib/python3.8/site-packages/airflow/www/app.py", line 84, in create_app
airflow.load_login()
File "/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/venv/lib/python3.8/site-packages/airflow/__init__.py", line 62, in load_login
except conf.AirflowConfigException:
AttributeError: 'AirflowConfigParser' object has no attribute 'AirflowConfigException'
After executing the command, I ran:
meltano invoke airflow webserver -p 5000 -D
And received the error above.douwe_maan
04/28/2021, 8:17 PMwebserver.auth_backend
douwe_maan
04/28/2021, 8:17 PMgunnar
04/28/2021, 8:28 PM[2021-04-28 20:26:02,787] {__init__.py:76} CRITICAL - Cannot import authentication module airflow.contrib.auth.backends.password_auth. Please correct your authentication backend or disable authentication: No module named 'flask_bcrypt'
Traceback (most recent call last):
File "/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/venv/lib/python3.8/site-packages/airflow/__init__.py", line 71, in load_login
login = import_module(auth_backend)
File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/venv/lib/python3.8/site-packages/airflow/contrib/auth/backends/password_auth.py", line 29, in <module>
from flask_bcrypt import generate_password_hash, check_password_hash
ModuleNotFoundError: No module named 'flask_bcrypt'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/venv/bin/airflow", line 37, in <module>
args.func(args)
File "/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/venv/lib/python3.8/site-packages/airflow/utils/cli.py", line 81, in wrapper
return f(*args, **kwargs)
File "/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/venv/lib/python3.8/site-packages/airflow/bin/cli.py", line 1179, in webserver
app = cached_app_rbac(None) if settings.RBAC else cached_app(None)
File "/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/venv/lib/python3.8/site-packages/airflow/www/app.py", line 244, in cached_app
app = create_app(config, testing)
File "/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/venv/lib/python3.8/site-packages/airflow/www/app.py", line 84, in create_app
airflow.load_login()
File "/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/venv/lib/python3.8/site-packages/airflow/__init__.py", line 82, in load_login
raise AirflowException("Failed to import authentication backend")
airflow.exceptions.AirflowException: Failed to import authentication backend
I ran the command:
meltano config airflow set webserver auth_backend airflow.contrib.auth.backends.password_auth
Which was following the link you sent.
However it looks like it is failing to import the necessary modules.douwe_maan
04/28/2021, 8:29 PMgunnar
04/28/2021, 8:31 PMdouwe_maan
04/28/2021, 8:32 PMdouwe_maan
04/28/2021, 8:33 PMpip_url
for airflow
in meltano.yml
to include [password]
douwe_maan
04/28/2021, 8:33 PMmeltano install orchestrator airflow
againgunnar
04/28/2021, 8:43 PMpip install 'apache-airflow[password]'
douwe_maan
04/28/2021, 8:57 PMgunnar
04/28/2021, 9:05 PMgunnar
04/28/2021, 9:07 PMorchestrators:
- name: airflow
pip_url: apache-airflow==1.10.14 --constraint <https://raw.githubusercontent.com/apache/airflow/constraints-1.10.14/constraints-3.6.txt>
config:
webserver:
authenticate: true
auth_backend: airflow.contrib.auth.backends.password_auth
Updated:
orchestrators:
- name: airflow
pip_url: apache-airflow[password]==1.10.14 --constraint <https://raw.githubusercontent.com/apache/airflow/constraints-1.10.14/constraints-3.6.txt>
config:
webserver:
authenticate: true
auth_backend: airflow.contrib.auth.backends.password_auth
Does this look correct to you?douwe_maan
04/28/2021, 9:07 PMgunnar
04/28/2021, 9:07 PMgunnar
04/28/2021, 9:07 PMgunnar
04/28/2021, 9:09 PMmeltano invoke airflow webserver -p 5000 -D
Which resulted in the errordouwe_maan
04/28/2021, 9:09 PMgunnar
04/28/2021, 9:19 PMdouwe_maan
04/28/2021, 9:19 PMdouwe_maan
04/28/2021, 9:19 PMgunnar
04/28/2021, 9:22 PMdouwe_maan
04/28/2021, 9:24 PMgunnar
04/28/2021, 9:57 PMAdmin user Gunnar created.
However when I list the users there are still no users and no authentication on the webserver.
One of the outputs from meltano is:
[2021-04-28 21:55:07,925] {manager.py:710} WARNING - No user yet created, use flask fab command to do it.
This output happens after executing airflows create user command, however after this I receive the Admin user created output.douwe_maan
04/28/2021, 9:58 PMmeltano invoke airflow ...
as well?gunnar
04/28/2021, 9:58 PMmeltano invoke airflow users create ...
and to list users:
meltano invoke airflow users list
douwe_maan
04/28/2021, 9:59 PMdouwe_maan
04/28/2021, 9:59 PMgunnar
04/28/2021, 10:00 PMgunnar
04/28/2021, 10:00 PMgunnar
04/28/2021, 10:00 PMdouwe_maan
04/28/2021, 10:01 PM.meltano/orchestrators/airflow/airflow.db
.douwe_maan
04/28/2021, 10:01 PMsql_alchemy_conn
setting?gunnar
04/28/2021, 10:04 PMsql_alchemy_conn
/.meltano/run/airflow/airflow.db
douwe_maan
04/28/2021, 10:05 PMorchestrators
where it says run
. Can you run meltano config airflow
for me and share the result?gunnar
04/28/2021, 10:06 PM{
"core": {
"dags_folder": "/home/ubuntu/meltano-projects/dev-klaviyo/orchestrate/dags",
"plugins_folder": "/home/ubuntu/meltano-projects/dev-klaviyo/orchestrate/plugins",
"sql_alchemy_conn": "sqlite:////home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/airflow.db",
"load_examples": "False",
"dags_are_paused_at_creation": "False"
},
"webserver": {
"authenticate": "True",
"auth_backend": "airflow.contrib.auth.backends.password_auth"
}
}
douwe_maan
04/28/2021, 10:07 PMairflow.cfg
you're looking at?gunnar
04/28/2021, 10:08 PM/.meltano/run/airflow/airflow.cfg
douwe_maan
04/28/2021, 10:09 PMmeltano --version
will show yougunnar
04/28/2021, 10:09 PMmeltano, version 1.72.0
douwe_maan
04/28/2021, 10:09 PMdouwe_maan
04/28/2021, 10:11 PM.meltano/orchestrators/airflow/airflow.db
? Or only .meltano/run/airflow/airflow.db
?gunnar
04/28/2021, 10:12 PMgunnar
04/28/2021, 10:12 PMdouwe_maan
04/28/2021, 10:15 PMairflow.cfg
ends up with /.meltano/run/airflow/airflow.db
instead of the correct /.meltano/orchestrators/airflow/airflow.db
douwe_maan
04/28/2021, 10:16 PMmeltano --log-level=debug invoke airflow version
and share the log lines starting with Updated section
?douwe_maan
04/28/2021, 10:19 PMUpdated section [core]
?gunnar
04/28/2021, 10:21 PM[2021-04-28 22:16:44,596] [1319722|MainThread|root] [DEBUG] Updated section [core] with {'dags_folder': '/home/ubuntu/meltano-projects/dev-klaviyo/orchestrate/dags', 'plugins_folder': '/home/ubuntu/meltano-projects/dev-klaviyo/orchestrate/plugins', 'sql_alchemy_conn': 'sqlite:////home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/airflow.db', 'load_examples': 'False', 'dags_are_paused_at_creation': 'False'}
gunnar
04/28/2021, 10:22 PMdouwe_maan
04/28/2021, 10:23 PMdouwe_maan
04/28/2021, 10:23 PMSaved '<path to config>'
?gunnar
04/28/2021, 10:24 PM[2021-04-28 22:16:44,597] [1319722|MainThread|root] [DEBUG] Saved '/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/run/airflow/airflow.cfg'
douwe_maan
04/28/2021, 10:25 PMsql_alchemy_conn
does not match sqlite:////home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/airflow.db
?douwe_maan
04/28/2021, 10:29 PMDeleted configuration at
?gunnar
04/28/2021, 10:29 PM.meltano/run/airflow
There is no airflow.cfggunnar
04/28/2021, 10:29 PMdouwe_maan
04/28/2021, 10:29 PMdouwe_maan
04/28/2021, 10:30 PMmeltano invoke airflow config get-value core sql_alchemy_conn
?gunnar
04/28/2021, 10:32 PMgunnar
04/28/2021, 10:33 PMdouwe_maan
04/28/2021, 10:34 PMget-value
doesn't exist yet in that version of Airflow. Try meltano invoke airflow config list | grep sql_alchemy_conn
thengunnar
04/28/2021, 10:35 PMsql_alchemy_conn = sqlite:////home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/airflow.db
douwe_maan
04/28/2021, 10:35 PMgunnar
04/28/2021, 10:39 PMdouwe_maan
04/28/2021, 10:40 PMdouwe_maan
04/28/2021, 10:40 PM/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/airflow.db
and see if there's any data in there?douwe_maan
04/28/2021, 10:41 PMgunnar
04/29/2021, 4:57 PMgunnar
04/29/2021, 5:02 PMdouwe_maan
04/29/2021, 5:02 PMusers
is going to be empty?gunnar
04/29/2021, 5:03 PMdouwe_maan
04/29/2021, 5:04 PMmeltano invoke airflow users create
is creating the user if not there 😕gunnar
04/29/2021, 5:06 PM/home/ubuntu/meltano-projects/dev-klaviyo/.meltano/orchestrators/airflow/venv/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py:812: UserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATABASE_URI to "sqlite:///:memory:".
warnings.warn(
[2021-04-29 17:05:12,045] {manager.py:710} WARNING - No user yet created, use flask fab command to do it.
[2021-04-29 17:05:12,708] {__init__.py:50} INFO - Using executor SequentialExecutor
[2021-04-29 17:05:12,709] {dagbag.py:417} INFO - Filling up the DagBag from /home/ubuntu/meltano-projects/dev-klaviyo/orchestrate/dags
douwe_maan
04/29/2021, 5:06 PMUserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATABASE_URI to "sqlite///memory:".This is potentially relevant..
gunnar
04/29/2021, 5:06 PMgunnar
04/29/2021, 5:07 PMdouwe_maan
04/29/2021, 5:07 PMdouwe_maan
04/29/2021, 5:07 PMgunnar
04/29/2021, 5:07 PMdouwe_maan
04/29/2021, 5:07 PMdouwe_maan
04/29/2021, 5:07 PMdouwe_maan
04/29/2021, 5:08 PMmeltano config airflow set webserver rbac true
gunnar
04/29/2021, 5:09 PMdouwe_maan
04/29/2021, 5:09 PMdouwe_maan
04/29/2021, 5:10 PMairflow users create
doesn't work at all without rbac
, note that the docs for https://airflow.apache.org/docs/apache-airflow/1.10.12/security.html?highlight=rbac#password say that the user should be created directly using python codegunnar
04/29/2021, 5:16 PMmeltano invoke airflow users list
douwe_maan
04/29/2021, 5:16 PMgunnar
04/29/2021, 5:19 PMmeltano invoke airflow webserver -p 5000 -D
The user does not show up in the webserver users list and there is still no authentication.douwe_maan
04/29/2021, 5:19 PMdouwe_maan
04/29/2021, 5:20 PMusers
table in that SQLite DB?douwe_maan
04/29/2021, 5:21 PMdouwe_maan
04/29/2021, 5:22 PMairflow.cfg
, and that you have to invoke it through meltano invoke airflow
. Beyond that everything you're seeing is Airflow behavior, and Airflow being confusing/buggydouwe_maan
04/29/2021, 5:22 PMgunnar
04/29/2021, 5:22 PMgunnar
04/29/2021, 5:43 PMgunnar
05/10/2021, 2:59 PMedward_ryan
04/06/2022, 5:39 PM