/var/lib/cobbler/snippets/keep_files is in maas-provision-common 2.2.2-0ubuntu4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | ##  This snippet preserves files during re-build.
##  It supersedes other similar snippets - keep_*_keys.
##  Put it in %pre section of the kickstart template file
##  It uses preserve_files field which should contain a list of items to preserve
##  This field for now could contain any of the following:
##  'ssh', 'cfengine', 'rhn' in any order
##  'rhn' part of this snippet should NOT be used with systems subscribed
##  to Red Hat Satellite Server or Spacewalk as these
##  have a concept of "reactivation keys" to keep the systems
##  appearing to be the same.  Also do not use if changing
##  base channels, i.e. RHEL4 -> RHEL5 upgrades.
##
#if $getVar('$preserve_files','') != ''
  #set $preserve_files = $getVar('$preserve_files','')	
  preserve_files = $preserve_files  
  
#raw
# Nifty trick to restore keys without using a nochroot %post
echo "Saving keys..." > /dev/ttyS0
insmod /lib/jbd.o
insmod /lib/ext3.o
function findkeys
{
 for disk in $DISKS; do
    name=$(basename $disk)
    tmpdir=$(mktemp -d $name.XXXXXX)
    mkdir -p /tmp/$tmpdir
    mount $disk /tmp/$tmpdir
    if [ $? -ne 0 ]; then # Skip to the next partition if the mount fails
      rm -rf /tmp/$tmpdir                                                
      continue                                                           
    fi                                                                   
    # Copy current host keys out to be reused
    if [ -d /tmp/$tmpdir$SEARCHDIR ]; then
        cp -a /tmp/$tmpdir$SEARCHDIR/${PATTERN}* /tmp/$TEMPDIR
        keys_found="yes"
	umount /tmp/$tmpdir
	rm -r /tmp/$tmpdir
	break
    elif [ -n "$SHORTDIR" ] && [ -d /tmp/$tmpdir$SHORTDIR ]; then
	cp -a /tmp/$tmpdir$SHORTDIR/${PATTERN}* /tmp/$TEMPDIR
	keys_found="yes"
        umount /tmp/$tmpdir
	rm -r /tmp/$tmpdir
        break
    fi
    umount /tmp/$tmpdir
    rm -r /tmp/$tmpdir
 done
}
function search_for_keys
{
 SEARCHDIR=$1
 TEMPDIR=$2
 PATTERN=$3
 keys_found=no
 # /var could be a separate partition
 SHORTDIR=${SEARCHDIR#/var}
 if [ $SHORTDIR = $SEARCHDIR ]; then
	SHORTDIR=''
 fi	
 mkdir -p /tmp/$TEMPDIR
 DISKS=$(awk '{if ($NF ~ "^[a-zA-Z].*[0-9]$" && $NF !~ "c[0-9]+d[0-9]+$" && $NF !~ "^loop.*") print "/dev/"$NF}'  /proc/partitions)
 # In the awk line above we want to make list of partitions, but not devices/controllers
 # cciss raid controllers have partitions like /dev/cciss/cNdMpL, where N,M,L - some digits, we want to make sure 'pL' is there
 # No need to scan loopback niether.
 # Try to find the keys on ordinary partitions
 findkeys
 # Try software RAID
 if [ "$keys_found" = "no" ]; then
  if mdadm -As; then
      DISKS=$(awk '/md/{print "/dev/"$1}' /proc/mdstat)
      findkeys
  fi
 fi
 # Try LVM if that didn't work
 if [ "$keys_found" = "no" ]; then
    lvm lvmdiskscan
    vgs=$(lvm vgs | tail -n +2 | awk '{ print $1 }')
    for vg in $vgs; do
        # Activate any VG we found
        lvm vgchange -ay $vg
    done
    
    DISKS=$(lvm lvs | tail -n +2 | awk '{ print "/dev/" $2 "/" $1 }')
    findkeys    
    # And clean up..
    for vg in $vgs; do
        lvm vgchange -an $vg
    done
 fi
}
function restore_keys
{
 SEARCHDIR=$1
 TEMPDIR=$2
 PATTERN=$3
 # Loop until the corresponding rpm is installed if the keys are saved
 if [ "$keys_found" = "yes" ] && [ -f /tmp/$TEMPDIR/${PATTERN}* ]; then
    while : ; do
        sleep 10
        if [ -d /mnt/sysimage$SEARCHDIR ] ; then
            cp -af /tmp/$TEMPDIR/${PATTERN}* /mnt/sysimage$SEARCHDIR
            logger "$TEMPDIR keys copied to newly installed system"
            break
        fi
    done &
 fi
}
for key in $preserve_files
do
 if [ $key = 'ssh' ]; then
   search_for_keys '/etc/ssh' 'ssh' 'ssh_host_'
 elif [ $key = 'cfengine' ]; then
   search_for_keys '/var/cfengine/ppkeys' 'cfengine' 'localhost'
 elif [ $key = 'rhn' ]; then
   search_for_keys '/etc/sysconfig/rhn', 'rhn', '*'
 else
   echo "No keys to save!" > /dev/ttyS0
 fi
done
# now restore keys if found
for key in $preserve_files
do
 if [ $key = 'ssh' ]; then
   restore_keys '/etc/ssh' 'ssh' 'ssh_host_'
 elif [ $key = 'cfengine' ]; then
   restore_keys '/var/cfengine/ppkeys' 'cfengine' 'localhost'
 elif [ $key = 'rhn' ]; then
   restore_keys '/etc/sysconfig/rhn', 'rhn', '*'
 else
   echo "Nothing to restore!" > /dev/ttyS0
 fi
done
#end raw
#end if
 |