Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

📝 yaml - YAML İşlemleri

YAML (YAML Ain't Markup Language) dosyalarını okuma ve yazma işlemleri

📦 59 Fonksiyon 📝 595 Satır 💾 15.7 KB

📋 Genel Bakış

yaml modülü, YAML formatındaki yapılandırma dosyalarını okuma, yazma ve düzenleme için araçlar sağlar. İnsan tarafından okunabilir veri serileştirme formatı olan YAML ile kolay çalışma imkanı sunar.

📖 YAML Ayrıştırma

  • yaml.ayrıştır() - YAML metnini BERK veri yapısına dönüştürme
  • yaml.dosyadan_yükle() - YAML dosyasını okuma
  • yaml.güvenli_yükle() - Güvenli YAML ayrıştırma
  • yaml.çoklu_yükle() - Birden fazla YAML belgesi yükleme

✏️ YAML Oluşturma

  • yaml.yaz() - BERK verisini YAML formatına dönüştürme
  • yaml.dosyaya_yaz() - YAML dosyasına yazma
  • yaml.çoklu_yaz() - Birden fazla belgeyi yazma

🔧 Yapılandırma Seçenekleri

  • yaml.girinti() - Girinti seviyesi ayarlama
  • yaml.genişlik() - Satır genişliği ayarlama
  • yaml.akış_stili() - Akış veya blok stil seçimi
  • yaml.varsayılan_akış() - Varsayılan akış stili ayarlama

💡 Kullanım Örnekleri

YAML Yapılandırma Dosyası Okuma

kullan yaml
kullan fs

// config.yaml dosyası:
// veritabanı:
//   sunucu: localhost
//   port: 5432
//   kullanıcı: admin
//   parola: güvenli123
//   veritabanları:
//     - üretim
//     - test
//     - geliştirme
//
// uygulama:
//   ad: BerkApp
//   sürüm: 1.0.0
//   ortam: üretim
//   özellikler:
//     cache_aktif: true
//     log_seviye: info
//     max_bağlantı: 100

değer yapılandırma = yaml.dosyadan_yükle("config.yaml")

// Yapılandırma değerlerini okuma
değer vt_sunucu = yapılandırma["veritabanı"]["sunucu"]
değer vt_port = yapılandırma["veritabanı"]["port"]
değer uygulama_ad = yapılandırma["uygulama"]["ad"]

yazdır(f"Uygulama: {uygulama_ad}")
yazdır(f"Veritabanı: {vt_sunucu}:{vt_port}")

// Veritabanı listesi
değer veritabanları = yapılandırma["veritabanı"]["veritabanları"]
yazdır("\nMevcut veritabanları:")
için vt içinde veritabanları {
    yazdır(f"  - {vt}")
}

// Özellikler
değer özellikler = yapılandırma["uygulama"]["özellikler"]
eğer özellikler["cache_aktif"] {
    yazdır("\nÖnbellek aktif")
}
yazdır(f"Log seviyesi: {özellikler['log_seviye']}")
yazdır(f"Maksimum bağlantı: {özellikler['max_bağlantı']}")

YAML Yapılandırma Oluşturma

kullan yaml

// Uygulama yapılandırması oluşturma
değer yapılandırma = {
    "sunucu": {
        "host": "0.0.0.0",
        "port": 8080,
        "ssl": {
            "aktif": doğru,
            "sertifika": "/path/to/cert.pem",
            "anahtar": "/path/to/key.pem"
        }
    },
    "veritabanı": {
        "sürücü": "postgresql",
        "bağlantı": {
            "host": "localhost",
            "port": 5432,
            "kullanıcı": "app_user",
            "parola": "güvenli_parola"
        },
        "havuz": {
            "min_boyut": 5,
            "max_boyut": 20,
            "timeout": 30
        }
    },
    "özellikler": {
        "hata_ayıklama": yanlış,
        "log_dosyası": "/var/log/app.log",
        "log_seviye": "info",
        "izin_verilen_originler": [
            "https://example.com",
            "https://api.example.com",
            "https://admin.example.com"
        ]
    },
    "cache": {
        "tip": "redis",
        "sunucu": "localhost:6379",
        "ttl": 3600,
        "önbellek_anahtarları": [
            "kullanıcı_oturumları",
            "ürün_listesi",
            "yapılandırma"
        ]
    }
}

// YAML dosyasına yazma
yaml.dosyaya_yaz(yapılandırma, "app_config.yaml")
yazdır("Yapılandırma dosyası oluşturuldu!")

// YAML metnine dönüştürme
değer yaml_metin = yaml.yaz(yapılandırma)
yazdır("\nYAML içeriği:")
yazdır(yaml_metin)

Kubernetes Manifest Yöneticisi

kullan yaml

sınıf K8sManifest {
    fonksiyon deployment_oluştur(ad: Dize, imaj: Dize, port: Tam, replika: Tam) -> Sözlük {
        dön {
            "apiVersion": "apps/v1",
            "kind": "Deployment",
            "metadata": {
                "name": ad,
                "labels": {
                    "app": ad
                }
            },
            "spec": {
                "replicas": replika,
                "selector": {
                    "matchLabels": {
                        "app": ad
                    }
                },
                "template": {
                    "metadata": {
                        "labels": {
                            "app": ad
                        }
                    },
                    "spec": {
                        "containers": [{
                            "name": ad,
                            "image": imaj,
                            "ports": [{
                                "containerPort": port
                            }]
                        }]
                    }
                }
            }
        }
    }
    
    fonksiyon service_oluştur(ad: Dize, port: Tam, hedef_port: Tam) -> Sözlük {
        dön {
            "apiVersion": "v1",
            "kind": "Service",
            "metadata": {
                "name": f"{ad}-service"
            },
            "spec": {
                "type": "LoadBalancer",
                "selector": {
                    "app": ad
                },
                "ports": [{
                    "protocol": "TCP",
                    "port": port,
                    "targetPort": hedef_port
                }]
            }
        }
    }
}

// Kubernetes manifestleri oluşturma
değer k8s = K8sManifest {}

değer deployment = k8s.deployment_oluştur(
    "web-app",
    "nginx:1.21",
    80,
    3
)

değer service = k8s.service_oluştur("web-app", 80, 80)

// Tek dosyaya birden fazla manifest yazma
değer manifestler = [deployment, service]
yaml.dosyaya_yaz(manifestler, "k8s-deployment.yaml")

yazdır("Kubernetes manifestleri oluşturuldu!")
yazdır(f"Deployment: {deployment['metadata']['name']}")
yazdır(f"Replika sayısı: {deployment['spec']['replicas']}")
yazdır(f"Service: {service['metadata']['name']}")

🎯 İyi Uygulamalar

  • Güvenli olmayan kaynaklardan YAML yüklerken güvenli_yükle() kullanın
  • Yapılandırma dosyalarında hassas bilgileri şifreleyin
  • YAML girinti (2 veya 4 boşluk) tutarlı tutun
  • Karmaşık yapılar için anchors ve aliases kullanın
  • Ortam değişkenlerini yapılandırmaya entegre edin
  • Yapılandırma şemalarını doğrulayın

🔗 İlgili Modüller

  • json - JSON veri formatı
  • xml - XML veri formatı
  • fs - Dosya sistemi işlemleri
  • encoding - Kodlama dönüşümleri