Debian / Ubuntu define a variável de espelho preseed via comando early / run

7

Eu preciso saber como posso adicionar isso à pré-configuração via d-i early / command ou d-i preseed / run para definir meu espelho dentro de preseed.cfg do argumento /proc/cmdline .

Se eu fizer:

d-i preseed/run string ws/ubuntu.sh

#!/bin/sh
     for x in 'cat /proc/cmdline'; do
             case $x in RPHOST*)
                     eval $x

                     d-i mirror/http/hostname string ${RPHOST}
                     d-i mirror/http/mirror string ${RPHOST}
                     d-i apt-setup/security_host string ${RPHOST}
                     ;;
             esac; 
done

falha.

Funciona bem na seção %pre do kickstart do CentOS, mas não tenho idéia de como fazer isso via pré-configuração do debian / ubuntu.

    
por manga 04.08.2013 / 17:39

2 respostas

6

depois de algumas pesquisas sobre o debconf eu criei esta solução:

no seu preseed.cfg você chama o script via:

d-i preseed/run string ws/ubuntu.sh    // subdir from preseed file location

conteúdo do ubuntu.sh:

#!/bin/sh
echo "Start ubuntu.sh runscript" >> /var/log/syslog
for x in 'cat /proc/cmdline'; do
        case $x in RPHOST*)
                eval $x
                HOST=$RPHOST
                echo "d-i mirror/http/hostname string ${HOST}" > /tmp/mirror.cfg
                echo "d-i mirror/http/mirror string ${HOST}" >> /tmp/mirror.cfg
                echo "d-i apt-setup/security_host string ${HOST}" >> /tmp/mirror.cfg
                ;;
        esac;
done
// add´s values to /var/lib/cdebconf/question.dat
debconf-set-selections /tmp/mirror.cfg

funciona bem @ 12.04.2 LTS!

    
por 04.08.2013 / 21:47
0

Parece que você está tentando passar um valor arbitrário para o kernel durante uma inicialização (PXE?) e, em seguida, detecta e reage a ele durante o preseed? Eu acho que pode haver maneiras melhores de conseguir isso, mas eu tenho que saber mais sobre o seu cenário específico. O projeto do Cobbler vem à mente.

Independentemente disso, outra maneira de conseguir isso pode ser usar uma inclusão condicional com base no nome do host ou no cmdline que inclui um arquivo de configuração com as configurações de espelho apropriadas, pois os arquivos de inclusão substituem os valores de qualquer arquivo anterior.

# More flexibly, this runs a shell command and if it outputs the names of
# preconfiguration files, includes those files. 
#d-i preseed/include_command \
#      string if [ "'hostname'" = bob ]; then echo bob.cfg; fi
    
por 15.08.2018 / 19:42