Soru Kickstart: Bir CGI veya PHP betiği ile dinamik kickstart görüntülerini sunun mu?


isterdim Kickstart Bir çift düzine RHEL6 / SL6 sunucuları. Ancak, bu sunucuların bazıları farklıdır ve her sunucu sınıfı için yeni bir ks.cfg dosyası oluşturmak istemiyorum.

Bir şablondan anında bir Kickstart dosyasını anında dinamik olarak oluşturabileceğim bir yol var mı?

Örneğin, Çekirdeğe böyle bir satır eklersek:

APPEND ks=http://192.168.1.100/cgi-bin/ks.cgi ip=dhcp

Sonra ks.cgi betiği bunun hangi host olduğunu (MAC adresi ile) belirleyebilir ve bu host için uygun olan Kickstart seçeneklerini yazdırabilir. İsteğe bağlı olarak, aşağıdaki gibi komut dosyasına parametreleri geçirerek bazı seçenekleri geçersiz kılabilir:

APPEND ks=http://192.168.1.100/cgi-bin/ks.cgi?NODETYPE=production&IP=192.168.2.80

Sunucuya başladıktan sonra, bu sistemde Cfengine / Puppet'i aktif hale getiriyoruz ve en sevdiğimiz Configuration Management ürünümüzü kullanarak sistemi yönetiyoruz.

Deniyoruz xCAT ama çok hantal olduğunu kanıtlıyor. İçine baktım ayakkabı tamircisiama bunu yaptığından emin değilim.

Güncelleştirme:

Bir rulo-kendi çözüm O'Reilly kitabında tartışılmıştır: RPM Tabanlı Sistemlerin Kickstart ve Yum ile Yönetilmesi, Bölüm 3. Kickstart'ınızın Özelleştirilmesi> Dinamik ks.cfgBu konudaki yorumların bir kısmı:

Böyle bir araç uygulamak, bu Kısa Kesimin kapsamı dışındadır, fakat ben   üst düzey tasarımda yürüyebilir. Böyle bir çözüm,   veri deposu (değişen şeyler) ile şablonlama çözümü (   değişmeyen şeyler). Veri deposu makineye dayanacaktı   IP adresi ve ana bilgisayar adı gibi veriler. Ayrıca bir   benzersiz bir tanımlayıcı, belki de ana bilgisayar adını,   verilen makine verileri. Veri deposu düz bir dosya, XML veri olabilir,   veya PostgreSQL veya MySQL gibi ilişkisel bir veritabanı.

Sırasıyla, sistemi çağırmak için bir makinenin benzersiz tanımlayıcısını geçirirsiniz.   URL parametresi olarak. Örneğin:

önyükleme: linux ks =http: //your.kickstart.server/gen_config konak-server25

Bu örnekte, CGI (veya sunucu veya herhangi bir şekilde), makine sunucusu25 için bir ks.cfg oluşturur.

Ama nerede, ah, ks.cgi'nin kodu nerede?


5
2017-10-18 23:58


Menşei


İlginç soru. Dinamik olarak değiştirmek için ne tür kickstart parametreleri arıyorsunuz? - Belmin Fernandez
@Beaming: Tam olarak emin değilim, ama sanırım sunucu gibi 'sınıf' gibi bir şeyle değiştirmek istiyorum NODETYPE=production veya NODETYPE=development. - Stefan Lasiewski
Gerçekten bir cevap değil, sadece bazı URL parametrelerini temel alan farklı bir kickstart betiği sunmak oldukça önemsiz PHP'dir. Bunu kendiniz geliştirmek daha kolay olabilir, sonra sizin için başka bir yazılım bulmanız daha kolay olabilir. - devicenull
@awsiv - bu hiç hoş değil Çalıştığınız şirketten ürün için etiketlerle eski soruları düzenlemeye devam etmek. Yanıtları önerebilir ve önerebilir ve bağlantınızı açıklayabilirsiniz. Bir soruya yapılan düzenlemeler link-fahişe ve çok kötü görünüyor. - mfinni
Cobbler'ın yerleşik sistemi görev için mükemmel yeterli olmalıdır. - Michael Hampton♦


Cevaplar:


Zaten kukla kullandığınız için, ayrıca bir göz atabilirsiniz. ustabaşı Gelişmiş kickstart templating için.

Foreman, esnek bir şekilde izin vererek, yakut ışıltısını kullanır kickstart şablon.


4
2017-11-16 20:02



Aslında kukla kullanmıyoruz (Cfengine 2'ye takılı kaldık. Kukla'ya geçmeyi düşünüyoruz, ama bu büyük bir göreve benziyor). - Stefan Lasiewski
Foreman hakkında konuştuğunuzdan beri orada durmayın, uçtan uca sistem yönetimi için de Katello'ya bir göz atın. - Red Tux


PHP'yi şablon dili olarak kullandığım ve kickstart dosyasının yerel bir sunucudaki PHP betiği tarafından oluşturulduğu basit bir tescilli çözümüm var.

Kickstart dosyalarını nasıl yazacağınızı biliyorsanız, böyle bir şeyi oluşturma işlemi çok basittir. Red Hat belgeleri eğer öğrenmek istiyorsanız nasıl:

  1. Temel kickstart dosyanızı oluşturun ("templatize" etmek istediğiniz parametreler için bazı varsayılan değerler ile).
  2. Kickstart dosyasını web sunucunuzdaki bir dosyaya .php uzantılı bir dosyaya kaydedin. Ben -kickstart.php kullanıyorum
  3. URL parametrelerini okumak ve doğru verileri ayarlamak için kickstart dosyasına PHP kodu ekleyin ve ardından PHP değişkenlerinden gelen çıktı ile varsayılan değerlerinizi adım 1'den değiştirin.

örneğin, yerine

network --device eth0 --bootproto dhcp --hostname SOME_STATIC_HOSTNAME

ile

network --device eth0 --bootproto dhcp --hostname <?php echo $hostname;?>

Bu temelde.

Önyükleyici yükleyicinin şöyle bir şey ifade etmesini sağlamak için oldukça güzel URL'lere sahip olmak istedim:

linux ksdevice=eth0 ks=http://myserver/kickstart/rhel6/networkname/servername/ks.cfg

Yol elemanları olarak belirtilen tüm parametrelerle. Bunun için bir .htaccess Bu gibi görünüyor Apache web sunucusu için dosya:

RewriteEngine On
RewriteBase /kickstart
RewriteRule kickstart/(.*) /company-kickstart.php/$1

Sonra PHP betiği böyle bir şey yapar:

<?php
list($empty,$os,$envtype,$hostname,$notimportant) = 
    explode("/",$_SERVER['PATH_INFO']);
header("Content-Type: text/plain"); # important, otherwise kickstart fails
?>
# Kickstart file automatically generated by my script.
#version=<?php echo $os;?>
install
url --url=http://my.local.mirror/<?php echo $os;?>/os/x86_64
lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto dhcp --hostname <?php echo $hostname;?>
# ... rest of kickstart parameters

3
2017-12-22 15:37





Cobbler kickstart profillerini desteklerama kickstart PHP ile çok iyi çalışır, böylece parametrelerinizi ks=... hat. Bunu kendin yazabilirsin.


2
2017-10-19 02:02