possible bug in kickstart with RHEL4 and %pre scripts using LVM
Shabazian, Chip
Chip.Shabazian at bankofamerica.com
Fri Aug 17 20:59:58 UTC 2007
My that looks familiar ;)
What happens if you don't "calculate" the number of drives. In other
words, change to this:
let numd=1
This can help narrow down if that is really what the problem is.
Chip
-----Original Message-----
From: kickstart-list-bounces at redhat.com
[mailto:kickstart-list-bounces at redhat.com] On Behalf Of Harry Hoffman
Sent: Friday, August 17, 2007 1:47 PM
To: Discussion list about Kickstart
Subject: possible bug in kickstart with RHEL4 and %pre scripts using LVM
Hi All,
Ran into what I believe is a bug. It looks to be in the %pre section.
Background:
Running CentOS release 5 with cobbler 0.5.2. I have a kickstart file for
installing RHEL 4.5 (see below).
I have a %pre section in the kickstart file that defines partitions:
# Magically figure out how to partition this thing %include
/tmp/partinfo
%pre
# Determine how many drives we have
set $(list-harddrives)
let numd=$#/2
d1=$1 # This is the device of disk 1
d2=$3 # This is the device of disk 2, etc.
S1=$2 # This is the size of disk 1
S2=$4 # This is the size of disk 2, etc.
# This would be a partition scheme for two or more drives if [ $numd -ge
2 ]; then cat << EOF >> /tmp/partinfo part /boot --fstype ext3
--size=100 --ondisk=$d1 --asprimary part /boot2 --fstype ext3 --size=100
--ondisk=$d2 --asprimary part swap --size=512 --ondisk=$d1 --asprimary
part swap --size=512 --ondisk=$d2 --asprimary part raid.01 --size=1
--grow --ondisk=$d1 part raid.02 --size=1 --grow --ondisk=$d2 raid pv.01
--fstype "physical volume (LVM)" --level=RAID1 --device=md0
raid.01 raid.02
volgroup internal_hd pv.01
logvol / --fstype ext3 --name=slash --vgname=internal_hd --size=1 --grow
EOF
else
cat << EOF >> /tmp/partinfo
part /boot --fstype ext3 --size=100 --ondisk=$d1 --asprimary part swap
--size=1024 --ondisk=$d1 --asprimary part pv.01 --fstype "physical
volume (LVM)" --size=1 --grow --ondisk=$d1 volgroup internal_hd pv.01
logvol / --fstype ext3 --name=slash --vgname=internal_hd --size=1 --grow
#part / --fstype ext3 --size=1 --grow --ondisk=$d1 EOF
fi
This pre script shows the following errors on vt3:
* Running kickstart %pre script(s)
let: arith: syntax error: "numd=2/2"
let: arith: syntax error: "numd=2/2"
[: 2: unexpected operator
* All kickstart %pre script(s) have been run
* Exception parsing ks.cfg: Defined PV partition pv.01 multiple times
In this particular case I have only one (logical HW RAID) drive and the
/tmp/partinfo is created with the lines contained in the else clause
from above.
The error about partition pv.01 causes kickstart to fail and die :-(
Please see the full kickstart file below.
I should note that if I place the part info from the else clause outside
of the %pre section (i.e. just create a static partition declaration in
the kickstart file) then everything works as expected.
Any ideas? I'm stumped.
Cheers,
Harry
# Kickstart file to automate the installation of Oracle 10 on RHEL4 #
Harry Hoffman <hhoffman at fqdn.com> # Oracle 10g Kickstart file for CentOS
4.x #platform=x86, AMD64, or Intel EM64T # System authorization
information auth --useshadow --enablemd5 # System bootloader
configuration bootloader --location=mbr --md5pass=blah # Partition
clearing information clearpart --all --initlabel # Use text mode install
text # Firewall configuration firewall --enabled --port=22:tcp # Run the
Setup Agent on first boot firstboot --disable # System keyboard keyboard
us # System language lang en_US.UTF-8 langsupport --default=en_US.UTF-8
en_US.UTF-8 # Use network installation url
--url=http://192.168.1.3/cblr/links/RHEL-4.5-i386
# Network information
network --bootproto=static --ip=192.168.1.10 --netmask=255.255.240.0
--gateway=192.168.1.249 --nameserver=192.168.1.3
--hostname=db1.prod.fqdn.com --device=eth0 --onboot=on # Reboot after
installation reboot
#Root password
rootpw --iscrypted blah
# SELinux configuration
selinux --enforcing
# Do not configure the X Window System
skipx
# System timezone
timezone America/New_York
# Install OS instead of upgrade
install
# Clear the Master Boot Record
zerombr
# Magically figure out how to partition this thing %include
/tmp/partinfo
%pre
# Determine how many drives we have
set $(list-harddrives)
let numd=$#/2
d1=$1 # This is the device of disk 1
d2=$3 # This is the device of disk 2, etc.
S1=$2 # This is the size of disk 1
S2=$4 # This is the size of disk 2, etc.
# This would be a partition scheme for two or more drives if [ $numd -ge
2 ]; then cat << EOF >> /tmp/partinfo part /boot --fstype ext3
--size=100 --ondisk=$d1 --asprimary part /boot2 --fstype ext3 --size=100
--ondisk=$d2 --asprimary part swap --size=512 --ondisk=$d1 --asprimary
part swap --size=512 --ondisk=$d2 --asprimary part raid.01 --size=1
--grow --ondisk=$d1 part raid.02 --size=1 --grow --ondisk=$d2 raid pv.01
--fstype "physical volume (LVM)" --level=RAID1 --device=md0
raid.01 raid.02
volgroup internal_hd pv.01
logvol / --fstype ext3 --name=slash --vgname=internal_hd --size=1 --grow
EOF
else
cat << EOF >> /tmp/partinfo
part /boot --fstype ext3 --size=100 --ondisk=$d1 --asprimary part swap
--size=1024 --ondisk=$d1 --asprimary part pv.01 --fstype "physical
volume (LVM)" --size=1 --grow --ondisk=$d1 volgroup internal_hd pv.01
logvol / --fstype ext3 --name=slash --vgname=internal_hd --size=1 --grow
#part / --fstype ext3 --size=1 --grow --ondisk=$d1 EOF
fi
%packages
automake
bison
cpp
flex
gcc
gcc-c++
glibc-devel
glibc-headers
glibc-kernheaders
libungif
Xaw3d
xorg-x11-xauth
libcap
ntp
sudo
vlock
screen
sysstat
-sendmail
postfix
vim-enhanced
# Oracle 10 stuff
compat-db
openmotif
setarch
libaio
libaio-devel
compat-gcc-32
compat-gcc-32-c++
compat-libstdc++-33
%post
chvt 3
#Turn off/on services
chkconfig --level 2345 isdn off
chkconfig --level 2345 portmap off
chkconfig --level 2345 nfslock off
chkconfig --level 345 ntpd on
chkconfig --level 345 cups off
#Setup root mail forwarding
echo -e "root:\troot at fqdn.com" >> /etc/aliases postalias /etc/aliases
# Setup Oracle
groupadd -r oinstall;
groupadd -r dba;
useradd -r -c "Oracle DB User" -g oinstall -G dba -m -p 'blah' oracle
echo "# " >> /etc/sysctl.conf
echo "# Required for Oracle 10g " >> /etc/sysctl.conf echo "# " >>
/etc/sysctl.conf echo "kernel.shmall = 2097152" >> /etc/sysctl.conf echo
"kernel.shmmax = 2147483648" >> /etc/sysctl.conf echo "kernel.shmmni =
4096" >> /etc/sysctl.conf echo "kernel.sem = 250 32000 100 128" >>
/etc/sysctl.conf echo "fs.file-max = 65536" >> /etc/sysctl.conf echo
"net.ipv4.ip_local_port_range = 1024 65000" >> /etc/sysctl.conf echo
"net.core.rmem_default=262144" >> /etc/sysctl.conf echo
"net.core.rmem_max=262144" >> /etc/sysctl.conf echo
"net.core.wmem_default=262144" >> /etc/sysctl.conf echo
"net.core.wmem_max=262144" >> /etc/sysctl.conf /sbin/sysctl -p
echo "oracle soft nproc 2047" >>
/etc/security/limits.conf
echo "oracle hard nproc 16384" >>
/etc/security/limits.conf
echo "oracle soft nofile 1024" >>
/etc/security/limits.conf
echo "oracle hard nofile 65536" >>
/etc/security/limits.conf
# setting /etc/profile
echo "if [ \$USER = \"oracle\" ]; then" >> /etc/profile
echo " if [ \$SHELL = \"/bin/ksh\" ]; then" >> /etc/profile
echo " ulimit -p 16384" >> /etc/profile
echo " ulimit -n 65536" >> /etc/profile
echo " else" >> /etc/profile
echo " ulimit -u 16384 -n 65536" >> /etc/profile
echo " fi" >> /etc/profile
echo "fi" >> /etc/profile
# Change pam to respect the new limits
echo "session required /lib/security/pam_limits.so" >>
/etc/pam.d/login
# Make oracle directories
mkdir -p /opt/oracle/product/10.2.0.1/db_1 chown -R oracle:oinstall
/opt/oracle/ chmod -R 775 /opt/oracle/
# Set ORACLE_HOME in oracle's .bashrc
echo "ORACLE_HOME=/opt/oracle/product/10.2.0.1/db_1" >>
/home/oracle/.bashrc echo "PATH=\$PATH:\$ORACLE_HOME/bin" >>
/home/oracle/.bashrc echo "export \$PATH" >> /home/oracle/.bashrc
touch /etc/oratab
chown oracle:oinstall /etc/oratab
wget -O /home/oracle/10201_database_linux32.zip
http://192.168.1.3/cblr/localmirror/10201_database_linux32.zip
wget -O /home/oracle/10gR2.rsp
http://192.168.1.3/cblr/localmirror/10gR2.rsp
chown oracle:oinstall /home/oracle/10201_database_linux32.zip
cd /home/oracle && su oracle -c "unzip 10201_database_linux32.zip"
wget -O /etc/rc3.d/S99oracle_install
http://192.168.1.3/cblr/localmirror/S99oracle_install
chmod 755 /etc/rc3.d/S99oracle_install
# Update the system
# Update the system
/usr/sbin/rhnreg_ks --profilename "db1.prod.fqdn.com" --username
"rhuser" --password "blah" --email "root at fqdn.com"
up2date -fu up2date
up2date -fu
wget http://192.168.1.3/cblr/watcher.py?system_done=RHEL-4-Oracle -b
_______________________________________________
Kickstart-list mailing list
Kickstart-list at redhat.com
https://www.redhat.com/mailman/listinfo/kickstart-list
More information about the Kickstart-list
mailing list