compass-adapters/cobbler/snippets/preseed_pre_partition_disks
xiaodongwang ae44332c69 update snippet to support preseed
Change-Id: I8442758ffaf3a55ec4773bf820bc4cdefb2e6452
2014-05-19 10:47:36 -07:00

137 lines
4.2 KiB
Plaintext

#set hostname=$getVar('hostname',None)
#set partition = $getVar('partition', None)
#if $hostname == None
#set $vgname = "VolGroup00"
#else
#set $vgname = $hostname.split('.')[0]
#end if
#if $getVar("system_name","") != ""
first_found_disk=""; \
disks_str=""; \
found_disks_str=""; \
for disk in \$(list-devices disk); do \
if [[ x"\$disk" == x"" ]]; then \
continue; \
fi; \
#if $getVar('partitions_only','') != ""
let found_disk=0; \
#for $partition_only in $partitions_only.split(',')
#if not $partition_only
#continue
#end if
if expr match "\$disk" "$partition_only"; then \
let found_disk=1; \
fi; \
#end for
#else
let found_disk=1; \
#end if
if [ \$found_disk -gt 0 ]; then \
if [ -z \$found_disks_str ]; then \
found_disks_str="\$disk"; \
first_found_disk="\$disk"; \
else \
found_disks_str="\${found_disks_str} \$disk"; \
fi; \
fi; \
if [ -z \$disks_str ]; then \
disks_str="\$disk"; \
else \
disks_str="\${disks_str} \$disk"; \
fi; \
done; \
logger "partition disks: \${found_disks_str}"; \
#if $getVar('keep_old_partitions', '0') != "0"
remove_disks_str=\${found_disks_str}; \
#else
remove_disks_str=\${disks_str}; \
#end if
logger "remove disks \${remove_disks_str}"; \
## vgremove -f $vgname; \
## logger "vgremove $vgname"; \
disk_partitions=\$(pvs --noheadings --rows | head -n1); \
for disk_partition in \${disk_partitions}; do \
if [[ x"\$disk_partition" == x"" ]]; then \
continue; \
fi; \
vg=\$(pvs --noheadings --separator : \${disk_partition} | cut -d: -f2); \
remove_vg=""; \
for remove_disk in \${remove_disks_str}; do \
if [[ x"\$remove_disk" == x"" ]]; then \
continue; \
fi; \
if expr match "\${disk_partition}" "\${remove_disk}.*"; then \
remove_vg="\$vg"; \
logger "partition \${disk_partition} matches \${remove_disk}.*"; \
logger "set remove_vg to \$vg"; \
else \
logger "partition \${disk_partition} does not match \${remove_disk}.*"; \
fi; \
done; \
if [[ x"\$remove_vg" != x"" ]]; then \
vgremove -f \$remove_vg; \
logger "vgremove \${remove_vg} for \${disk_partition}"; \
else \
logger "\${disk_partition} is not in vgremove list"; \
fi; \
done; \
for remove_disk in \${remove_disks_str}; do \
if [[ x"\$remove_disk" == x"" ]]; then \
continue; \
fi; \
pvremove -ff -y \${remove_disk}*; \
logger "pvremove \${remove_disk}*"; \
done; \
remove_disks=\$(echo \${remove_disks_str} | sed -e 's/ /,/g'); \
echo "d-i partman-auto/select_disks multiselect \${remove_disks}" >> /tmp/part-include; \
echo "d-i partman-auto/disk string \${found_disks_str}" >> /tmp/part-include; \
recipe="boot-root :: \
100 100 100 ext3 \
\\$primary{ } \\$bootable{ } method{ format } \
format{ } use_filesystem{ } filesystem{ ext3 } \
mountpoint{ /boot } device{ \$first_found_disk } \
. \
200% 200% 200% linux-swap \
\\$primary{ } method{ swap } format{ } \
device{ \$first_found_disk } \
. \
#if $partition != None
#set vol_sizes = [part.strip() for part in $partition.split(';') if part.strip()]
#for vol_and_size in vol_sizes
#set vol, vol_size = $vol_and_size.split(' ', 1)
#set vol = $vol.strip()
#set vol_size = $vol_size.strip()
#if $vol.startswith('/')
#set volname = $vol[1:]
${vol_size} ${vol_size} ${vol_size} ext3 \
\\$lvmok{ } method{ format } format{ } \
use_filesystem{ } filesystem{ ext3 } \
in_vg{ $vgname } lv_name{ ${volname}vol } \
mountpoint{ $vol } \
. \
#else
#continue
#end if
#end for
#end if
1 2 100% ext3 \
\\$lvmok{ } method{ format } \
format{ } use_filesystem{ } filesystem{ ext3 } \
in_vg{ $vgname } lv_name{ rootvol } \
mountpoint{ / } \
. \
"; \
pv_offset=1; \
for found_disk in \${found_disks_str}; do \
recipe="\$recipe \
1 1 -1 ext3 \
\\$defaultignore{ } \\$primary{ } device{ \${found_disk} } \
method{ lvm } vg_name{ $vgname } \
. \
"; \
let pv_offset=\${pv_offset}+1; \
done; \
echo "d-i partman-auto/expert_recipe string \$recipe" >> /tmp/part-include; \
debconf-set-selections /tmp/part-include; \
#end if