Cdist - Cdist

cdist
Cdist logo.svg
Orijinal yazar (lar)Nico Schottelius, Steven Armstrong[1]
İlk sürüm2010; 10 yıl önce (2010)
Kararlı sürüm
5.0.0 / 5 Mayıs 2019; 18 ay önce (2019-05-05)
Depo Bunu Vikiveri'de düzenleyin
YazılmışPython, Bourne kabuğu
İşletim sistemiLinux, Unix benzeri
Türyazılım konfigürasyon yönetimi
LisansGNU Genel Kamu Lisansı sürüm 3 veya üzeri
İnternet sitesiwww.cdi.st

cdist bir Bedava yazılım konfigürasyon yönetimi alet için Unix benzeri sistemleri. Yönetirdüğümler bitmiş SSH kullanmak Bourne Kabuğu ve hedef düğümlere herhangi bir ek yazılım yüklenmesini gerektirmez.

Cdist, konfigürasyon komut dosyaları yazmak için birincil dil olarak Bourne Kabuğu'nu seçerek ve hedef düğümlere etkin bir şekilde bağımlılık gerektirmeden kendisini rakip konfigürasyon yönetim sistemlerinden ayırır. Cdist'in çekirdeği şu şekilde yazılsa da Python, hedef düğümlerde değil, yalnızca ana makinede bir yorumlayıcı gereklidir.

Geliştirme

cdist geliştirme 2010'da başladı ETH Zürih andis aktif olarak geliştirilmektedir[2] ve esas olarak Nico Schottelius ve Steven Armstrong tarafından sürdürülmektedir.[3]Cdist hakkındaki tartışmanın büyük kısmı e-posta listesinde gerçekleşiyor[4]ve IRC kanalında #cstar Freenode ağ. cdist, İsviçre'de çeşitli şirketlerde kullanılmaktadır (örneğin ETH Zürih[5] ve OMA Tarayıcı projesi),[6] ABD, Almanya ve Fransa.

Özellikleri

cdist, sıfır bağımlılık yapılandırma yönetim sistemidir: Hedef ana bilgisayarlarda yalnızca ssh ve bourne uyumlu bir kabuk gerektirir ve çoğu Unix benzeri makineler.[7] Bu nedenle cdist, diğer yapılandırma yönetim sistemlerini önyüklemek için kullanılabilir.[8]

Kurulum ve konfigürasyon

cdist genellikle bir paket (.deb veya .rpm gibi) olarak kurulmaz, bunun yerine git Tüm komutlar oluşturulan kontrol işleminden çalıştırılır. Herhangi bir yapılandırma için giriş noktası, cdist terimlerinde ilk manifest olarak adlandırılan kabuk komut dosyası conf / manifest / init'tir.[9]

Cdist'in ana bileşenleri, işlevselliği bir araya getiren türlerdir.[10]Türler, temelde, hangi tür yazıların kullanıldığını ve hangi kodun hedef ana bilgisayarda yürütülecek şekilde oluşturulduğunu tanımlamak için bir dizi kabuk komut dosyasından oluşur.

Mimari

cdist iki bileşene ayrılmıştır:

  • Çekirdek
  • Yapılandırma betikleri

Çekirdek

Cdist'in çekirdeği, yapılandırmayı okuma ve uzak ana bilgisayarlarla iletişim kurma ile ilgilenir. Ansible gibi, cdist de yapılandırma değişikliklerini uygulamak için bir "push" modeli kullanır: "Ana makine" makinesindeki bir cdist işlemi, SSH aracılığıyla herhangi bir sayıda uzak düğüme bağlanır ve ardından bu düğümlerde yapılandırma güncellemelerini gerçekleştirir. Cdist, yapılandırma için harcanan zamanı azaltmak için birden çok ana bilgisayarı paralel olarak yapılandırabilir.[11]

Yapılandırma

Yapılandırma komut dosyaları, hedeflerin nasıl yapılandırılacağını tanımlar. Tipik olarak yazılırlar Bourne Kabuğu ve oluşur

  • İlk manifesto, bir giriş noktası tüm yapılandırma işlemlerinin başladığı yer. Bu komut dosyası, gerçek yapılandırmayı gerçekleştiren diğer, daha özel komut dosyalarını çağırmak için tipik olarak ana bilgisayar adı ve işletim sistemi gibi hedef düğüm hakkındaki bilgileri kullanır.
  • Global Explorers, hedef sistem hakkında bilgi toplayan küçük komut dosyaları (işletim sistemi, başlatma sistemi ve ana bilgisayar adı gibi)
  • Yeniden kullanılabilir yapılandırma parçalarını tanımlayan türler. Türler, bildirimlerde somutlaştırılır ve hedef makinelerde kodu gerçekten çalıştırmanın tek yoludur. "Tür" adı, nesne yönelimli bir dilde "sınıf" ın analogu anlamına gelir, çünkü bir tür, kendisine hangi parametrelerin geçirildiğine bağlı olarak birden çok "nesneye" dönüştürülebilir.[12] Örneğin, __dosya tür, her biri belirli bir dosyanın oluşturulmasını temsil eden birden çok "nesneye" dönüştürülebilir. Ansible'ın "rolleri", cdist türlerinin eşdeğeridir. Türlerin birçok bileşeni olabilir:
    • Nesne Kimliği: Bir tür, bir nesneye dönüştürüldüğünde, ona benzersiz bir nesne kimliği aktarılır. Aynı tür, aynı kimlikle iki kez örneklenemez. Bu kimlik, bir UUID gibi rastgele değildir, daha ziyade türle ilişkili olarak anlamlı olan bazı benzersiz tanımlayıcılardır. Örneğin, __dosya tür kimliği, dosyanın mutlak yoludur.
    • Parametreler: Çoğu tür, nesne kimliği ile tam olarak tanımlanamaz ve parametreler biçiminde ek bilgi alır. __dosya tip bir alır grup hangi Unix grubunun dosyanın sahibi olması gerektiğini belirten parametre.
    • Kaşifler: Yukarıda açıklanan genel kaşiflere ek olarak, türlerin bazen uzak makineden türe özgü bilgileri toplayan kendi kaşifleri vardır. __dosya type, oluşturulan dosyanın zaten var olup olmadığını belirlemek için gezginleri kullanır. Bazen bu bilgiyi dosyanın oluşturulmasını atlamak için kullanır.
    • Manifest: Bir tür bildirimi, kodun yeniden kullanımını kolaylaştırarak diğer türleri başlatabilir.
    • Gencode Komut Dosyaları: gencode-uzak komut dosyası, hedef düğümlerin yapılandırmasını gerçekten güncellemenin ana yoludur. gencode-uzak yerel makinede çalışır, ancak standart çıktı uzak makineye gönderilir ve bir kabuk betiği olarak çalıştırılır. Daha az kullanılan bir de var gencode-local yerel olarak çalıştırılacak kodu çıkaran komut dosyası.

Kabuk, fiili cdist yapılandırma betikleri yazmak için dil, ancak betiklerin çoğu uygun bir dil içeriyorsa herhangi bir dilde yazılabilir. Shebang hattı. Kabuk komut dosyası oluşturma, ortam değişkenlerine erişmenin, dosyaları okumanın ve sistem komutlarını yürütmenin ne kadar basit olduğu nedeniyle tercih edilir.

Yapılandırma dili

Kullanıcı tarafından yapılandırılabilen tüm bölümler, kabuk betikleri olan manifestolarda veya gencode-betiklerinde yer alır. Shell betikleri seçilmiştir, çünkü Unix Sistem Yöneticileri genellikle kabuk betiklerini okuma ve yazma konusunda uzmandır. Ayrıca, kabuk potansiyel hedef sistemlerde de yaygın olarak bulunur, böylece ek yazılım yükleme ihtiyacını ortadan kaldırır ("sıfır bağımlılık").

cdist, yapılandırmasını ilk bildirimden okur (conf / manifest / init), ana bilgisayarların türlere eşlendiği:

durum "$ __ target_host" myhostname içinde)        __package zsh - durum mevcut __addifnosuchline / tmp / cdist-welcome --line "Cdist'e hoş geldiniz"    ;;esac

Cdist'teki türleri kullanırken, bildirimlerdeki normal programlar gibi çağrılırlar ve gelişmiş parametre çözümlemesinin yanı sıra stdin'den okuma yapabilirler:

# Varsayılan bir dosya sağlayın, ancak kullanıcının değiştirmesine izin verin__file /home/frodo/.bashrc --source "/etc/skel/.bashrc" \   --state var \   --owner frodo --mode 0600# Dosya içeriğini stdin'den al__file / tmp / ne olursa olsun - sahip kökü --grup kökü --mod 644 --kaynak - << YAPILDIİşte / tmp / ne olursa olsun içeriğiYAPILDI

Bağımlılıklar, gerek Çevre değişkeni:

      __directory / tmp / foobar require = "__ directory // tmp / foobar" __file / tmp / foobar / baz

Türler içindeki yollara ve dosyalara erişim, aşağıdaki gibi ortam değişkenleriyle sağlanır: $ __ nesne.

Benzer yazılım

Ansible, cdist gibi, düğümleri yapılandırmak için aracısız bir itme modeli kullanır.[7] Ancak, Ansible normalde gerektirir Python cdist hedeflerinde değil.[13] Ansible, bildirim temelli YAML tabanlı bir dilde yazılmış roller ile Python'da yazılmış modüller arasında bir ayrım yapar. Cdist yalnızca hem modüllerin hem de rollerin amaçlarına hizmet eden "türlere" sahiptir ve çoğunlukla Bourne Shell'de yazılmıştır. Cdist'in yaklaşımı tercih edilebilir çünkü Shell, daha önce bir konfigürasyon yönetim sistemi kullanmamış birçok sistem yöneticisine aşinadır, ancak Ansible'ın bildirim dili tartışmaya açık ve daha uygundur.

Referanslar

  1. ^ Sharma, Rishabh; Soni, Mitesh (15 Mart 2015). Öğrenen Şef. Packt. s. 10, 17–18. ISBN  978-1783285211.
  2. ^ [1][ölü bağlantı ]
  3. ^ "ungleich / cdist: cdist yapılandırma yönetimi". GitHub.com. Arşivlendi 2015-07-05 tarihinde orjinalinden. Alındı 2016-04-10.
  4. ^ "Arşivlenmiş kopya". Arşivlenen orijinal 21 Kasım 2011. Alındı 6 Haziran 2012.CS1 Maint: başlık olarak arşivlenmiş kopya (bağlantı)
  5. ^ "Arşivlenmiş kopya". Arşivlenen orijinal 2013-01-15 tarihinde. Alındı 2012-06-08.CS1 Maint: başlık olarak arşivlenmiş kopya (bağlantı)
  6. ^ "Arşivlenmiş kopya". Arşivlenen orijinal 17 Ağustos 2012. Alındı 26 Haziran 2012.CS1 Maint: başlık olarak arşivlenmiş kopya (bağlantı)
  7. ^ a b Torberntsson, Kim; Rydin, Ylva (Haziran 2014). Bir Yapılandırma Yönetimi Çalışması - Bir Bulut Ortamında Yazılım Dağıtımı ve Yapılandırması için Sistem Çözümleri (PDF) (Tez). Uppsala Üniversitesi. sayfa 8, 27, 31, 42. Arşivlendi (PDF) 22 Kasım 2018 tarihinde orjinalinden.
  8. ^ "Google Toplulukları". Groups.google.com. Alındı 2016-04-10.
  9. ^ Kruse, Hıristiyan (2016). "Cdist ile otomatik yapılandırma dağıtımı". WWWTech. Arşivlendi 22 Kasım 2018 tarihli orjinalinden. Alındı 22 Kasım 2018.
  10. ^ "cdist türü (7)". Nico.schottelius.org. Arşivlenen orijinal 2016-03-03 tarihinde. Alındı 2016-04-10.
  11. ^ Bezroukov, Nikolai. "cdist". Softpanorama. Arşivlendi 8 Temmuz 2017'deki orjinalinden. Alındı 22 Kasım 2018.
  12. ^ "13. Manifest - cdist 4.10.6-6-g61ac4a26 belgeleri". www.nico.schottelius.org. Alındı 2019-03-26.
  13. ^ "Yükleme Rehberi". Ansible. Yönetilen Düğüm Gereksinimleri. Arşivlendi 2018-08-04 tarihinde orjinalinden. Alındı 22 Kasım 2018.

Dış bağlantılar