📝 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