logging pre script to make debug easy - xcat2/xcat-core GitHub Wiki
Currently, the Pre-Installation script for redhat
sles
and early_command Installation script for ubuntu
can't be logging to xcat.log file. Also as a new script getinstdisk
was added to determine the install disk. It's necessary to logging the detail information to make debug easy.
This mini-design support the redhat6.7 redhat7
sles11 sles12
ubuntu14 ubuntu15
and the etc...
For redhat
With xcatdebugmode off, only the running result of script will be logged.
With xcatdebugmode on, the running procedure and running result both will be logged.
For sles
The running procedure and running result both will be logged whether xcatdebugmode on or off.
For ubuntu
With xcatdebugmode off, only the running result of script will be logged.
With xcatdebugmode on, the running procedure and running result both will be logged.
For redhat
When using a %pre script, we can simply log the output to a file.
%pre
{
echo "Running Kickstart Pre-Installation script..."
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/pre.rh#
} >>/tmp/pre-install.log 2>&1
After Anaconda chrooted to the newly-built filesystem, we can use %include to include the pre-install.log
.
%post
mkdir -p /var/log/xcat/
{
cat >> /var/log/xcat/xcat.log << "EOF"
%include /tmp/pre-install.log
EOF
echo "Running Kickstart Post-Installation script..."
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/post.rh#
} >>/var/log/xcat/xcat.log 2>&1
For sles
When using Pre-Install Script, we can simply log the output to a file.
<pre-scripts config:type="list">
<script>
<filename>foo.sh</filename>
<interpreter>shell</interpreter>
<source>
<![CDATA[
{
...
} >>/tmp/pre-install.log 2>&1
]]>
</source>
</script>
</pre-scripts>
When execute chroot scripts before the installation chroots into the installed system, we can append the pre-install.log
to xcat.log
.
<chroot-scripts config:type="list">
<script>
<filename>boot.sh</filename>
<interpreter>shell</interpreter>
<source>
<![CDATA[
mkdir -p /mnt/var/log/xcat/
{
cat /tmp/pre-install.log >> /mnt/var/log/xcat/xcat.log
echo "Running AutoYaST Chroot-Installation script..."
...
} >>/mnt/var/log/xcat/xcat.log 2>&1
]]>
</source>
</script>
</chroot-scripts>
For ubuntu
When using d-i preseed/early_command string ...
command, we can simply log the output to a file.
d-i preseed/early_command string wget http://`cat /tmp/xcatserver`/install/autoinst/#HOSTNAME#.pre; \
chmod u+x #HOSTNAME#.pre; \
{ \
echo "Running preseeding early_command Installation script..."; \
./#HOSTNAME#.pre; \
} >>/tmp/pre-install.log 2>&1; \
And log the getinstdisk script output.
d-i partman/early_command string \
{ \
#INCLUDE_GET_FIRST_DISK_SCRIPT# \
} >>/tmp/pre-install.log 2>&1; \
debconf-set partman-auto/disk "$(cat /tmp/install_disk)"
When execute d-i preseed/late_command string ...
command before the install finishes, there is still a usable /target directory. We can append the pre-install.log
to xcat.log
.
d-i preseed/late_command string wget http://`cat /tmp/xcatserver`/install/autoinst/#HOSTNAME#.post; \
chmod u+x #HOSTNAME#.post; \
cp ./#HOSTNAME#.post /target/root/post.script; \
mount -o bind /proc /target/proc -t proc; \
mount -o bind /dev /target/dev; \
mount -o bind /dev/pts /target/dev/pts -t devpts; \
mount -o bind /sys /target/sys; \
mkdir -p /target/var/log/xcat/; \
{ \
cat /tmp/pre-install.log >> /target/var/log/xcat/xcat.log; \
echo "Running preseeding late_command Installation script..."; \
chroot /target /root/post.script; \
} >>/target/var/log/xcat/xcat.log 2>&1; \