Airflow ile remote directory mount etme

 Uzak bir makinede dockerize olarak calisan bir airflow instance'im var. Bu airflow instance'i da baska bir remote machine'deki bir directory'e erisip, okuyup yazmasi icab ediyor. Aslinda gecen bir postta bahsetmistim. Dosyalari kopyalamak cok zahmetli onun icin mount etmemiz daha mantikli. 

Esasinda isin ozu su ki, eger uzak makinedeki directory zaten mount edilmisse bisey yapma. Eger degilse bunu mount et. Burada 3rd party bir uygulama olan sshf kullandim ki onceki bir yazida bahsetmistim. Bunu kurmak kolay, ve de parolayi da bir cakallik ile buna aktarabiliyoruz. 

Esas olay bir bash script'ini uzak makineye gonderip orada calistirmak:

bash -c "if mountpoint -q -- '{lokaldeki_mount_noktasi}'; then \
    printf 'maprfs is already mounted'; \
else \
    echo '{password}' | sshfs -o password_stdin -o allow_other kullanici@uzak_makine:klasor_to_mount {
lokaldeki_mount_noktasi}; fi"

Bu komutu SSHOperator ile host makineye gonderiyorum. Cunku neden? Aslinda Airflof ayni makinede calisiyor ama docker icerisinde. 

Son olarak operatorumuz su sekilde oluyor,

gerekeni_yap = SSHOperator(
    ssh_conn_id='ssh_baglanti_id',
    task_id="skati_bizi_mountla",
    command=yukardaki_bash_komutu,
    dag=dag
)

hadi hayirli guresler.

Yorumlar

Bu blogdaki popüler yayınlar

Python'da Multithreading ve Multiprocessing

Threat Modeling 1

Encoding / Decoding