Šta je novo?

CentOS kickstart i post install skripta

Neky

Slavan
Učlanjen(a)
01.10.2007
Poruke
919
Poena
330
Hejhej drugari,

Potrebna mi je pomoć oko kreiranja post-install skripte za CentOS 6.4. U minimal ISO sam dodao određene pakete i napravio kickstart fajl; ti paketi se lepo instaliraju, instalacija prođe "bez ruku" dok ne dođe do post-install skripte.

Skripta bi od korisnika tražila da unese neke portove i onda te portove treba da otvori u firewallu. Pored toga treba da edituje i nekoliko fajlova koji su prethodno iskopirani na podrazumevana mesta. Sve ovo imam u .sh fajlu i sve radi kada se pokrene samostalno na već instaliranom CentOSu. Međutim, post-install ekran mi pre svega ne ispisuje ništa (dobijem samo kursor),

Evo malo koda:

kickstart.cfg

Kod:
%post --nochroot
exec < /dev/tty6 > /dev/tty6 2> /dev/tty6
chvt 6
cd /mnt/source/JOTC/
bash post.sh > /root/post.log
#nazad na instaler
chvt 1
exec < /dev/tty1 > /dev/tty1 2> /dev/tty1

%end

post.sh

http://pastebin.com/FGg7pfTT pošto je malo obimnija. Totalni sam BASH početnik tako da zanemarite brljotine u skripti... Interesuje me zašto ne radi, nikakav odziv nemam jer echo naredba ne ehouje ništa.
 
Uspeo sam da rešim sve probleme, skripta radi ono što mi je trebalo. Ako ikome zatreba, evo kickstart fajl sa sitnim objašnjenjima

Kod:
# Osnovne opcije
install
text
poweroff
cdrom
lang en_US.UTF-8
keyboard us
skipx
network --device eth0 --bootproto dhcp --hostname jotc-service
rootpw som3pa$$
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc America/Chicago

# Particije i bootloader. / particija od 1.5G, ostalo za /var zbog Mongo baze. LVM
bootloader --location=mbr --driveorder=sda --append=" rhgb creashkernel=auto quiet"
zerombr
clearpart --all
part /boot --fstype ext4 --size=120
part pv.1 --size=1536 --grow
volgroup VG1 --pesize=32768 pv.1
logvol / --fstype ext4 --name=root --vgname=VG1 --size=1536
logvol /var --fstype ext4 --name=var --vgname=VG1 --size=1024 --grow
#logvol /mongodb --fstype ext4 --name=mongodb --vgname=VG1 --size=1024 --grow

repo --name="CentOS" --baseurl=file:///mnt/source --cost=100

%packages --nobase --excludedocs
@core

%post --log=/root/ks-post.log
exec < /dev/tty6 > /dev/tty6 2> /dev/tty6
chvt 6
# Montiram CD (ISO u mom slučaju jer je virt mašina u pitanju) da sa njega iskopiram fajlove
# chrootovana sesija
mount /dev/cdrom /mnt
clear
cp -rf /mnt/JOTC/src/jotc/ /opt/
cp -f /mnt/JOTC/src/service /etc/init.d/jotc
echo -n "Starting MongoDB service..."
# startujem mongod servis da mi kreira default conf fajl
service mongod start > /dev/null 2>&1
if [ $? -eq 0 ]; then			
	echo "SUCCESS"
fi
chkconfig iptables on > /dev/null 2>&1 
service iptables start > /dev/null 2>&1
clear
echo -e "\n"
echo -n "######################### JOTC CONFIGURATOR #########################"
echo -e "\n\n"

MONGO_PORT=""
NODE_PORT=""
MONGO_CONF=/etc/mongod.conf
NODE_CONF=/opt/jotc/config.js
FIRE_CONF=/etc/sysconfig/iptables
DBNAME=""
IP=`hostname -I`

while ! [[ $MONGO_PORT =~ ^(102[5-9]|10[3-9][0-9]|1[1-9][0-9]{2}|[2-9][0-9]{3}|[1-3][0-9]{4}|4[0-8][0-9]{3}|490[0-9]{2}|491[0-4][0-9]|4915[0-2])$ ]]; do
	echo -n "Please enter MongoDB port (ENTER for default 27017): " 
	read INPUT
		if [ -z "$INPUT" ]
			then
				MONGO_PORT=27017
		elif [[ $INPUT -lt 1024 ]] || [[ $INPUT -gt 49151 ]]
		then 
			echo "Port value must be between 1024 and 49151"
		else				
			MONGO_PORT=$INPUT				
		fi
		sed  -i -e "s/port = .*/port = $MONGO_PORT/" $MONGO_CONF
		break
done	

while ! [[ $NODE_PORT =~ ^(102[5-9]|10[3-9][0-9]|1[1-9][0-9]{2}|[2-9][0-9]{3}|[1-3][0-9]{4}|4[0-8][0-9]{3}|490[0-9]{2}|491[0-4][0-9]|4915[0-2])$ ]]; do
	echo -n "Please enter NodeJS service port (ENTER for default 1337): " 
	read INPUT
	if [ -z "$INPUT" ]
		then
			NODE_PORT=1337
	elif [[ $INPUT -lt 1024 ]] || [[ $INPUT -gt 49151 ]]; 
	then 
		echo "Port value must be between 1024 and 49151"
	else
		NODE_PORT=$INPUT								
	fi
	sed  -i -e "s/exports.app_port = .*/exports.app_port = $NODE_PORT/" $NODE_CONF
	sed  -i -e "s/exports.server_port = .*/exports.server_port = $MONGO_PORT/" $NODE_CONF
	break
done

while [[ -z "$DBNAME" ]]; do
	echo -n "Please enter the name of MongoDB database used by NodeJS service: "
	read DBNAME
	if [[ -n "$DBNAME" ]]
		then
		sed  -i -e "s/exports.default_db = .*/exports.default_db = \"$DBNAME\"/" $NODE_CONF
		break
	fi
done

echo -en "\nAdding JOTC service to startup ..."
chkconfig --add jotc
chkconfig jotc on
if [ $? -eq 0 ]; then			
	echo " SUCCESS"
fi
echo -en "\nOpening port $NODE_PORT ..."
# dodajem pravilo u /etc/sysconfig/iptables jednu liniju iznad linije 'COMMIT'. Mora ručno, nije hteo sa iptable -I INPUT ...
sed -i "/COMMIT/ { N; s/COMMIT\n/-A INPUT -p tcp -m tcp --dport $NODE_PORT -j ACCEPT\n&/ }" $FIRE_CONF
if [ $? -eq 0 ]; then			
	echo " SUCCESS"
fi

iptables-save > $FIRE_CONF > /dev/null 2>&1
service iptables restart > /dev/null 2>&1
echo -e "\nBe sure to change the default root password which is som3pa\$\$ \n\nJOTC service will be available on: ${IP%?}:$NODE_PORT\n\nPress any key to reboot. "
read -n 1
# Nazad na prvi virt terminal za reboot. Kraaaaaj
chvt 1
exec < /dev/tty1 > /dev/tty1 2> /dev/tty1

%end

Ne zamerite na nogama napisanom BASHu, početnik sam u svemu ovome.
 
Nazad
Vrh Dno