Basicamente eu quero um ARGV como o uso na linha de comando PXE, mas não consigo ver nenhuma documentação para fazer isso.
basicamente eu quero passar algo como
VLAN de HOSTNAME do scientific-linux-6
em seguida, em% pre acertar algumas APIs para obter as informações de rede necessárias para anexá-las à configuração do KS. Essa parte é fácil, se eu tiver os parâmetros.
Finalmente, em% post eu quero começar uma corrida de chef e cinta de boot para o servidor do chef. Isso também precisa saber hostname / domain name (basicamente tem hostname -f não explodir), mas isso não deve ser muito ruim se eu puder completar o acima. Infelizmente, esse era meu objetivo original, mas falhou quando percebi que ainda não tinha o nome do host definido.
Aqui está o que eu aprendi até agora.
$ cat linux-install/msgs/param.msg
09Kernel Parameter Help07
Some kernel parameters can be specified on the command line and will be
passed to the running kernel. This does not include options to modules
such as ethernet cards or devices such as CD-ROM drives.
To pass an option to the kernel, use the following format:
0flinux <options>07
If a different installation mode is desired, enter it after the option(s).
For example, to install on a system with 128MB of RAM using expert mode,
type the following:
0flinux mem=128M expert07
To pass options to modules, you will need to use the expert mode to disable
PCI autoprobing. When the installation asks for your device type that needs
an option or parameter passed to it, there will be a place to type those
in at that time.
Doce !? Então isso significa que no PXE eu posso ir como ...
scientific-linux-6 linux ARGV_APPEND
certo?
Depois de colocar as coisas em% pre e% post, encontrei Esta apresentação e algumas outras menções
Stick this at the top of the %pre section, and it will take anything of the form var=value
from /proc/cmdline and turn it into a variable you can use directly
set -- 'cat /proc/cmdline'
for I in $*; do case "$I" in *=*) eval $I;; esac; done
Então, isso significa que posso dizer
scientific-linux-6 linux HOSTNAME=foo.example.com, VLAN=ddd
certo?
Em seguida, em% pre Isso significa que posso
Acertei minha API para obter IP, máscara, gateway e depois mudei de rede para algo como
network --bootproto=static --ip=10.0.2.15 --netmask=255.255.255.0
--gateway=10.0.2.254 --nameserver=10.0.2.1
Conforme descrito aqui
Em seguida, isso nos configura em% post para nossa corrida chef-cliente.
Minha pergunta é. Parece que isso vai funcionar? Existe uma maneira melhor? Certamente alguém já fez isso antes?
Atualização (solução implementada com base na resposta)
Na linha de comando do PXE acabei passando opções
$ hotbox linux prefix_varname="foo" prefix_another_var="bar"
(tudo depois que linux
é colocado em / proc / cmdline. hotbox
foi o rótulo PXE.)
Em seguida, em %post
eu analisei / proc / cmdline (em Ruby) procurando por todas as variáveis que correspondiam / prefixo _ * /
e transformou-os em um hash. Isso leva a passar o chef para uma configuração adicional com base nos resultados de uma solicitação da Web.
Nota: Razor não estava por perto quando eu fiz tudo isso. Eu pessoalmente não estava satisfeito com o barbeador, e ainda estamos usando mais ou menos o método acima.