我在 /etc/sysconfig/airflow 中配置了环境变量
PASSWORD=pass123
我希望能够在 BashOperator 中的 Bash 命令中使用它,以便密码在 Airflow UI 或日志中不可见。该变量随后将用于 DAG 任务,如下所示。
con = 'username/$PASSWORD@//ex01-db.mybiz.com:1521/dwh'
sqlcl_cmd = f"""/oracle/sqlcl/bin/sql -s {con} > /data/tmp/extract.csv <<EOF
SET SQLFORMAT CSV
SET FEEDBACK OFF
SET TERMOUT OFF
SET ECHO OFF
SELECT * FROM ORDER.DAILY_SALES;
EXIT
EOF
"""
BashOperator(
task_id = 'extract_order',
bash_command = sqlcl_cmd,
dag = dag
)
然而,观察到变量 $PASSWORD
没有被 Bash 扩展,导致错误。如何在 BashOperator 中正确使用要传递给 bash_command
的环境变量。
答案 0 :(得分:0)
首先,测试您的气流用户是否可以访问该变量。 '回声$密码'。如果不想在日志中显示,可以临时更改 $PASSWORD。
如果是,那么您可以在 bash 任务中传递带有参数的 con,如您在此处看到的:https://airflow.apache.org/docs/apache-airflow/1.10.2/tutorial.html
con = 'username/$PASSWORD@//ex01-db.mybiz.com:1521/dwh'
sqlcl_cmd = f"""/oracle/sqlcl/bin/sql -s {{params.con}} > /data/tmp/extract.csv <<EOF
SET SQLFORMAT CSV
SET FEEDBACK OFF
SET TERMOUT OFF
SET ECHO OFF
SELECT * FROM ORDER.DAILY_SALES;
EXIT
EOF
"""
BashOperator(
task_id = 'extract_order',
params={'con': con},
bash_command = sqlcl_cmd,
dag = dag
)