CloudComposer(GCP の Airflow のマネージドサービス)で運用している Airflow 1 系上で設定されている環境変数を JSON ファイルとして書き出したかったが、つまずいたのでメモを公開しておく。

Airflow の運用の理想としては、リポジトリをベースに CI 経由で CloudComposer を構築していくのがベスト。 だが、Airflow では GUI でお手軽に環境変数(Airflow では Variables という概念1)が設定でき、便利な半面、デメリットとしてリポジトリをベースにした Single Source of Truth の状態が保てなくなってしまう。

Airflow の環境変数を JSON ファイルとして書き出す方法

  1. 上部の Admin メニューから、Variablesをクリックしてページに移動
  2. With selectedボタンをクリックすると Exportボタンがドロップダウンリスト内にでてくるので、これをクリックすれば Airflow に保存されている環境変数を JSON ファイルとして書き出せる
    • Export できるとは初見でわからなかったのでこの UI を考えた人は罪深い。@naoさんに教えていただけて感謝!

Airflow で環境変数をJSONファイルとしてお手軽に書き出す方法

Airflow CLI からでも環境変数を JSON ファイルとして出力できるらしい2が、手元から

1
gcloud composer environments run COMPOSER_NAME --location asia-northeast1 variables -- --export env.json

を実行してもローカルには保存されなかったので、実行結果は CloudComposer 内部のインスタンスに保存されている模様。

Bash と GCS のオペレーターを組み合わせれば JSON ファイルを GCS に保存はできそうだが、それもめんどくさそうではある。 直接 SSH で CloudComposer のインスタンスにつなげたほうがまだ楽そうですよね

まとめ

Airflow の GUI で環境変数を設定するのは便利だけど、Single Souce of Truth ではなくなるので使い所をきちんと見極めよう!!


  1. Variables — Airflow Documentation ↩︎

  2. python - Export all Airflow variables - Stack Overflow ↩︎

See Also

Support

記事をお読みくださりありがとうございます。このウェブサイトの運営を支援していただける方を募集しています。 もしよろしければ、下のボタンからサポート(投げ銭)していただけると、ブログ執筆、情報発信のモチベーションに繋がります✨