Já que você já está usando o boneco, você também pode dar uma olhada em Foreman para obter modelos avançados de kickstart.
O Foreman usa modelos de rubi, permitindo modelos flexíveis de kickstart .
Eu gostaria de Kickstart algumas dúzias de servidores RHEL6 / SL6. No entanto, alguns desses servidores são diferentes e eu não quero criar um novo arquivo ks.cfg para cada classe de servidor.
Existe alguma maneira de gerar um arquivo do Kickstart dinamicamente, de um modelo?
Por exemplo, se eu acrescentar uma linha como esta no Kernel:
APPEND ks=http://192.168.1.100/cgi-bin/ks.cgi ip=dhcp
Em seguida, o script ks.cgi pode determinar qual host é esse (através do endereço MAC) e imprimir as opções do Kickstart apropriadas para esse host. Eu poderia, opcionalmente, substituir algumas opções passando parâmetros para o script, assim:
APPEND ks=http://192.168.1.100/cgi-bin/ks.cgi?NODETYPE=production&IP=192.168.2.80
Depois de iniciarmos o servidor, ativamos o Cfengine / Puppet nesse sistema e gerenciamos o sistema usando nosso produto de gerenciamento de configurações favorito.
Estamos experimentando o xCAT , mas está sendo complicado demais. Eu procurei no Cobbler , mas não tenho certeza se ele faz isso.
Atualização:
Uma solução roll-your-own é discutida no livro da O'Reilly: Gerenciando sistemas baseados em RPM com o Kickstart e o Yum, Capítulo 3. Personalizando seu Kickstart Instale > Ks.cfg dinâmico , que ecoa alguns dos comentários neste tópico:
To implement such a tool is beyond the scope of this Short Cut, but I can walk through the high-level design. Any such solution would mix a data store (the things that change) with a templating solution (the things that don’t change). The data store would hold the per-machine data, such as the IP address and hostname. You would also need a unique identifier, perhaps the hostname, such that you could pick up a given machine’s data. The data store could be a flat file, XML data, or a relational database such as PostgreSQL or MySQL.
In turn, to invoke the system, you pass a machine’s unique identifier as a URL parameter. For example:
boot: linux ks=http://your.kickstart.server/gen_config?host-server25
In this example, the CGI (or servlet, or whatever) generates a ks.cfg for the machine server25.
Mas onde, oh onde, é o código para ks.cgi?
Eu tenho uma solução proprietária simples implantada onde eu uso PHP como a linguagem de templates e o arquivo de kickstart é gerado dinamicamente por um script PHP em um servidor local.
O processo para criar tal coisa é muito simples se você souber como escrever arquivos de kickstart (veja isto Red Hat documentação se você quiser saber como):
por exemplo, substitua
network --device eth0 --bootproto dhcp --hostname SOME_STATIC_HOSTNAME
com
network --device eth0 --bootproto dhcp --hostname <?php echo $hostname;?>
É basicamente isso.
Eu queria ter URLs bonitas para que o gerenciador de inicialização dissesse algo como:
linux ksdevice=eth0 ks=http://myserver/kickstart/rhel6/networkname/servername/ks.cfg
com todos os parâmetros especificados como elementos de caminho. Para isso eu criei um arquivo .htaccess
para o servidor Apache que se parece com isso:
RewriteEngine On
RewriteBase /kickstart
RewriteRule kickstart/(.*) /company-kickstart.php/$1
Então o script PHP faz algo assim:
<?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
Cobbler suporta perfis de kickstart , mas o kickstart funciona muito bem com PHP, então você pode passar parâmetros na sua linha ks=...
. Você pode acabar escrevendo isso sozinho.
Tags kickstart redhat provisioning