🎉

AirflowのSSHOperatorを試してみた

2022/09/06に公開

前提

SSHアクセス先のCentOSサーバへは公開鍵認証方式でアクセスします。

Airflowで接続情報を作成する

Airflowへアクセスし、上部メニューバーの「Admin」より「Connections」をクリックします。

必要な情報を記入していきます。

  • Conn Id : 一意な名前を入力します。
  • Conn Type : 今回はSSHを選択します。
  • Description : 説明はお好きにどうぞ。
  • Host : アクセス対象のサーバのIPアドレスを記入します。
  • Password : パスワード設定していないの空白。
  • Port : SSHのデフォルトポートから変更していないので22を入力。
  • Extra : ここに秘密鍵の場所を記入します。

秘密鍵の注意点

秘密鍵の配置場所について

私の環境はCentOS7上のDockerで動かしていますので、秘密鍵はDocker上に配置します。
また関係あるか分かりませんが、私はDAGファイルがある同じ階層に秘密鍵を置いています。

秘密鍵のパーミッションについて

あまり良くないですが777の権限を付与しています。

root@670f2c84dbfd:/opt/airflow# chmod -R 777 /opt/airflow/dags/id_rsa

SSHOperatorについて

  • ssh_conn_id : 「Connections」で作成したConn IDを指定します。
  • command : 実行したいコマンドを記入します。
import datetime
from airflow import DAG
from airflow.contrib.operators.ssh_operator import SSHOperator
from airflow.contrib.hooks.ssh_hook import SSHHook

args = {
    'owner': 'masato watanabe',
    'start_date': datetime.datetime(2022, 9, 1)
}


dag = DAG('ssh_dag', default_args=args, schedule_interval='0 0 * * *')

ssh_touch = SSHOperator(
    task_id='log_delete',
    ssh_conn_id='*****',
    command='sudo rm -fr /var/log/maillog-*',
    dag=dag
)

Discussion