Apache Airflow Kurulumu ve LDAP Entegrasyonu
  1. Anasayfa
  2. Open Source

Apache Airflow Kurulumu ve LDAP Entegrasyonu

0

Apache Airflow iş akışlarını planlamak ve izlemek için kullanılan open source bir platformdur. Apache firması tarafından 2015 yılında ilk sürümü yayınlanmıştır. Python uyumlu olması basit bir web arayüzüne sahip olması önemli özelliklerindendir, Python projelerinin iş akışlarınının düzenlenmesinde çok büyük kolaylık sağlamaktadır.

Kurulum:

Apache Airflow kurulacak makinede Python 3.6 olmalıdır eğer python daha düşük sürümü ile çalışan bir sunucunuz varsa virtual env ile kurulum yapılması önerilmektedir.

Ben bu makalemde apache airflow kurulumunda postgresql kullanacağım ve authentication için ise ldap entegrasyonu kullanacağım.

Distro olarak Sles 15 Sp3 kullandım

Apache Airflow;

PostgreSQL, MySQL SQLite ve MS SQL desteklemektedir.

https://airflow.apache.org/docs/apache-airflow/stable/installation/prerequisites.html

Kuruluma  başlamadan önce aşağıdaki komut ile airflow home folderını belirtiyoruz,

Eğer yüklü değilse python3 ü yükleyelim

Mümkünse 3.6 olması tercih edilir

zypper in python3

export AIRFLOW_HOME=~/airflow

pip3 install apache-airflow

pip3 install typing_extensions

Postgresql kullanacağım için aşağıdaki modülüde kurmam gerekiyor,

pip3 install psycopg2

Resim-1

 PostgreSQL Kurulumu

Airflow kurulumu sonrasında postgresql kurulumuna geçelim

zypper in postgresql13-server ( Sles)Servisi kontrol edelim,

systemctl status postgresql.service

İlgili confa girelim distroya göre pathi değişiklik gösterebilir,

/var/lib/pgsql/data/postgresql.conf

Listen_adress kısmını bulup aşağıdaki gibi değiştirelim.

listen_addresses = ‘*’

Resim-2

Ardından aşağıdaki conf dosyasına girelim,

/var/lib/pgsql/data/pg_hba.conf

En alttaki satırları aşağıdaki gibi ayarlayalım,

Resim-3

# IPv6 local connections:

host    all             all             ::1/128                 md5

# Allow replication connections from localhost, by a user with the

# replication privilege.

#local   replication     all                                     peer

#host    replication     all             127.0.0.1/32            ident

#host    replication     all             ::1/128                 ident

#local all postgres peer

local all               postgres                                 peer

local postgres          omi                                      md5

local all               all                                      md5

# TYPE DATABASE USER ADDRESS METHOD

host all                all             0.0.0.0/0                md5

kaydet de ve çık…

systemctl start  postgresql.service

komutu ile servisi başlatalım

Resim-4

Ardından postgres userına geçiş yapalım

su  – postgres

ardından psql komutu ile sql cli a geçilir

Resim-5

Aşağıdaki komut ile airflow için db oluşturulur

postgres=# create database airflow_db;

CREATE DATABASE

Sonra user

create user airflowuserismi with encrypted password ‘şifreneolacaksa’;

CREATE ROLE

Yetki veriyoruz

grant all privileges on database airflow_db to airflow;

GRANT

\q komutu ile çıkıyoruz

Kontrol ediyoruz

psql -U airflow -h localhost -d airflow_db

eğer hata almadan aşağıdaki gibi çıktı geliyorsa database oluşmuş demektir,

Resim-6

Airflow Ayarlanması

Şimdi airflow ayarlarını yapılandırmaya gelelim,

Airflow home folderına gelelim

Airflow home folderında ilgili folderlarında oluşturulduğundan emin olalım

dags logs scripts

eğer yoksa

mkdir dags logs scripts

komutu ile oluşturalım

Ardından

airflow.cfg dosyasını açalım

Önemli olan satırları aşağıda yazıyorum bunları değiştirin diğerleri aynı kalabilir

dags_folder = /opt/airflow/dags (sizde hangi folder ise )

executor = LocalExecutor ( Bu çok önemli aynı anda parallel işlemler yaptırmak istiyorsak Localexecutor olmalı)

default_timezone = Europe/Istanbul ( Saat ayarları)

sql_alchemy_conn = postgresql+psycopg2://airflowdbuser:airflowdbşifreniz@localhost/ airflow_db

(postgresql adımında oluşturduğumuz airflowdb userı ve şifresini Kırmızı ile belirttiğimi alanda yazıyoruz)

base_log_folder = /root/airflow/logs (Logları nereye yazdırmak istiyorsak)

web_server_host = sunucu ip adresiniz

 web_server_port = hangiporttan erişmek istiyorsanız default 8080

[smtp] sekmesinde mail attıracağınız host sunucunun kendisi veya relay bir host serverınız varsa ayarlayabilirsiniz.

Resim-7

LDAP Entegrasyonu

Son ayar olarak firmamızda active directory yapımız varsa kullanıcıların yetkilerini AD üstündeki gruplara göre verebiliyoruz , aşağıdaki yapılandırmayı yapmamız gerekmektedir.

Öncesinde

gcc.x86_64 , python3-devel, openldap-devel paketlerini kurmamız gerekiyor.

Son olarak ilgili paketide kuralım

python -m pip install python-ldap

Airflow home klasörüne gelelim “webserver_config.py” dosyasına aşağıdaki satırları ekleyelim

import os kısmından sonra aşağıdaki satırları ekleyelim

from airflow import configuration as conf

from flask_appbuilder.security.manager import AUTH_LDAP

basedir = os.path.abspath(os.path.dirname(__file__)) satırından sonra aşağıdaki satırı ekleyelim

SQLALCHEMY_DATABASE_URI = conf.get(‘core’, ‘SQL_ALCHEMY_CONN’)

 

 Resim-8

Dosyanın en altına gelelim ve aşağıdaki satırları ekleyelim bu satırları aynen yazdığım gibi eklemeniz gerekmektedir,(Not bu işlemde AD üstünden bütün userları görebilen read only bir bind user kullanmamız gerekecektir.)

CSRF_ENABLED = True

AUTH_TYPE = AUTH_LDAP

AUTH_LDAP_SERVER = “ldap://ADdomainadresiniz”

AUTH_LDAP_USE_TLS = False

AUTH_LDAP_ALLOW_SELF_SIGNED = False

AUTH_ROLE_ADMIN = ‘Admin’

AUTH_USER_REGISTRATION = True

AUTH_USER_REGISTRATION_ROLE = “Viewer”

AUTH_LDAP_SEARCH = “DC=abc,DC=com,DC=tr” (Burası örnek verilmiştir , Search base olarak AD hesabınızın en tepesinide seçebilirsiniz istediğiniz bölümüde , abc.com.tr örnek olması açısından yazılmıştır.)

AUTH_LDAP_UID_FIELD = “sAMAccountName”

# For a typical OpenLDAP setup (where LDAP searches require a special account):

# The user must be the LDAP USER as defined in LDAP_ADMIN_USERNAME

AUTH_LDAP_BIND_USER = “CN=Readonlybelirlediğinizuser,OU=Bpp_Prx_Ftp_ID,OU=abckullanıcıları,DC=abc,DC=com,DC=tr”(AD üstünde read only bir hesabınızın DN ni buraya giriyoruz)

AUTH_LDAP_BIND_PASSWORD = “Şifre”(read only hesabın şifresi)

#a mapping from LDAP DN to a list of FAB roles

AUTH_ROLES_MAPPING = {

“CN=VM Admin,OU=Teknoloji,OU=Gruplar,OU=Gruplar,DC=abc,DC=com,DC=tr”: [“Admin”],

“CN=Standart Users,OU=User,OU=Gruplar,DC=abc,DC=com,DC=tr”: [“User”],

} (Bu kısımda hangi gruplara hangi yetkiyi verecekseniz o grupların DN lerini örnekteki gibi girmelisiniz)

# the LDAP user attribute which has their role DNs

AUTH_LDAP_GROUP_FIELD = “memberOf”

# if we should replace ALL the user’s roles each login, or only on registration

AUTH_ROLES_SYNC_AT_LOGIN = True

# force users to re-auth after 30min of inactivity (to keep roles in sync)

Ayarları bu şekilde yapıp kaydedin , daha sonra ilgili komutla airflow u çalıştırıyoruz,

airflow db init

Ardından webarayüz ile beraber uygulamayı başlatalım.

nohup  airflow webserver -p Port Numarasını Yazın > /opt/airflow/logs/airflow_web.err.log 2>&1 &

(arka planda çalışmasını istediğim için böyle çalıştırdım.)

Web arayüzden kontrol edelim

Resim-9

Arayüz geldi

Şimdi AD hesabımız ile giriş yapalım.

Gördüğünüz gibi arayüzümüz de geldi.

Resim-10

Ayrıca schedulerıda çalıştırmayı unutmayalım.

nohup  airflow scheduler > /opt/airflow/logs/airflow_scheduler.err.log 2>&1 &’

Bu şekilde yine arka planda çalışmasını ve logları başka bir yere dump etmesini sağladık.

Makalemizde neler yaptık;

  • Airflow kurulumunu yaptık
  • Postgresql kurulumunu yaptık
  • Airflow için database oluşturduk
  • Airflow için ayarları yaptık
  • Ldap entegrasyonu için ayarlamaları yaptık
  • Apache Airflowu çalıştırdık.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

 Referanslar

www.mshowto.org

TAGs: apache airflow nedir, airflow nedir, airflow kurulumu, apache airflow kurulumu

Bu İçeriğe Tepkin Ne Oldu?
  • 3
    harika_
    Harika!!
  • 2
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 1
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

SKILS: Linux Administrator | Bash Script | Big Data Administrator | Application Management | Apache Hadoop , Kafka , Spark | Oracle , Sles , Centos | Docker | Udemy Advisor

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir