🎉
AirflowのSSHOperatorを試してみた
前提
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