設定配置選項¶
首次執行 Airflow 時,它將在您的 $AIRFLOW_HOME 目錄(預設為 ~/airflow)中建立一個名為 airflow.cfg 的檔案。這樣做是為了方便您“試用”Airflow 配置。
但是,對於生產環境,建議您使用命令列生成配置
airflow config list --defaults
該命令將產生輸出,您可以將其複製到您的配置檔案中進行編輯。
它將包含所有預設配置選項和示例,並進行了良好的註釋,因此您只需取消註釋並修改您想要更改的選項即可。這樣,您可以輕鬆跟蹤所有與預設值不同的配置選項,並且當新版本的 Airflow 釋出時,您也可以輕鬆地將您的安裝升級到新版本,並自動使用其中已更改的現有選項的預設值。
您可以將其重定向到您的配置檔案並進行編輯。
airflow config list --defaults > "${AIRFLOW_HOME}/airflow.cfg"
您也可以使用此格式透過環境變數設定選項:AIRFLOW__{SECTION}__{KEY}(請注意雙下劃線)。
例如,元資料資料庫連線字串可以在 airflow.cfg 中按如下方式設定:
[database]
sql_alchemy_conn = my_conn_string
或者透過建立相應的環境變數:
export AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=my_conn_string
請注意,當部分名稱中包含點時,設定環境變數時必須將其替換為下劃線。例如,考慮虛擬部分 providers.some_provider
[providers.some_provider]
this_param = true
export AIRFLOW__PROVIDERS_SOME_PROVIDER__THIS_PARAM=true
您也可以透過在鍵後附加 _cmd 來在執行時派生連線字串,如下所示:
[database]
sql_alchemy_conn_cmd = bash_command_to_run
您也可以透過在鍵後附加 _secret 來在執行時派生連線字串,如下所示:
[database]
sql_alchemy_conn_secret = sql_alchemy_conn
# You can also add a nested path
# example:
# sql_alchemy_conn_secret = database/sql_alchemy_conn
這將從 Secret Backends(例如 Hashicorp Vault)檢索配置選項。有關更多詳情,請參閱 Secret Backends。
以下配置選項支援 _cmd 和 _secret 版本:
sql_alchemy_conn在[database]部分中fernet_key在[core]部分中broker_url在[celery]部分中flower_basic_auth在[celery]部分中result_backend在[celery]部分中password在[atlas]部分中smtp_password在[smtp]部分中secret_key在[webserver]部分中
_cmd 配置選項也可以像普通配置選項一樣使用相應的環境變數設定。例如:
export AIRFLOW__DATABASE__SQL_ALCHEMY_CONN_CMD=bash_command_to_run
類似地,_secret 配置選項也可以使用相應的環境變數設定。例如:
export AIRFLOW__DATABASE__SQL_ALCHEMY_CONN_SECRET=sql_alchemy_conn
注意
配置選項必須遵循 secrets backend 中定義的配置字首命名約定。這意味著 sql_alchemy_conn 不是使用連線字首定義,而是使用配置字首定義。例如,它應命名為 airflow/config/sql_alchemy_conn
這樣做的目的是不在主機上的純文字檔案中儲存密碼。
所有配置選項的通用優先順序順序如下:
設定為環境變數 (
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN)設定為命令環境變數 (
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN_CMD)設定為 secret 環境變數 (
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN_SECRET)在
airflow.cfg中設定在
airflow.cfg中的命令在
airflow.cfg中的 secret keyAirflow 內建預設值
注意
對於 Airflow 版本 >= 2.2.1, < 2.3.0,在某些情況下,Airflow 的內建預設值優先於 airflow.cfg 中的 command 和 secret key。
您可以使用 airflow config list 命令檢查當前配置。
如果您只想檢視一個選項的值,可以使用 airflow config get-value 命令,如下例所示。
$ airflow config get-value core executor
LocalExecutor
注意
有關配置選項的更多資訊,請參閱 配置參考
注意
有關 Python 和 Airflow 如何管理模組的詳情,請參閱 模組管理。
注意
在所有 Airflow 元件中使用相同的配置。雖然並非每個元件都需要所有配置,但有些配置必須相同,否則它們將無法按預期工作。一個很好的例子是 secret_key,它在 Webserver 和 Worker 上必須相同,以便 Webserver 可以從 Worker 獲取日誌。
webserver key 也用於在檢索日誌時授權對 Celery worker 的請求。使用 secret key 生成的令牌具有較短的有效期 - 請確保執行 Airflow 元件的 *所有* 機器上的時間是同步的(例如使用 ntpd),否則訪問日誌時可能會出現“forbidden”錯誤。
配置本地設定¶
一些 Airflow 配置是透過本地設定進行的,因為它們需要更改 Airflow 初始化時執行的程式碼。通常在詳細文件中會提到在哪裡配置這些本地設定 - 這通常在 airflow_local_settings.py 檔案中完成。
您應該建立一個 airflow_local_settings.py 檔案,並將其放在 sys.path 中的目錄或 $AIRFLOW_HOME/config 資料夾中。(Airflow 在初始化時會將 $AIRFLOW_HOME/config 新增到 sys.path 中)從 Airflow 2.10.1 開始,$AIRFLOW_HOME/dags 資料夾在初始化時不再包含在 sys.path 中,因此該資料夾中的任何本地設定都不會被匯入。請確保 airflow_local_settings.py 位於初始化期間屬於 sys.path 的路徑中,例如 $AIRFLOW_HOME/config。有關此更改的更多背景資訊,請參閱郵件列表公告。
您可以在此處檢視此類本地設定的示例:
您可以透過這種方式配置的示例設定: