SaltStack Altyapısı: Salt Master Kurulumu
SaltStack, modern IT altyapılarının yönetimi için tasarlanmış güçlü, açık kaynaklı bir yapılandırma yönetimi ve uzaktan yürütme sistemidir. Büyük ölçekli, karmaşık ve dinamik sistemleri otomatikleştirmek, yapılandırmak ve yönetmek için geliştirilmiştir. Bu makalede, SaltStack altyapısının kalbi olan Salt Master bileşeninin kurulumunu, yapılandırmasını ve temel güvenlik adımlarını detaylı bir şekilde inceleyeceğiz.
Giriş: SaltStack Nedir ve Neden Kullanılır?
Günümüzün hızla değişen ve büyüyen dijital dünyasında, sunucu ve servis yönetimini manuel olarak gerçekleştirmek hem zaman alıcı hem de hataya açık bir süreçtir. Bu noktada, otomasyon araçları devreye girer. SaltStack, bu otomasyon araçlarından biridir ve özellikle yüksek performanslı uzaktan yürütme (remote execution) yetenekleri ve esnek yapılandırma yönetimi (configuration management) özellikleri ile öne çıkar.
SaltStack, “Master-Minion” mimarisine dayalı çalışır. Merkezi bir “Salt Master” sunucusu, ağdaki diğer sunucular olan “Salt Minion”ları yönetir. Master, Minion’lara komutlar gönderir, yapılandırmaları uygular ve sistem durumlarını denetler. Bu iletişim, hızlı ve güvenli bir mesajlaşma katmanı olan ZeroMQ üzerinden gerçekleşir. Yapılandırmalar genellikle YAML formatında tanımlanan “State” dosyaları ve Jinja şablonlama motoru kullanılarak yazılır, bu da yapılandırmaların okunabilirliğini ve esnekliğini artırır.
SaltStack’in temel kullanım alanları şunlardır:
* Yapılandırma Yönetimi: Sunucuların, uygulamaların ve servislerin belirli bir duruma (state) getirilmesini ve bu durumda kalmasını sağlar. Örneğin, bir web sunucusunun Apache kurulu, belirli bir versiyonda ve belirli yapılandırma dosyalarına sahip olmasını garanti edebilirsiniz.
* Uzaktan Yürütme: Binlerce sunucuda aynı anda veya belirli gruplarda anında komutlar çalıştırma yeteneği sunar. Bu, yama yönetimi, yazılım dağıtımı veya anlık sorun giderme için kritik öneme sahiptir.
* Orkestrasyon: Karmaşık iş akışlarını ve çok adımlı dağıtımları yönetir. Birden fazla sunucu veya servis arasında bağımlılıkları olan işlemleri sıralı bir şekilde yürütebilir.
* Bulut Provizyonlama: Salt Cloud modülü ile çeşitli bulut sağlayıcıları (AWS, Azure, Google Cloud vb.) üzerinde sanal makinelerin oluşturulması, yapılandırılması ve yönetilmesi otomatize edilebilir.
Diğer popüler otomasyon araçları olan Ansible, Puppet ve Chef ile karşılaştırıldığında, SaltStack özellikle hız ve ölçeklenebilirlik açısından avantajlar sunar. ZeroMQ tabanlı iletişim ve event-driven mimarisi sayesinde, çok sayıda minion ile bile hızlı yanıt süreleri elde edilebilir. Ayrıca, SaltStack’in modüler yapısı, farklı ihtiyaçlara göre kolayca genişletilebilmesini sağlar.
SaltStack Mimarisi: Temel Bileşenler
SaltStack’in etkin bir şekilde kullanılabilmesi için temel mimari bileşenlerini anlamak önemlidir. Bu bileşenler, sistemin nasıl çalıştığını ve birbiriyle nasıl etkileşim kurduğunu gösterir.
Salt Master
Salt Master, SaltStack altyapısının merkezi kontrol noktasıdır. Tüm yapılandırma dosyaları (states, pillars), modüller ve otomasyon mantığı Master üzerinde bulunur. Minion’lardan gelen verileri alır, komutları işler ve Minion’lara gönderilecek talimatları belirler. Bir ağda genellikle tek bir Master sunucusu bulunur, ancak yüksek kullanılabilirlik için birden fazla Master da yapılandırılabilir (Active/Passive veya Active/Active, Syndic ile). Master, Minion’larla iletişim kurmak için belirli TCP portlarını (varsayılan olarak 4505 ve 4506) kullanır.
Salt Minion
Salt Minion, Master tarafından yönetilen her bir sunucu veya sanal makine üzerinde çalışan ajandır. Master’dan gelen komutları dinler, yapılandırmaları uygular ve sonuçları Master’a geri gönderir. Her Minion’un Master ile güvenli bir şekilde iletişim kurabilmesi için bir kimlik doğrulama anahtarına (key) sahip olması gerekir. Bu anahtar, Master tarafından kabul edildiğinde Minion, Master’ın komutlarını almaya başlar. Minion’lar, farklı işletim sistemlerinde (Linux, Windows, macOS) çalışabilir.
Salt Key
Salt Key, Master ile Minion arasındaki güvenli iletişimi sağlayan RSA anahtar çiftlerini yönetmek için kullanılan bir mekanizmadır. Bir Minion ilk kez Master’a bağlanmaya çalıştığında, kendi genel anahtarını Master’a gönderir. Master yöneticisi, bu anahtarı salt-key komutu ile kabul etmelidir. Anahtar kabul edildikten sonra, Master ve Minion arasındaki tüm iletişim şifreli ve güvenli hale gelir. Bu, yetkisiz Minion’ların sisteme bağlanmasını engeller ve güvenlik sağlar.
Diğer Bileşenler (Kısa Bir Bakış)
* Salt Proxy Minion: Geleneksel Minion kurulamayan (örneğin ağ cihazları, IoT cihazları) veya API üzerinden yönetilen cihazlar için kullanılır. Minion gibi davranır ancak doğrudan cihaza değil, API’si aracılığıyla cihaza bağlanır.
* Salt Syndic: Çoklu Master ortamlarında veya büyük ölçekli hiyerarşik yapılarda kullanılır. Bir “Master of Masters” gibi davranarak alt Master’ları yönetir ve komutları dağıtır.
* ZeroMQ ve MSGPack: SaltStack’in yüksek performanslı iletişim katmanını oluşturan temel teknolojilerdir. ZeroMQ, hızlı, asenkron mesajlaşma sağlarken, MSGPack veri serileştirme için kullanılır ve JSON’dan daha kompakt ve hızlıdır.
Salt Master Kurulum Öncesi Hazırlıklar
Salt Master kurulumuna başlamadan önce, sorunsuz bir kurulum ve kararlı bir çalışma ortamı sağlamak için bazı ön hazırlıklar yapmak önemlidir. Bu adımlar, potansiyel sorunları önlemeye yardımcı olacaktır.
Sistem Gereksinimleri
Salt Master’ın çalışacağı sunucunun donanım gereksinimleri, yönetilecek Minion sayısı ve yürütülecek görevlerin karmaşıklığına bağlıdır.
* İşletim Sistemi: Çoğu Linux dağıtımı desteklenir (Ubuntu, Debian, CentOS, RHEL, Fedora, OpenSUSE). SaltStack, Windows ve macOS üzerinde de çalışabilir ancak genellikle Linux sunucular tercih edilir. Bu makalede Linux kurulumlarına odaklanacağız.
* CPU: Küçük ortamlar için 1-2 çekirdek yeterli olabilirken, yüzlerce veya binlerce Minion yönetilecekse 4-8 veya daha fazla çekirdek gerekebilir.
* RAM: Temel bir kurulum için 2GB RAM yeterli olabilir. Ancak, Minion sayısı arttıkça, karmaşık state’ler çalıştırıldıkça veya Salt API gibi ek bileşenler kullanıldıkça RAM ihtiyacı 4GB, 8GB veya daha fazlasına çıkabilir.
* Disk Alanı: SaltStack’in kendisi çok fazla disk alanı kaplamaz. Ancak, log dosyaları, state dosyaları, pillar verileri ve özellikle Minion’lardan gelen verilerin depolanması için yeterli alan ayrılmalıdır. Minimum 20-40GB önerilir.
Ağ Gereksinimleri
Salt Master ve Minion’lar arasındaki iletişim belirli portlar üzerinden gerçekleşir. Bu portların güvenlik duvarında açık olması ve erişilebilir olması kritik öneme sahiptir.
* TCP 4505 (publish_port): Salt Master, Minion’lara komutları ve olayları bu port üzerinden yayınlar.
* TCP 4506 (ret_port): Minion’lar, Master’a komut sonuçlarını ve dönüş verilerini bu port üzerinden gönderir.
* Bu portların Master sunucusunda dinleniyor olması ve Minion’ların bu portlara erişebiliyor olması gerekir.
Güvenlik Duvarı Yapılandırması
Salt Master sunucusunda çalışan güvenlik duvarı (örn. ufw veya firewalld), yukarıda belirtilen 4505 ve 4506 numaralı TCP portlarına gelen bağlantılara izin verecek şekilde yapılandırılmalıdır.
* Ubuntu/Debian (UFW):
sudo ufw allow 4505/tcp
sudo ufw allow 4506/tcp
sudo ufw enable
sudo ufw status
* CentOS/RHEL (firewalld):
sudo firewall-cmd --zone=public --add-port=4505/tcp --permanent
sudo firewall-cmd --zone=public --add-port=4506/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
DNS ve Hostname Yapılandırması
Salt Master ve Minion’lar arasında doğru iletişimi sağlamak için DNS çözünürlüğü veya /etc/hosts dosyası yapılandırması önemlidir.
* Master’ın hostname’i doğru bir şekilde ayarlanmalı ve Minion’lar tarafından çözümlenebilir olmalıdır.
* Minion’lar, Master’ın IP adresini veya hostname’ini bilmelidir. Genellikle Minion’ların yapılandırma dosyasında ( /etc/salt/minion ) master: parametresi ile Master’ın hostname’i veya IP adresi belirtilir. DNS kaydı kullanmak, IP değişikliklerinde esneklik sağlar.
Salt Master Kurulum Adımları (Linux Dağıtımlarına Göre)
Salt Master’ı kurmanın en önerilen yolu, SaltStack tarafından sağlanan resmi paket depolarını kullanmaktır. Bu, en güncel ve kararlı sürümlere erişimi sağlar.
Ubuntu/Debian Üzerine Kurulum
Ubuntu veya Debian tabanlı bir sistemde Salt Master kurulumu aşağıdaki adımlarla gerçekleştirilir:
1. GPG Anahtarını Ekleme: SaltStack paketlerinin güvenilirliğini doğrulamak için GPG anahtarını sisteminize ekleyin.
sudo apt update
sudo apt install -y wget apt-transport-https gnupg2
wget -O - https://repo.saltproject.io/py3/ubuntu/22.04/amd64/archive/2023.7.2/SALTSTACK-GPG-KEY.pub | sudo gpg --dearmor -o /usr/share/keyrings/salt-archive-keyring.gpg
Not: Yukarıdaki URL’deki 22.04 Ubuntu sürümünüze ve 2023.7.2 SaltStack sürümüne göre değişebilir. En güncel URL’yi SaltStack’in resmi dokümantasyonundan kontrol etmeniz önerilir.
2. SaltStack Deposunu Ekleme: Sisteminizin paket yöneticisinin SaltStack depolarını bilmesini sağlayın.
echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/ubuntu/22.04/amd64/archive/2023.7.2 jammy main" | sudo tee /etc/apt/sources.list.d/salt.list
Not: jammy (Ubuntu 22.04) ifadesini kendi Ubuntu sürümünüzün kod adıyla değiştirin (örn. focal for 20.04, bionic for 18.04).
3. Paket Listesini Güncelleme: Yeni depoyu ekledikten sonra paket listesini güncelleyin.
sudo apt update
4. salt-master Paketini Yükleme: Salt Master paketini ve bağımlılıklarını yükleyin.
sudo apt install -y salt-master
5. Servisi Başlatma ve Etkinleştirme: Salt Master servisini başlatın ve sistem başlangıcında otomatik olarak başlaması için etkinleştirin.
sudo systemctl start salt-master
sudo systemctl enable salt-master
sudo systemctl status salt-master
systemctl status salt-master komutu, servisin çalıştığını (active (running)) göstermelidir.
CentOS/RHEL Üzerine Kurulum
CentOS veya RHEL tabanlı bir sistemde Salt Master kurulumu aşağıdaki adımlarla gerçekleştirilir:
1. EPEL Deposunu Etkinleştirme (Gerekliyse): Bazı SaltStack bağımlılıkları EPEL (Extra Packages for Enterprise Linux) deposunda bulunabilir. Eğer sisteminizde etkin değilse, etkinleştirin.
sudo dnf install -y epel-release # CentOS 8 / RHEL 8+
# sudo yum install -y epel-release # CentOS 7 / RHEL 7
2. SaltStack Deposunu Ekleme: SaltStack deposu için bir .repo dosyası oluşturun.
sudo dnf install -y https://repo.saltproject.io/py3/redhat/salt-py3-repo-latest.el8.noarch.rpm
# Veya spesifik bir sürüm için:
# sudo dnf install -y https://repo.saltproject.io/py3/redhat/salt-py3-repo-2023.7.2.el8.noarch.rpm
Not: Yukarıdaki URL’deki el8 ifadesi RHEL/CentOS 8 içindir. Kendi işletim sistemi sürümünüze göre el7 veya el9 olarak değiştirmeniz gerekebilir. En güncel URL’yi SaltStack’in resmi dokümantasyonundan kontrol etmeniz önerilir.
3. salt-master Paketini Yükleme: Salt Master paketini ve bağımlılıklarını yükleyin.
sudo dnf install -y salt-master # CentOS 8 / RHEL 8+
# sudo yum install -y salt-master # CentOS 7 / RHEL 7
4. Servisi Başlatma ve Etkinleştirme: Salt Master servisini başlatın ve sistem başlangıcında otomatik olarak başlaması için etkinleştirin.
sudo systemctl start salt-master
sudo systemctl enable salt-master
sudo systemctl status salt-master
systemctl status salt-master komutu, servisin çalıştığını (active (running)) göstermelidir.
Salt Master Temel Yapılandırması
Salt Master kurulumundan sonra, varsayılan yapılandırma genellikle çoğu senaryo için yeterli olsa da, bazı temel ayarları özelleştirmek isteyebilirsiniz. Salt Master’ın ana yapılandırma dosyası /etc/salt/master dizinindedir.
Bu dosya, YAML formatında düzenlenmiş birçok parametre içerir. İşte en sık kullanılan ve önemli olanlardan bazıları:
* interface: Master’ın hangi ağ arayüzünde dinleyeceğini belirtir. Varsayılan olarak tüm arayüzlerde dinler (0.0.0.0). Eğer Master’ın belirli bir IP adresinde dinlemesini istiyorsanız, buraya o IP adresini yazabilirsiniz.
interface: 192.168.1.100
* publish_port ve ret_port: Master’ın Minion’larla iletişim kurmak için kullandığı portlardır. Varsayılan değerler sırasıyla 4505 ve 4506’dır. Güvenlik duvarı kurallarınızla tutarlı olmalıdır.
publish_port: 4505
ret_port: 4506
* file_roots: Salt State dosyalarının (SLS dosyaları) ve diğer Salt modüllerinin depolandığı dizinleri belirtir. Bu, SaltStack’in yapılandırma yönetimi için kullandığı temel dosya sistemidir. Genellikle /srv/salt dizini kullanılır. Farklı ortamlar (dev, test, prod) veya projeler için farklı kök dizinler tanımlanabilir.
file_roots:
base:
- /srv/salt
dev:
- /srv/salt/dev
Burada base varsayılan ortamdır. Minion’lar varsayılan olarak base ortamındaki state’leri arar.
* pillar_roots: Hassas verilerin (parolalar, API anahtarları, özel yapılandırma değerleri) depolandığı dizinleri belirtir. Pillar verileri, Minion’lara özel olarak şifrelenir ve yalnızca o Minion’un erişimine izin verilir. Bu, güvenliği artırır. Genellikle /srv/pillar dizini kullanılır.
pillar_roots:
base:
- /srv/pillar
* log_level ve log_file: Günlükleme seviyesini ve günlük dosyasının konumunu ayarlar. Hata ayıklama veya sorun giderme için önemlidir. Olası seviyeler: debug, info, warning, error, critical. Varsayılan olarak warning veya info olabilir.
log_level: info
log_file: /var/log/salt/master
* auto_accept: Yeni Minion anahtarlarının otomatik olarak kabul edilip edilmeyeceğini belirler. Varsayılan olarak False‘tur ve güvenlik nedeniyle False olarak bırakılması şiddetle tavsiye edilir. True olarak ayarlanması, herhangi bir Minion’un Master’a bağlanmasına izin verir ki bu büyük bir güvenlik riski oluşturur. Anahtarların manuel olarak kabul edilmesi, Minion kimlik doğrulamasının önemli bir parçasıdır.
auto_accept: False
Yapılandırma dosyasında herhangi bir değişiklik yaptıktan sonra, Salt Master servisini yeniden başlatmanız gerekir:
sudo systemctl restart salt-master
Salt Master Güvenliği
Salt Master, tüm altyapınızın kontrol noktasında olduğu için güvenliği son derece önemlidir. Yanlış yapılandırılmış bir Master, tüm Minion’ları tehlikeye atabilir.
Kimlik Doğrulama (Minion Key Kabulü)
Daha önce belirtildiği gibi, auto_accept: False ayarı kritik öneme sahiptir. Yeni bir Minion Master’a bağlandığında, Minion’un genel anahtarı Master’ın “unaccepted” anahtarlar listesine eklenir. Yönetici olarak bu anahtarı manuel olarak kabul etmelisiniz.
* Bekleyen anahtarları listeleme:
sudo salt-key -L
Bu komut, Accepted Keys, Denied Keys, Unaccepted Keys ve Rejected Keys listelerini gösterecektir.
* Anahtarı kabul etme:
sudo salt-key -a
yerine Minion’un hostname’i veya yapılandırma dosyasında ( /etc/salt/minion ) belirtilen id değeri yazılır.
* Tüm bekleyen anahtarları kabul etme (dikkatli kullanılmalı):
sudo salt-key -A
Güvenlik Duvarı Kuralları
Master sunucusundaki güvenlik duvarının sadece 4505 ve 4506 TCP portlarına gelen bağlantılara izin verdiğinden emin olun. Ayrıca, bu portlara yalnızca bilinen Minion IP adreslerinden erişime izin veren kısıtlayıcı kurallar uygulamak daha da güvenlidir.
SSL/TLS Kullanımı (İleri Seviye)
SaltStack, varsayılan olarak ZeroMQ üzerinde kendi kimlik doğrulama ve şifreleme mekanizmalarını kullanır. Ancak, bazı ortamlar ek TLS/SSL şifrelemesi gerektirebilir. Bu, Salt Master yapılandırma dosyasında (/etc/salt/master) ssl_enable, ssl_cert, ssl_key gibi parametrelerle yapılandırılabilir. Bu, genellikle daha karmaşık bir kurulum gerektirir ve PKI (Public Key Infrastructure) bilgisi gerektirir.
Kullanıcı Yetkilendirmesi (eauth)
SaltStack, farklı kullanıcıların Master üzerinde belirli yetkilerle komut çalıştırmasına izin veren eauth (external authentication) sistemine sahiptir. PAM, LDAP, GitHub, vSphere gibi farklı kimlik doğrulama arka uçları kullanılabilir. Bu sayede, Salt Master’a erişen kullanıcıların hangi Minion’larda hangi komutları çalıştırabileceği veya hangi state’leri uygulayabileceği detaylı bir şekilde kontrol edilebilir.
Örnek bir eauth yapılandırması (/etc/salt/master):
external_auth:
pam:
saltuser:
- .*
Bu örnek, saltuser adlı bir PAM kullanıcısının tüm Minion’larda (.*) herhangi bir komutu çalıştırmasına izin verir. Bu yetkilendirme, /etc/salt/master dosyasında tanımlanan ACL (Access Control List) kuralları ile detaylandırılır.
Güvenli Pillar Kullanımı
Pillar verileri, hassas bilgileri içerdiği için özel bir güvenlik katmanına sahiptir. Pillar’lar, Minion’a özel olarak şifrelenir ve yalnızca ilgili Minion tarafından okunabilir. Ancak, Pillar’ların düz metin olarak depolanması yerine, HashiCorp Vault gibi harici bir sır yöneticisi ile entegre etmek, hassas verilerin güvenliğini daha da artırır. SaltStack, Vault gibi araçlarla entegrasyon için yerleşik modüllere sahiptir.
İlk Testler ve Kontroller
Salt Master kurulumunu tamamladıktan ve temel yapılandırmaları yaptıktan sonra, her şeyin beklendiği gibi çalıştığından emin olmak için bazı kontroller yapmak önemlidir.
1. salt-master Servis Durumunu Kontrol Etme:
Servisin çalışır durumda olduğunu doğrulayın.
sudo systemctl status salt-master
Çıktıda active (running) ifadesini görmelisiniz.
2. Portların Dinlendiğini Doğrulama:
Master’ın 4505 ve 4506 portlarını dinlediğini kontrol edin.
sudo netstat -tulnp | grep 450
Veya, eğer netstat kurulu değilse:
sudo ss -tulnp | grep 450
Bu komutlar, salt-master sürecinin ilgili portlarda dinlediğini göstermelidir.
3. Mevcut Anahtarları Listeleme:
Şu anda kabul edilmiş veya bekleyen Minion anahtarlarının olup olmadığını kontrol edin. Yeni bir kurulumda ve henüz Minion bağlanmadığında, Unaccepted Keys ve Accepted Keys listeleri boş olacaktır.
sudo salt-key -L
4. Basit Bir Minion Kurulumu ve İlk Bağlantıyı Test Etme (Ping):
Master’ın doğru çalıştığını test etmenin en iyi yolu, bir Minion kurup Master’a bağlamaktır.
* Minion Kurulumu (Örnek: Ubuntu):
# Minion sunucusunda
sudo apt update
sudo apt install -y salt-minion
* Minion Yapılandırması: Minion’un /etc/salt/minion dosyasını düzenleyin ve Master’ın IP adresini veya hostname’ini belirtin:
# /etc/salt/minion
master:
* Minion Servisini Başlatma:
sudo systemctl start salt-minion
sudo systemctl enable salt-minion
sudo systemctl status salt-minion
* Master’da Minion Anahtarını Kabul Etme:
Minion servisi başladıktan sonra, Master’da salt-key -L komutunu çalıştırın. Minion’un anahtarını Unaccepted Keys altında görmelisiniz. Ardından kabul edin:
# Master sunucusunda
sudo salt-key -a # örn: sudo salt-key -a myminion01
* Minion’a Ping Gönderme: Anahtar kabul edildikten sonra, Master’dan Minion’a bir test komutu gönderin:
# Master sunucusunda
sudo salt '' test.ping
Eğer çıktı : True şeklinde ise, Salt Master ve Minion arasındaki iletişim başarılı bir şekilde kurulmuş demektir.
Sorun Giderme (Troubleshooting)
Kurulum veya ilk bağlantı testleri sırasında sorunlarla karşılaşmak olasıdır. İşte yaygın sorunlar ve çözüm önerileri:
1. salt-master Servisi Başlamıyor:
* Logları Kontrol Edin: En önemli adım, log dosyalarını kontrol etmektir: /var/log/salt/master. Hata mesajları, sorunun kök nedenini genellikle açıkça belirtir.
* Yapılandırma Dosyası Hatası: /etc/salt/master dosyasında bir YAML sözdizimi hatası (boşluklar, girintiler) olabilir. YAML dosyaları girintilere karşı çok hassastır. Bir YAML linter aracı kullanabilirsiniz.
* Port Çakışması: Master’ın kullanmaya çalıştığı 4505 veya 4506 portları başka bir servis tarafından kullanılıyor olabilir. sudo netstat -tulnp veya sudo ss -tulnp komutlarıyla kontrol edin.
2. Minionlar Master’a Bağlanamıyor:
* Güvenlik Duvarı: Master’daki güvenlik duvarının 4505 ve 4506 portlarına gelen bağlantılara izin verdiğinden emin olun. Minion’dan Master’ın bu portlarına telnet veya nc (netcat) ile bağlantı kurmayı deneyerek test edebilirsiniz: telnet 4505.
* Ağ Bağlantısı: Master ve Minion arasında temel ağ bağlantısı olduğundan emin olun (ping testi).
* DNS Çözünürlüğü: Minion’un /etc/salt/minion dosyasındaki master: parametresinin doğru IP adresini veya hostname’i içerdiğinden ve Minion’un bu hostname’i doğru çözebildiğinden emin olun.
* Minion Logları: Minion tarafındaki logları kontrol edin: /var/log/salt/minion. Bağlantı hataları veya anahtar sorunları burada görülebilir.
* Minion Servisi Durumu: Minion servisinin çalıştığından emin olun: sudo systemctl status salt-minion.
3. Minion Anahtarı Kabul Edilemiyor veya Görünmüyor:
* Minion servisi doğru yapılandırılmış ve başlatılmış mı?
* Master’ın güvenlik duvarı portları açık mı?
* Master’ın /etc/salt/master dosyasında auto_accept: False ayarı doğru mu?
* Minion’un /etc/salt/minion dosyasında master: parametresi doğru mu?
* Master ve Minion arasındaki saatler senkronize mi? (NTP kullanılması önerilir)
4. Salt Komutları Çalışmıyor:
* Minion anahtarı Master tarafından kabul edildi mi? sudo salt-key -L ile kontrol edin.
* Minion servisi çalışıyor mu?
* Master’ın /etc/salt/master dosyasında file_roots ve pillar_roots doğru yapılandırılmış mı?
Komut sözdizimi doğru mu? Örneğin, sudo salt '' test.ping yerine sudo salt 'myminion01' test.ping kullanılıyor mu?
Gelişmiş Yapılandırma ve Sonraki Adımlar
Salt Master’ı kurup temel iletişimi sağladıktan sonra, SaltStack’in sunduğu zengin özellik setini keşfetmeye başlayabilirsiniz.
* Harici Veri Depoları (External Pillars): Pillar verilerini sadece dosyalarda tutmak yerine, LDAP, SQL veritabanları, HashiCorp Vault gibi harici kaynaklardan çekmek için External Pillars kullanabilirsiniz. Bu, daha dinamik ve güvenli bir yapılandırma yönetimi sağlar.
* GitFS/SVNFS: State ve Pillar dosyalarını geleneksel dosya sisteminde tutmak yerine, Git veya SVN gibi sürüm kontrol sistemlerinde yönetmek için GitFS veya SVNFS kullanabilirsiniz. Bu, yapılandırma değişikliklerinin izlenmesini, geri alınmasını ve işbirliğini kolaylaştırır.
* Salt-API: Salt Master ile programatik olarak etkileşim kurmak için Salt-API’yi kullanabilirsiniz. RESTful API aracılığıyla Salt komutlarını tetikleyebilir, Minion durumlarını sorgulayabilir ve otomasyonu diğer sistemlerle entegre edebilirsiniz.
* Salt-Cloud: Çeşitli bulut sağlayıcıları (AWS, Azure, Google Cloud, DigitalOcean, OpenStack vb.) üzerinde sanal makineleri provizyonlamak, yapılandırmak ve yönetmek için Salt-Cloud modülünü kullanabilirsiniz.
* Orkestrasyon: Birden fazla Minion üzerinde karmaşık ve sıralı görevleri otomatikleştirmek için Salt Orchestration Runner’ları kullanabilirsiniz. Bu, uygulama dağıtımı, veritabanı yükseltmeleri veya altyapı değişiklikleri gibi çok adımlı süreçler için idealdir.
* Reaktör (Reactor): Salt Master’daki olay akışını (event bus) dinleyerek belirli olaylara tepki vermek için Reactor sistemini kullanabilirsiniz. Örneğin, bir Minion’un çevrimdışı olması durumunda otomatik olarak bir e-posta göndermek veya yeni bir Minion bağlandığında otomatik olarak belirli state’leri uygulamak gibi senaryoları otomatize edebilirsiniz.
Bu ileri seviye konular, SaltStack’in gücünü tam olarak anlamanıza ve altyapı otomasyonunuzu bir sonraki seviyeye taşımanıza yardımcı olacaktır.
Sonuç
SaltStack altyapısının temel taşı olan Salt Master’ın kurulumu, modern ve ölçeklenebilir bir yapılandırma yönetimi çözümünün ilk ve en kritik adımıdır. Bu makalede, SaltStack’in ne olduğunu, temel mimarisini, Salt Master’ın kurulum öncesi hazırlıklarını, Ubuntu/Debian ve CentOS/RHEL tabanlı sistemler üzerindeki kurulum adımlarını, temel yapılandırma parametrelerini, güvenlik hususlarını ve ilk testleri detaylı bir şekilde ele aldık. Ayrıca, olası sorun giderme senaryolarına ve SaltStack’in sunduğu gelişmiş özelliklere kısa bir bakış sunduk.
Doğru bir şekilde kurulmuş ve yapılandırılmış bir Salt Master, IT operasyonlarınızı önemli ölçüde hızlandırabilir, insan hatasını azaltabilir ve altyapınızın tutarlılığını sağlayabilir. SaltStack’in sunduğu esneklik ve performans, özellikle büyük ve dinamik ortamlar için onu cazip bir seçenek haline getirir. Kurulumu tamamladıktan sonra, SaltStack’in zengin dokümantasyonunu ve topluluk kaynaklarını kullanarak yeteneklerinizi geliştirmeye devam edebilir ve altyapı otomasyon yolculuğunuzda yeni ufuklar açabilirsiniz.
