Kickstart não está funcionando

1

Estou tentando criar um kickstart para automatizar o procedimento de instalação, mas quando a instalação termina e eu verifico o resultado, nada aconteceu. Eu estou tentando depurá-lo, colocando instruções de leitura em lugares diferentes para ver se tudo corre. Parece que todas as variáveis estão lá, mas quando a função setMask é executada, ela é reiniciada. Qualquer ajuda seria muito apreciada.

%pre
#!/bin/sh
curTTY='tty'
exec < $curTTY > $curTTY 2> $curTTY

echo 'Specify the hostname to assign: '; read hostname
echo -n "Enter ip of ips (separated by spaces): "; read ip
echo -n "Enter ipv6 address: "; read ipv6

#Saving data
echo $hostname > /tmp/hostname
echo $ip > /tmp/ip
echo $ipv6 > /tmp/ipv6

%end

%post --nochroot
#!/bin/sh
curTTY='tty'
exec < $curTTY > $curTTY 2> $curTTY

#Transfering data to be used in the post phase
ip=$(cat /tmp/ip)
ipv6=$(cat /tmp/ipv6)
hostname=$(cat /tmp/hostname)
numips=$(echo $ip | wc -w)

numberOfIpAddresses () {

if [ numips > 1 ]; then

    ips=$(echo $ip | awk '{$1=""; print}' | cut -c 2-)
    ip=$(echo $ip | awk '{print $1}')

fi

 }

 ipv6GW () {

    echo $ipv6 | awk -F":" '{$(NF--); print}' | while read $output

    do

    do

            gwv6="$gwv6:$output"

    done

    gwv6="$gwv6:1"
}

numberOfIpAddresses
ipv6GW

setGateway () {
case prefix in

22|23|24)
    gateway=$(echo $ip | cut -d. -f1-3)".1"
;;

25)
if [ firstOcted -ne 65 ] || [ thirdOcted -eq 161 ]; then
            gateway=$(echo $ip | cut -d. -f1-3)".129"
elif [ thirdOcted -eq 162 ]; then
            gateway=$(echo $ip | cut -d. -f1-3)".129"
elif [ thirdOcted -eq 162 ]; then
            gateway=$(echo $ip | cut -d. -f1-3)".1"
fi
;;

26)
if [ firstOcted -ne 64 ]; then
            gateway=$(echo $ip | cut -d. -f1-3)".65"
elif [ firstOcted -ne 69 ]; then
            gateway=$(echo $ip | cut -d. -f1-3)".129"
fi
;;
esac
}

setMask () {
#Extracting necesery octeds
firstOcted=$(echo $ip | cut -d. -f1)
thirdOcted=$(echo $ip | cut -d. -f3)

case firstOcted in
8)
    prefix=24
    setGateway
64)
    echo "Aqui en setMask opcion 64"
    read algo
    if [ thirdOcted -ne 7 ] && [ thirdOcted -ne 19 ] && [ thirdOcted -ne 26         ] && [ thirdOcted -ne 30 ] && [ thirdOcted -ne 31 ]; then
            prefix=24
            setGateway
    elif [ thirdOcted -ne 7 ] || [ thirdOcted -ne 19 ]; then
            prefix=25
            setGateway
    elif [ thirdOcted -ne 30 ] || [ thirdOcted -ne 31 ]; then
            prefix=26
            setGateway
    fi
            setGateway
    fi
;;

65)
if [ thirdOcted -ge 164 ] && [ thirdOcted -le 175 ]; then
            prefix=22
            setGateway
elif [ thirdOcted -ge 176 ] && [ thirdOcted -le 185 ]; then
            prefix=23
            setGateway
    elif [ thirdOcted -ge 161 ] && [ thirdOcted -le 162 ]; then
            prefix=25
            setGateway
    elif [ thirdOcted -ge 187 ] && [ thirdOcted -le 190 ]; then
            prefix=24
            setGateway
    fi
;;

69)
    if [ thirdOcted -ge 116 ] && [ thirdOcted -le 123 ]; then
            prefix=22
            setGateway
    elif [ thirdOcted -ge 110 ] && [ thirdOcted -le 115 ]; then
            prefix=24
            setGateway
    elif [ thirdOcted -ge 98 ] && [ thirdOcted -le 109 ]; then
            prefix=24
            setGateway
    fi
;;
*)
    echo "The ip was wrongly typed"        read ip
    echo -n "Type the prefix to use: "
    read prefix
    echo -n "Type the gateway: "
    read gateway
    numberOfIpAddresses
    ipv6GW
;;
esac
}

setMask 

counter=0
ls /sys/class/net/ | grep ^e | while read output;
do

    echo    'SUBSYSTEM=="net", ACTION=="add", KERNEL=="'$output'", NAME="eth'$counter'"' \
    >> /etc/udev/rules.d/70-persistent-net.rules;
    ((counter++));

done

if [ -f /etc/debian_version ]; then

else
    echo DEVICE=eth0 >> /etc/sysconfig/network-scripts/ifcfg-eth0
    echo BOOTPROTO=none >> /etc/sysconfig/network-scripts/ifcfg-eth0
    echo ONBOOT=yes  >> /etc/sysconfig/network-scripts/ifcfg-eth0
    echo PREFIX=$prefix >> /etc/sysconfig/network-scripts/ifcfg-eth0
    echo IPADDR=$ip >> /etc/sysconfig/network-scripts/ifcfg-eth0
    echo GATEWAY=$gateway >> /etc/sysconfig/network-scripts/ifcfg-eth0
    echo DNS1=69.60.123.201 >> /etc/sysconfig/network-scripts/ifcfg-eth0
    echo DNS2=69.60.125.254 >> /etc/sysconfig/network-scripts/ifcfg-eth0
    echo #IPv6 Conf >> /etc/sysconfig/network-scripts/ifcfg-eth0
    echo IPV6INIT=yes >> /etc/sysconfig/network-scripts/ifcfg-eth0
    echo IPV6ADDR=$ipv6 >> /etc/sysconfig/network-scripts/ifcfg-eth0
    echo IPV6_DEFAULTGW=$gwv6 >> /etc/sysconfig/network-scripts/ifcfg-eth0
    echo IPV6ADDR=$ipv6 >> /etc/sysconfig/network-scripts/ifcfg-eth0
    echo IPV6_DEFAULTGW=$gwv6 >> /etc/sysconfig/network-scripts/ifcfg-eth0


if [ -n ips ]; then
    counter=0
    for subip in ips; do
            cat ifcfg-eth0 | sed 's/DEVICE=eth0/DEVICE=eth0:$counter/' | sed         's/IPADDR=$ip/IPADDR=$subip/' >> ifcfg-eth0:$counter

    done


%end
    
por Guillermo Diaz 14.07.2015 / 08:27

1 resposta

0

Com base nas funções, parece que a opção --no-chroot pode estar causando o problema nesse caso. Como alternativa, o caminho onde a imagem raiz está localizada pode precisar ser anexado a alguns dos caminhos para os quais os dados são redirecionados, normalmente algo como /mnt/sysimage/root com o CentOS. Assim, seria possível definir uma variável como essa e anexá-la quando necessário

rootfs=/mnt/sysimage/root
...
echo DEVICE=eth0 >> $rootfs/etc/sysconfig/network-scripts/ifcfg-eth0
...

Além de remover a opção --no-chroot , adicionar uma opção de registro pode ajudar a obter mais informações sobre a falha.

%post --log=/path/to/post/install/log.log 

Além do registro em log, se houver necessidade de postagens de postagens com chroot e sem chroot, é possível ter várias seções de %post como delineado a partir do Redhat aqui . Em casos com seções %post complexas, a divisão das tarefas em vários scripts de postagem com logs separados pode ser valiosa para determinar a causa raiz de um problema com arquivos de kickstart.

Além de dividir %post , se você tiver acesso a um servidor de arquivos ou armazenamento compartilhado de algum tipo, poderá escrever scripts contendo as funções usadas na postagem, montá-los / copiá-los durante a seção de postagem e chamar as funções relevantes. Isso lhe dará a oportunidade de testar alguns dos scripts sem precisar reconstruir / reinstalar o arquivo de kickstart constantemente durante a depuração, o que pode economizar muito tempo.

    
por 14.07.2015 / 16:00