Skip to content

logging pre script to make debug easy

penguhyang edited this page Mar 9, 2016 · 1 revision

The mini-design of logging pre-script to make debug easy

Background

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...

Planning Outputs

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.

Code Logic and Process

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; \

News

History

  • Oct 22, 2010: xCAT 2.5 released.
  • Apr 30, 2010: xCAT 2.4 is released.
  • Oct 31, 2009: xCAT 2.3 released. xCAT's 10 year anniversary!
  • Apr 16, 2009: xCAT 2.2 released.
  • Oct 31, 2008: xCAT 2.1 released.
  • Sep 12, 2008: Support for xCAT 2 can now be purchased!
  • June 9, 2008: xCAT breaths life into (at the time) the fastest supercomputer on the planet
  • May 30, 2008: xCAT 2.0 for Linux officially released!
  • Oct 31, 2007: IBM open sources xCAT 2.0 to allow collaboration among all of the xCAT users.
  • Oct 31, 1999: xCAT 1.0 is born!
    xCAT started out as a project in IBM developed by Egan Ford. It was quickly adopted by customers and IBM manufacturing sites to rapidly deploy clusters.
Clone this wiki locally