Takip et

RHEL 10/Windows 11 Üzerinde Bolt Çalıştırma ve Bolt 5.0.1’deki Yeni `plan_context` Fonksiyonu

Günümüzün hızla değişen IT altyapılarında, otomasyon araçları operasyonel verimliliğin ve tutarlılığın anahtarı haline gelmiştir. Puppet ta…

RHEL 10/Windows 11 Üzerinde Bolt Çalıştırma ve Bolt 5.0.1’deki Yeni plan_context Fonksiyonu

Günümüzün hızla değişen IT altyapılarında, otomasyon araçları operasyonel verimliliğin ve tutarlılığın anahtarı haline gelmiştir. Puppet tarafından geliştirilen güçlü orkestrasyon ve otomasyon aracı Bolt, sunucu yönetiminden uygulama dağıtımına kadar geniş bir yelpazede görevleri kolaylaştırmaktadır. Bu makalede, en güncel işletim sistemleri olan RHEL 10 ve Windows 11 üzerinde Bolt’u nasıl kurup yapılandıracağımızı adım adım inceleyecek, ayrıca Bolt 5.0.1 sürümüyle gelen ve plan geliştiricilere büyük esneklik sağlayan yenilikçi plan_context fonksiyonuna derinlemesine bir bakış atacağız. Bu yeni özellik sayesinde otomasyon süreçlerinizi bir üst seviyeye taşıyabileceksiniz.

Bolt Nedir ve Neden Önemlidir?

Bolt, Puppet’in agent’sız orkestrasyon aracıdır. Karmaşık altyapı görevlerini, yazılım dağıtımlarını, sistem yapılandırmalarını ve hata giderme işlemlerini otomatikleştirmek için tasarlanmıştır. Puppet’in güçlü kaynak modelini ve DSL’ini kullanarak, hedeflere SSH veya WinRM üzerinden bağlanır ve komutları, betikleri veya Puppet görevlerini çalıştırır. Bolt’un en büyük avantajlarından biri, bir Puppet Master’a ihtiyaç duymadan çalışabilmesidir, bu da onu hızlı ve geçici otomasyon ihtiyaçları için ideal kılar.

RHEL 10 ve Windows 11’in Otomasyon İhtiyaçları

Red Hat Enterprise Linux 10 ve Windows 11 gibi modern işletim sistemleri, güncel güvenlik standartları, performans iyileştirmeleri ve yeni özelliklerle birlikte gelir. Bu platformlarda tutarlı ve güvenilir bir şekilde otomasyon sağlamak, sistem yöneticileri için kritik öneme sahiptir. Bolt, hem Linux hem de Windows ortamlarında sorunsuz çalışabilme yeteneği sayesinde, heterojen altyapılarda merkezi bir otomasyon çözümü sunar.

Bolt 5.0.1’in Yenilikleri

Bolt 5.0.1 sürümü, performans iyileştirmeleri ve hata düzeltmelerinin yanı sıra, özellikle plan geliştiricilerin işini kolaylaştıracak önemli bir yenilik olan plan_context fonksiyonunu tanıttı. Bu fonksiyon, planların yürütme ortamı hakkında daha fazla bilgiye erişmesini sağlayarak, daha dinamik ve bağlama duyarlı otomasyon senaryolarının kapısını aralamaktadır.

RHEL 10 Üzerinde Bolt Kurulumu ve Yapılandırması

RHEL 10, kararlı ve güvenli bir Linux dağıtımı olarak Bolt için mükemmel bir platform sunar. Kurulum süreci oldukça basittir ve birkaç adımla tamamlanabilir.

Ön Gereksinimler ve Sistem Hazırlığı

Bolt’u RHEL 10 üzerine kurmadan önce, sisteminizin bazı temel gereksinimleri karşıladığından emin olun:

  • Minimum 2 GB RAM
  • Minimum 20 GB disk alanı
  • sudo yetkilerine sahip bir kullanıcı
  • İnternet erişimi (paket indirmeleri için)

Sisteminizi güncelleyerek başlayın:

sudo dnf update -y

Bolt Kurulum Adımları

Bolt'u RHEL 10'a kurmanın en kolay yolu, Puppet'in resmi depolarını kullanmaktır. İlk olarak, Puppet deposunu ekleyin:

sudo dnf install -y https://yum.puppet.com/puppet7-release-el-10.noarch.rpm

Depo eklendikten sonra Bolt'u kurabilirsiniz:

sudo dnf install -y puppet-bolt

Kurulumun başarılı olduğunu doğrulamak için Bolt sürümünü kontrol edin:

bolt --version

İlk Bolt Planını Çalıştırma

Basit bir plan oluşturarak Bolt'un çalıştığını test edelim. Bir my_plan.pp dosyası oluşturun:

plan my_module::my_plan(
  String $message = 'Merhaba RHEL 10!'
) {
  run_task('my_module::echo', $message => $message, _description => 'Echo mesajı')
}

task my_module::echo(String $message) {
  run_command("echo \"$message\"")
}

Bu planı çalıştırmak için:

bolt plan run my_module::my_plan --targets localhost

SSH Yapılandırması ve Bağlantı

Bolt, Linux hedeflerine SSH üzerinden bağlanır. Hedef makinelerde SSH sunucusunun çalıştığından ve Bolt kullanıcısının parola veya SSH anahtarı ile erişim sağlayabildiğinden emin olun. Bolt'un varsayılan olarak SSH anahtarlarını kullanması önerilir. Anahtarlarınızı ~/.ssh/id_rsa konumuna yerleştirebilir veya bolt.yaml dosyasında yapılandırabilirsiniz.

# bolt.yaml
ssh:
  host-key-check: false # Güvenli ortamlar için true olmalı
  private-key: ~/.ssh/id_rsa

Windows 11 Üzerinde Bolt Kurulumu ve Yapılandırması

Windows 11, modern bir masaüstü işletim sistemi olmasına rağmen, Bolt ile sunucu otomasyonu görevlerini yerine getirmek için güçlü bir platform olarak kullanılabilir. Özellikle geliştirme ve test ortamlarında bu kurulum oldukça faydalıdır.

Ön Gereksinimler ve PowerShell Yapılandırması

Windows 11 üzerinde Bolt kullanmadan önce bazı ön gereksinimleri karşılamanız gerekir:

  • PowerShell 5.1 veya daha yeni bir sürüm (Windows 11'de varsayılan olarak mevcuttur).
  • WinRM servisi etkinleştirilmiş olmalı.
  • Yönetici yetkilerine sahip bir kullanıcı.

WinRM'i yapılandırmak için yönetici olarak bir PowerShell penceresi açın ve aşağıdaki komutları çalıştırın:

Set-ExecutionPolicy RemoteSigned -Force
winrm quickconfig -q
winrm set winrm/config/client @{AllowUnencrypted="true"} # Test ortamları için, üretimde HTTPS kullanın
winrm set winrm/config/service @{AllowUnencrypted="true"} # Test ortamları için, üretimde HTTPS kullanın
winrm set winrm/config/service/Auth @{Basic="true"}

Güvenlik nedeniyle üretim ortamlarında HTTPS ve Kerberos kimlik doğrulaması kullanılması şiddetle tavsiye edilir.

Bolt Kurulum Adımları (MSI veya Gem)

Windows 11 üzerinde Bolt kurmanın iki ana yolu vardır:

  1. MSI Yükleyici: Puppet'in resmi web sitesinden en son Bolt MSI yükleyicisini indirin ve standart bir Windows uygulaması gibi kurun. Bu, çoğu kullanıcı için en kolay yöntemdir.
  2. RubyGems ile: Eğer Ruby geliştirme ortamınız kuruluysa, RubyGems üzerinden Bolt'u kurabilirsiniz:
gem install puppet-bolt

Kurulum sonrası Bolt'un PATH'e eklendiğinden emin olun ve sürümünü kontrol edin:

bolt --version

WinRM Yapılandırması ve Güvenlik

Bolt, Windows hedeflerine WinRM üzerinden bağlanır. bolt.yaml dosyasında WinRM bağlantı ayarlarını yapılandırmanız gerekebilir:

# bolt.yaml
winrm:
  host-key-check: false # WinRM için genellikle false bırakılır
  user: Administrator
  password: 'YourSecurePassword' # Üretimde parola yerine Kerberos veya sertifika kullanın
  ssl: false # Üretimde true olmalı ve sertifika yapılandırılmalı

Windows Hedeflere Bağlanma

Bir Windows hedefe bağlanmak için, envanter dosyanızda (inventory.yaml) hedefi tanımlayın:

# inventory.yaml
targets:
  - name: my_windows_server
    uri: winrm://my_windows_server_ip
    config:
      winrm:
        user: Administrator
        password: 'YourSecurePassword'
        ssl: false

Ardından basit bir komut çalıştırarak bağlantıyı test edin:

bolt command run 'hostname' --targets my_windows_server

Bolt 5.0.1'deki plan_context Fonksiyonuna Derinlemesine Bakış

Bolt 5.0.1 ile tanıtılan plan_context fonksiyonu, Bolt planlarının yürütüldüğü ortam hakkında daha fazla bilgiye programatik olarak erişmesini sağlayan güçlü bir özelliktir. Bu, planlarınızı daha dinamik, esnek ve bağlama duyarlı hale getirmenize olanak tanır.

plan_context Nedir ve Ne İşe Yarar?

plan_context, Bolt planının yürütüldüğü mevcut durumu ve çevresel bilgileri içeren bir hash (anahtar-değer çiftleri) döndürür. Bu bilgiler şunları içerebilir:

  • Bolt'un çalıştığı dizin.
  • Planın çağrıldığı komut satırı argümanları.
  • Kullanılan envanter dosyası yolu.
  • Yürütülen planın adı.
  • Bolt yapılandırma ayarları.

Bu sayede planlar, harici dosyalara veya komut satırı argümanlarına daha akıllıca tepki verebilir.

Geleneksel Plan Geliştirmedeki Sınırlamalar

Önceki Bolt sürümlerinde, planlar genellikle sabit parametreler veya basit komut satırı argümanları ile çalışırdı. Bir planın, yürütüldüğü dizini bilmesi veya belirli bir envanter dosyasının kullanılıp kullanılmadığını anlaması gerektiğinde, bu bilgiye doğrudan erişmek zordu veya harici betikler aracılığıyla dolaylı yollardan elde edilmesi gerekiyordu. Bu durum, planların esnekliğini ve yeniden kullanılabilirliğini sınırlıyordu.

plan_context ile Gelen Esneklik

plan_context, bu sınırlamaları ortadan kaldırır. Artık bir plan, örneğin, mevcut çalışma dizinini öğrenerek bu dizinde bulunan yapılandırma dosyalarını otomatik olarak okuyabilir veya hangi envanter dosyasının kullanıldığını kontrol ederek farklı hedeflere göre davranışını değiştirebilir. Bu, özellikle karmaşık ve çok ortamlı dağıtımlar için son derece değerlidir.

plan_context Parametreleri ve Kullanımı

plan_context fonksiyonu herhangi bir parametre almaz ve bir hash döndürür. İşte bazı örnek çıktılar ve nasıl erişileceği:

plan my_module::show_context() {
  $context = plan_context()
  out::message("Plan bağlamı: ${context}")
  out::message("Mevcut çalışma dizini: ${context['cwd']}")
  out::message("Kullanılan envanter dosyası: ${context['inventory_file']}")
}

Bu planı çalıştırdığınızda, Bolt'un çalıştığı dizin ve kullanılan envanter dosyasının yolu gibi bilgilere erişebilirsiniz.

plan_context Kullanım Senaryoları ve Pratik Örnekler

plan_context fonksiyonu, Bolt planlarını daha akıllı ve adaptif hale getirmek için çeşitli pratik senaryolarda kullanılabilir.

Dinamik Envanter Yönetimi

Bir plan, plan_context['inventory_file'] bilgisini kullanarak, belirli bir envanter dosyasının varlığına veya içeriğine göre farklı hedeflere yönelik işlemler yapabilir. Örneğin, bir "geliştirme" envanteri kullanılıyorsa test sunucularına, "üretim" envanteri kullanılıyorsa canlı sunuculara dağıtım yapabilir.

plan my_module::dynamic_deploy() {
  $context = plan_context()
  $inventory_file = $context['inventory_file']

  if $inventory_file =~ /dev_inventory.yaml/ {
    out::message("Geliştirme ortamına dağıtım yapılıyor...")
    run_task('my_module::deploy_dev', targets => get_targets('dev_servers'))
  } elsif $inventory_file =~ /prod_inventory.yaml/ {
    out::message("Üretim ortamına dağıtım yapılıyor... DİKKAT!")
    run_task('my_module::deploy_prod', targets => get_targets('prod_servers'))
  } else {
    fail("Bilinmeyen envanter dosyası: ${inventory_file}")
  }
}

Koşullu Plan Yürütme

Planlar, plan_context['cli_args'] içindeki komut satırı argümanlarını kontrol ederek koşullu mantık uygulayabilir. Örneğin, belirli bir bayrak (flag) ile çağrıldığında farklı bir işlem yapabilir.

plan my_module::conditional_action() {
  $context = plan_context()
  $force_flag_present = $context['cli_args'].keys.any |$arg| { $arg == '--force' }

  if $force_flag_present {
    out::message("Zorla işlem yapılıyor!")
    run_task('my_module::force_cleanup', targets => 'all')
  } else {
    out::message("Normal işlem yapılıyor.")
    run_task('my_module::safe_cleanup', targets => 'all')
  }
}

Bu planı bolt plan run my_module::conditional_action --force şeklinde çalıştırarak farkı görebilirsiniz.

Harici Veri Kaynakları ile Entegrasyon

plan_context['cwd'] veya plan_context['project_dir'] gibi bilgilerle, planlar mevcut çalışma dizinlerindeki özel yapılandırma dosyalarını (örneğin, JSON, YAML) okuyarak davranışlarını dinamik olarak belirleyebilir. Bu, planlarınızı daha modüler ve projenize özgü hale getirir.

Örnek Kod: Basit Bir plan_context Kullanımı

Aşağıdaki örnek, plan_context kullanarak Bolt projesinin kök dizinini bulur ve bu dizindeki bir yapılandırma dosyasını okur.

plan my_module::read_project_config() {
  $context = plan_context()
  $project_dir = $context['project_dir']
  $config_file = "${project_dir}/project_config.yaml"

  if file_exists($config_file) {
    $config_data = load_yaml_file($config_file)
    out::message("Proje yapılandırması başarıyla okundu: ${config_data}")
    # Yapılandırma verilerini kullanarak bir işlem yapabilirsiniz
  } else {
    out::message("Proje yapılandırma dosyası bulunamadı: ${config_file}")
  }
}

Bu planı çalıştırmadan önce, Bolt projenizin kök dizininde (bolt.yaml'ın olduğu yer) project_config.yaml adında bir dosya oluşturmanız ve içine örnek YAML verileri koymanız gerekir.

# project_config.yaml
environment: development
database:
  host: localhost
  port: 5432

Bolt ile Otomasyon İpuçları ve En İyi Uygulamalar

Bolt ile verimli ve güvenilir otomasyon sağlamak için bazı en iyi uygulamaları takip etmek önemlidir.

Modüler Plan Tasarımı

Planlarınızı küçük, yeniden kullanılabilir görevlere ve alt planlara bölün. Bu, kod tekrarını azaltır, okunabilirliği artırır ve bakımı kolaylaştırır. Her planın veya görevin tek bir sorumluluğu olmalıdır.

Hata Yönetimi ve Günlükleme

Planlarınızda hata yakalama mekanizmalarını (örneğin, try/catch blokları) kullanarak beklenmedik durumları ele alın. Ayrıntılı günlükleme, sorun giderme süreçlerini hızlandırır. Bolt'un out::message, out::warning ve out::error fonksiyonlarını etkin bir şekilde kullanın.

Sürüm Kontrolü ve İşbirliği

Tüm Bolt projelerinizi ve planlarınızı Git gibi bir sürüm kontrol sisteminde saklayın. Bu, değişiklikleri izlemenizi, işbirliği yapmanızı ve gerektiğinde önceki sürümlere geri dönmenizi sağlar.

Güvenlik Hususları

Hassas bilgileri (parolalar, API anahtarları) doğrudan plan dosyalarına gömmeyin. Bolt'un eyaml veya Hiera gibi güvenli veri yönetim mekanizmalarını kullanın. WinRM ve SSH bağlantılarınızda mümkün olduğunca sertifikalar veya anahtar tabanlı kimlik doğrulama kullanın ve şifrelemeyi etkinleştirin.

Sonuç

Bu makalede, RHEL 10 ve Windows 11 gibi modern işletim sistemleri üzerinde Bolt'u nasıl kuracağımızı ve yapılandıracağımızı detaylıca ele aldık. Ayrıca, Bolt 5.0.1 ile gelen ve plan geliştiricilere büyük esneklik sunan plan_context fonksiyonunu derinlemesine inceledik. Bu yeni özellik sayesinde planlarınızı daha dinamik, bağlama duyarlı ve akıllı hale getirebilir, otomasyon süreçlerinizi bir üst seviyeye taşıyabilirsiniz. Bolt, karmaşık altyapı yönetimini basitleştirme ve operasyonel verimliliği artırma potansiyeliyle, günümüz IT profesyonelleri için vazgeçilmez bir araç olmaya devam edecektir.

Sıkça Sorulan Sorular (SSS)

Bolt RHEL 10'da tamamen destekleniyor mu?

Evet, Puppet genellikle yeni RHEL sürümleri için hızla destek sunar. RHEL 10 henüz genel kullanıma sunulmamış olsa da, Puppet'in paket depoları ve Bolt'un mimarisi, RHEL'in gelecekteki sürümleriyle uyumlu olacak şekilde tasarlanmıştır. Resmi destek belgelerini kontrol etmek her zaman en iyisidir.

Windows 11'de Bolt için hangi bağlantı protokolü önerilir?

Windows hedefleri için WinRM (Windows Remote Management) önerilen bağlantı protokolüdür. Güvenlik nedeniyle, WinRM'i HTTPS üzerinden sertifikalarla veya Kerberos kimlik doğrulamasıyla yapılandırmak en iyi uygulamadır.

plan_context fonksiyonu Bolt'un önceki sürümlerinde var mıydı?

Hayır, plan_context fonksiyonu Bolt 5.0.1 sürümüyle birlikte tanıtılan yeni bir özelliktir. Önceki sürümlerde bu fonksiyona erişilemez.

plan_context ile envanter dosyasını dinamik olarak değiştirebilir miyim?

plan_context, mevcut envanter dosyasının yolunu size verir, ancak doğrudan plan içinden envanter dosyasını değiştirmek veya farklı bir envanter dosyası yüklemek için tasarlanmamıştır. Bunun yerine, mevcut envanter bilgilerine dayanarak planın davranışını koşullu olarak değiştirebilirsiniz.

Bolt ile Puppet Enterprise arasındaki fark nedir?

Bolt, Puppet'in agent'sız orkestrasyon aracıdır ve komutları, betikleri veya Puppet görevlerini doğrudan hedeflere çalıştırır. Puppet Enterprise (PE) ise bir Puppet Master/Agent mimarisine sahiptir ve sürekli yapılandırma yönetimi, raporlama, RBAC ve görsel bir UI sunar. Bolt, PE'ye entegre edilebilir ve PE'nin yeteneklerini tamamlayıcı bir araç olarak kullanılabilir.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

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

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.