diff --git a/cobbler/kickstarts/default.xml b/cobbler/kickstarts/default.xml
index ce15e59..0c93b8e 100644
--- a/cobbler/kickstarts/default.xml
+++ b/cobbler/kickstarts/default.xml
@@ -79,6 +79,7 @@
rsyslog
iproute2
parted
+ lsb-release
#if $getVar('tool', '') != ''
#set $suse_software = "software_%s.xml" % $tool
$SNIPPET($suse_software)
diff --git a/cobbler/snippets/kickstart_chef_run.sh b/cobbler/snippets/kickstart_chef_run.sh
index 9a99b81..9988e23 100644
--- a/cobbler/snippets/kickstart_chef_run.sh
+++ b/cobbler/snippets/kickstart_chef_run.sh
@@ -74,7 +74,9 @@ local3.info @$compass_server:514
local3.info @server:514
#end if
EOL
- rm -rf /var/lib/rsyslog/chef_\\$node_log
+ if [ -f "/var/lib/rsyslog/chef_\\${node}_log" ]; then
+ rm -rf /var/lib/rsyslog/chef_\\$node_log
+ fi
service rsyslog restart
fi
if [ -f "/etc/chef/\\$node.done" ]; then
diff --git a/cobbler/snippets/kickstart_pre_partition_disks b/cobbler/snippets/kickstart_pre_partition_disks
index 8426f53..07108ac 100644
--- a/cobbler/snippets/kickstart_pre_partition_disks
+++ b/cobbler/snippets/kickstart_pre_partition_disks
@@ -15,40 +15,51 @@
declare -A disk_mapping
declare -A disk_path_mapping
-set \$(ls -s -l /dev/disk/by-path | awk '{print \$10, \$12}')
-let disk_mapping_nums=\$#/2
-let disk_mapping_offset=0
-echo "disk_mapping_nums: \$disk_mapping_nums" > /tmp/log
-echo "disk_mapping: \$*" >> /tmp/log
-while [ \$disk_mapping_offset -lt \$disk_mapping_nums ]; do
- let found_disk_type=0
+declare -A ignore_disk_mapping
+declare -A ignore_disk_path_mapping
+if [ -e /dev/disk/by-path ]; then
+ set \$(ls -s -l /dev/disk/by-path | awk '{print \$10, \$12}')
+ let disk_mapping_nums=\$#/2
+ let disk_mapping_offset=0
+ echo "disk_mapping_nums: \$disk_mapping_nums" > /tmp/log
+ echo "disk_mapping: \$*" >> /tmp/log
+ while [ \$disk_mapping_offset -lt \$disk_mapping_nums ]; do
+ let found_disk_type=0
#if $getVar('disk_type_only','') != ""
- if expr match "\$1" ".*-${disk_type_only}-.*"; then
- let found_disk_type=1
- fi
+ if expr match "\$1" ".*-${disk_type_only}-.*"; then
+ let found_disk_type=1
+ fi
#else
- let found_disk_type=1
+ let found_disk_type=1
#end if
- path_name=\$(basename \$1)
- disk_name=\$(basename \$2)
- let disk_mapping_offset=\$disk_mapping_offset+1
- shift 2
+ path_name=\$(basename \$1)
+ disk_name=\$(basename \$2)
+ let disk_mapping_offset=\$disk_mapping_offset+1
+ shift 2
- if [ \$found_disk_type -gt 0 ]; then
- disk_mapping[\${disk_name}]="/dev/disk/by-path/\${path_name}"
- disk_mapping[\${path_name}]="/dev/disk/by-path/\${path_name}"
- disk_path_mapping[\${disk_name}]="/dev/\${disk_name}"
- disk_path_mapping[\${path_name}]="/dev/\${disk_name}"
- fi
-done
+ if [ \$found_disk_type -gt 0 ]; then
+ disk_mapping[\${disk_name}]="/dev/disk/by-path/\${path_name}"
+ disk_mapping[\${path_name}]="/dev/disk/by-path/\${path_name}"
+ disk_path_mapping[\${disk_name}]="/dev/\${disk_name}"
+ disk_path_mapping[\${path_name}]="/dev/\${disk_name}"
+ else
+ ignore_disk_mapping[\${disk_name}]="/dev/disk/by-path/\${path_name}"
+ ignore_disk_mapping[\${path_name}]="/dev/disk/by-path/\${path_name}"
+ ignore_disk_path_mapping[\${disk_name}]="/dev/\${disk_name}"
+ ignore_disk_path_mapping[\${path_name}]="/dev/\${disk_name}"
+ fi
+ done
-for key in \${!disk_mapping[@]}; do
- echo "disk mapping \$key => \${disk_mapping[\$key]}" >> /tmp/log
-done
+ for key in \${!disk_mapping[@]}; do
+ echo "disk mapping \$key => \${disk_mapping[\$key]}" >> /tmp/log
+ done
-for key in \${!disk_path_mapping[@]}; do
- echo "disk path mapping \$key => \${disk_path_mapping[\$key]}" >> /tmp/log
-done
+ for key in \${!disk_path_mapping[@]}; do
+ echo "disk path mapping \$key => \${disk_path_mapping[\$key]}" >> /tmp/log
+ done
+else
+ echo "/dev/disk/by-path does not exist" >> /tmp/log
+fi
declare -A partition_disks
declare -A disks
@@ -58,15 +69,27 @@ let disk_offset=0
let found_disk_offset=0
while [ \$disk_offset -lt \$disk_nums ]; do
disk=\$1
- disk_name=\$(basename \$1)
+ disk_name=\$(basename \$disk)
+ let offset=\${disk_offset}
+ let disk_offset=\${disk_offset}+1
shift 2
if [[ x"\${disk_mapping[\${disk_name}]}" == x"" ]]; then
- echo "ignore disk \${disk_name} since it is not in disk_mapping" >> /tmp/log
- let disk_offset=\$disk_offset+1
- continue
+ if [[ x"\${ignore_disk_mapping[\${disk_name}]}" != x"" ]]; then
+ echo "ignore disk \${disk_name} since it is not in disk_mapping" >> /tmp/log
+ continue
+ else
+ echo "did not found disk path for \$disk but it is not ignored" >> /tmp/log
+ disk_mapping[\${disk_name}]="/dev/\${disk_name}"
+ disk_path_mapping[\${disk_name}]="/dev/\${disk_name}"
+ fi
fi
let found_disk=0
+#if $getVar('partition_by_path', '0') != "0"
+ disk=\${disk_mapping[\${disk_name}]}
+#end if
+ disks[\$offset]=\$disk
+
#if $getVar('partitions_only', '') != ""
#for $partition_only in $partitions_only.split(',')
#if not $partition_only
@@ -82,18 +105,11 @@ while [ \$disk_offset -lt \$disk_nums ]; do
let found_disk=1
#end if
-#if $getVar('partition_by_path', '0') != "0"
- disk=\${disk_mapping[\${disk_name}]}
-#end if
-
if [ \${found_disk} -gt 0 ]; then
echo "add disk \${disk_name} in partitioning list" >> /tmp/log
- partition_disks[\${found_disk_offset}]=\$disk
- let found_disk_offset=\${found_disk_offset}+1
+ partition_disks[\${found_disk_offset}]=\$disk
+ let found_disk_offset=\${found_disk_offset}+1
fi
-
- disks[\${disk_offset}]=\$disk
- let disk_offset=\${disk_offset}+1
done
echo "partition disks \${partition_disks[@]}" >> /tmp/log
echo "disks \${disks[@]}" >> /tmp/log
@@ -114,13 +130,15 @@ echo "sorted disks \${sorted_disks[@]}" >> /tmp/log
#end if
set \${sorted_disks[@]}
shift $disk_start_offset
+unset sorted_disks
sorted_disks=(\$@)
echo "sorted disks begin from the $start_from_disk: \${sorted_disks[@]}" >> /tmp/log
#end if
#if $getVar('disk_num', '') != ""
set \${sorted_disks[@]}
-sorted_disks=\$(printf '%s\n' \$@ | head -n${disk_num})
+unset sorted_disks
+sorted_disks=(\$(printf '%s\n' \$@ | head -n${disk_num}))
echo "sorted disks for $disk_num disks: \${sorted_disks[@]}" >> /tmp/log
#end if
@@ -146,17 +164,20 @@ done
echo "clearpart --all --initlabel" > /tmp/part-include
declare -A remove_disks
+let remove_disk_offset=0
#if $getVar('keep_old_partitions', '0') != "0"
for disk in \${sorted_disks[@]}; do
dd if=/dev/zero of=\${disk} bs=512 count=1
- remove_disks+=(\$disk)
+ remove_disks[\${remove_disk_offset}]=\$disk
+ let remove_disk_offset=\${remove_disk_offset}+1
done
echo "only partition \$sorted_disks_str" >> /tmp/log
echo "ignoredisk --only-use=\$sorted_disks_str" >> /tmp/part-include
#else
for disk in \${disks[@]}; do
dd if=/dev/zero of=\${disk} bs=512 count=1
- remove_disks+=(\$disk)
+ remove_disks[\${remove_disk_offset}]=\$disk
+ let remove_disk_offset=\${remove_disk_offset}+1
done
#end if
echo "remove disks \${remove_disks[@]}" >> /tmp/log
@@ -401,7 +422,7 @@ for key in \${!partitions_name[@]}; do
done
for key in \${!partitions_percentage[@]}; do
- echo "partition percentage \$key => \${partitions_percentage[\$key]}" >> /tmp/log
+echo "partition percentage \$key => \${partitions_percentage[\$key]}" >> /tmp/log
done
for key in \${!partitions_size[@]}; do
@@ -444,8 +465,9 @@ vggroup=''
let disk_nums=\${#sorted_disks[@]}
let disk_offset=0
while [ \${disk_offset} -lt \${disk_nums} ]; do
- let pv_id=\${disk_offset}+1
disk=\${sorted_disks[\${disk_offset}]}
+ let disk_offset=\$disk_offset+1;
+ let pv_id=\${disk_offset}
partname="pv.0\${pv_id}"
if [ ! -z "\${max_disks_size[\${disk}]}" ]; then
max_disk_size=\${max_disks_size[\${disk}]}
@@ -471,7 +493,6 @@ while [ \${disk_offset} -lt \${disk_nums} ]; do
echo "part \${reserve_partname} --size=\${reserve_disk_size} --ondisk=\${disk}" >> /tmp/part-include
reserve_vggroup="\${reserve_vggroup} \${reserve_partname}"
fi
- let disk_offset=\$disk_offset+1;
done
if [ ! -z "\$vggroup" ]; then
@@ -483,11 +504,11 @@ fi
declare -A sorted_partitions
sorted_partitions[0]=\${default_partition}
-partition_offset=1
+let sorted_partition_offset=1
for key in \${!partitions_name[@]}; do
if [[ "\$key" != "\${default_partition}" ]]; then
- sorted_partitions[\${partition_offset}]=\$key
- let partition_offset=\${partition_offset}+1
+ sorted_partitions[\${sorted_partition_offset}]=\$key
+ let sorted_partition_offset=\${sorted_partition_offset}+1
fi
done
diff --git a/cobbler/snippets/preseed_chef_run.sh b/cobbler/snippets/preseed_chef_run.sh
index 6f32410..c82e7d5 100644
--- a/cobbler/snippets/preseed_chef_run.sh
+++ b/cobbler/snippets/preseed_chef_run.sh
@@ -67,13 +67,15 @@ EOL
\\\\$InputFilePollInterval 1
local3.info @$server:514
EOL
- rm -rf /var/lib/rsyslog/chef_\\$node_log
+ if [ -f "/var/spool/rsyslog/chef_\\${node}_log" ]; then
+ rm -rf /var/spool/rsyslog/chef_\\${node}_log
+ fi
service rsyslog restart
fi
- if [ -f "/etc/chef/\\$node.done" ]; then
- USER=root HOME=/root chef-client --node-name \\$node -j /etc/chef/\\$node.json --client_key /etc/chef/\\$node.pem >> /var/log/chef.log 2>&1
+ if [ -f "/etc/chef/\\${node}.done" ]; then
+ USER=root HOME=/root chef-client --node-name \\$node -j /etc/chef/\\${node}.json --client_key /etc/chef/\\${node}.pem >> /var/log/chef.log 2>&1
else
- USER=root HOME=/root chef-client --node-name \\$node -j /etc/chef/\\$node.json --client_key /etc/chef/\\$node.pem -L /var/log/chef/\\$node/chef-client.log >> /var/log/chef.log 2>&1
+ USER=root HOME=/root chef-client --node-name \\$node -j /etc/chef/\\${node}.json --client_key /etc/chef/\\${node}.pem -L /var/log/chef/\\$node/chef-client.log >> /var/log/chef.log 2>&1
fi
if [ "\\$?" != "0" ]; then
echo "chef-client --node-name \\$node run failed" >> /var/log/chef.log 2>&1
diff --git a/cobbler/snippets/preseed_post_apt_repo_config b/cobbler/snippets/preseed_post_apt_repo_config
index 69900c8..187484f 100644
--- a/cobbler/snippets/preseed_post_apt_repo_config
+++ b/cobbler/snippets/preseed_post_apt_repo_config
@@ -9,20 +9,14 @@ APT::Get::force-yes "true";
#if $getVar('proxy', '') != ''
Acquire::http::Proxy "$proxy";
#end if
-#set $repo_data = $getVar("repo_data",[])
-#for $repo in $repo_data
- #for $dist in $repo.apt_dists
- #set $comps = " ".join($repo.apt_components)
- #if $repo.mirror_locally
-Acquire::http::Proxy::$http_server "DIRECT";
- #end if
- #end for
-#end for
+Acquire::http::Proxy::$http_server DIRECT;
#if $getVar("local_repo","") != ""
#import urlparse
#set $local_repo_url = $urlparse.urlparse($local_repo)
#set $local_repo_server = $local_repo_url.hostname
+ #if $http_server != $local_repo_server
Acquire::http::Proxy::${local_repo_server} DIRECT;
+ #end if
#end if
EOF
diff --git a/cobbler/snippets/preseed_post_partition_disks b/cobbler/snippets/preseed_post_partition_disks
index c2a46ae..477551b 100644
--- a/cobbler/snippets/preseed_post_partition_disks
+++ b/cobbler/snippets/preseed_post_partition_disks
@@ -1,34 +1,39 @@
-set \$(ls -l /dev/disk/by-label | tr -s '\t' ' ' | cut -d' ' -f9,11)
-label_mapping_nums=\$((\$#/2))
-label_mapping_offset=0
-echo "label_mapping_nums: \$label_mapping_nums" >> /tmp/preseed.log
-remove_partitions=""
-while [ \$label_mapping_offset -lt \$label_mapping_nums ]; do
- partition_label=\$1
- partition_name=\$(basename \$2)
- shift 2
- label_mapping_offset=\$((\${label_mapping_offset}+1))
- if [ -z "\${partition_label}" -o -z "\${partition_name}" ]; then
- continue
- fi
- partition=/dev/\${partition_name}
- if expr match "\${partition_label}" "reserved_.*"; then
- remove_partitions="\${remove_partitions} \${partition}"
- echo "add \${partition} into remove list" >> /tmp/preseed.log
+partitions=\$(pvs --noheadings --separator :| cut -d: -f1,2)
+vg_remove=0
+remove_partitions=''
+echo "partitions \$partitions" >> /tmp/post_partition.log
+
+for partition in \$partitions; do
+ set \$(echo \$partition | tr ':' ' ')
+ partition=\$1
+ vg=\$2
+ if [ "\$vg" = "reserved" ]; then
+ echo "prepare remove partition \$partition" >> /tmp/post_partition.log
+ remove_partitions="\${remove_partitions} \$partition"
+ vg_remove=1
+ else
+ echo "ignore \$vg since it is not reserved" >> /tmp/post_partition.log
fi
done
-echo "remove partitions \${remove_partitions}" >> /tmp/preseed.log
-for partition in \${remove_partitions}; do
- if [ -z "\$partition" ]; then
- continue
- fi
- set \$(echo \${partition} | sed -e 's/^\(.*\)\([0-9]\+\)\$/\1 \2/g')
+if [ "\${vg_remove}" != "0" ]; then
+ vgremove -f reserved
+fi
+
+for remove_partition in \${remove_partitions}; do
+ echo "remove pv \${remove_partition}" >> /tmp/post_partition.log
+ pvremove -ff -y \${remove_partition}
+ set \$(echo \${remove_partition} | sed -e 's/^\(.*\)\([0-9]\+\)\$/\1 \2/g')
partition_disk=\$1
partition_number=\$2
- echo "remove disk \${partition_disk} partition \${partition_number}" >> /tmp/preseed.log
- if [ -z "\${partition_disk}" -o -z "\${partition_number}" ]; then
- continue
+ if [ ! -z "\${partition_disk}" ]; then
+ if [ ! -z "\${partition_number}" ]; then
+ echo "remove partition \${remove_partition} on \${partition_disk} number \${partition_number}" >> /tmp/post_partition.log
+ parted \${partition_disk} --script -- rm \${partition_number}
+ else
+ echo "no partition number found for \${remove_partition}" >> /tmp/post_partition.log
+ fi
+ else
+ echo "no partition disk found for \${remove_partition}" >> /tmp/post_partition.log
fi
- parted \${partition_disk} rm \${partition_number}
done
diff --git a/cobbler/snippets/preseed_pre_install_network_config b/cobbler/snippets/preseed_pre_install_network_config
index ea09990..2ea7479 100644
--- a/cobbler/snippets/preseed_pre_install_network_config
+++ b/cobbler/snippets/preseed_pre_install_network_config
@@ -7,10 +7,10 @@ echo "generate pre network config" > /tmp/network_log
#raw
# generic functions to be used later for discovering NICs
mac_exists() {
- if [ -f /bin/ip ]; then
+ if type ip; then
ip -o link | grep -i "$1" 2>/dev/null >/dev/null
return $?
- elif [ -f /bin/esxcfg-nics ]; then
+ elif type esxcfg-nics; then
esxcfg-nics -l | grep -i "$1" 2>/dev/null >/dev/null
return $?
else
@@ -19,9 +19,9 @@ mac_exists() {
fi
}
get_ifname() {
- if [ -f /bin/ip ]; then
+ if type ip; then
IFNAME=$(ip -o link | grep -i "$1" | sed -e 's/^[0-9]*: //' -e 's/:.*//')
- elif [ -f /bin/esxcfg-nics ]; then
+ elif type esxcfg-nics; then
IFNAME=$(esxcfg-nics -l | grep -i "$1" | cut -d " " -f 1)
else
IFNAME=$(ifconfig -a | grep -i "$1" | cut -d " " -f 1)
diff --git a/cobbler/snippets/preseed_pre_partition_disks b/cobbler/snippets/preseed_pre_partition_disks
index d2c4926..79fcbc2 100644
--- a/cobbler/snippets/preseed_pre_partition_disks
+++ b/cobbler/snippets/preseed_pre_partition_disks
@@ -13,55 +13,65 @@
#set $vgname = $hostname.split('.')[0]
#end if
-set \$(ls -s -l /dev/disk/by-path | tr -s '\t' ' ' | cut -d' ' -f11,13)
-disk_mapping_nums=\$((\$#/2))
-disk_mapping_offset=0
-echo "disk_mapping_nums: \$disk_mapping_nums" >> /tmp/preseed.log
-echo "disk_mapping: \$*" >> /tmp/preseed.log
-disk_mapping=""
-disk_path_mapping=""
-while [ \$disk_mapping_offset -lt \$disk_mapping_nums ]; do
- found_disk_type=0
+echo "partman early script" >> /tmp/preseed.log
+if [ -e /dev/disk/by-path ]; then
+ set \$(ls -s -l /dev/disk/by-path | tr -s '\t' ' ' | cut -d' ' -f11,13)
+ disk_mapping_nums=\$((\$#/2))
+ disk_mapping_offset=0
+ echo "disk_mapping_nums: \$disk_mapping_nums" >> /tmp/preseed.log
+ echo "disk_mapping: \$@" >> /tmp/preseed.log
+ disk_mapping=""
+ disk_path_mapping=""
+ while [ \$disk_mapping_offset -lt \$disk_mapping_nums ]; do
+ found_disk_type=0
#if $getVar('disk_type_only','') != ""
- if expr match "\$1" ".*-${disk_type_only}-.*"; then
- found_disk_type=1
- fi
+ if expr match "\$1" ".*-${disk_type_only}-.*"; then
+ found_disk_type=1
+ fi
#else
- found_disk_type=1
+ found_disk_type=1
#end if
- path_name=\$(basename \$1)
- disk_path_name=\$(echo \${path_name} | tr '-' '_' | tr ':' '_' | tr '.' '_')
- disk_name=\$(basename \$2)
- disk_mapping_offset=\$((\${disk_mapping_offset}+1))
- shift 2
+ path_name=\$(basename \$1)
+ disk_path_name=\$(echo \${path_name} | tr '-' '_' | tr ':' '_' | tr '.' '_')
+ disk_name=\$(basename \$2)
+ disk_mapping_offset=\$((\${disk_mapping_offset}+1))
+ shift 2
- if [ \$found_disk_type -gt 0 ]; then
- if [ -z "\${disk_mapping}" ]; then
- disk_mapping="\${disk_name}"
+ if [ \$found_disk_type -gt 0 ]; then
+ if [ -z "\${disk_mapping}" ]; then
+ disk_mapping="\${disk_name}"
+ else
+ disk_mapping="\${disk_mapping} \${disk_name}"
+ fi
+ if [ -z "\${disk_path_mapping}" ]; then
+ disk_path_mapping="\${disk_path_name}"
+ else
+ disk_path_mapping="\${disk_path_mapping} \${disk_path_name}"
+ fi
+ eval "disk_\${disk_name}=/dev/disk/by-path/\${path_name}"
+ eval "disk_\${disk_path_name}=/dev/disk/by-path/\${path_name}"
+ eval "disk_path_\${disk_path_name}=/dev/\${disk_name}"
+ eval "disk_path_\${disk_name}=/dev/\${disk_name}"
else
- disk_mapping="\${disk_mapping} \${disk_name}"
+ eval "ignore_disk_\${disk_name}=/dev/disk/by-path/\${path_name}"
+ eval "ignore_disk_\${disk_path_name}=/dev/disk/by-path/\${path_name}"
+ eval "ignore_disk_path_\${disk_path_name}=/dev/\${disk_name}"
+ eval "ignore_disk_path_\${disk_name}=/dev/\${disk_name}"
fi
- if [ -z "\${disk_path_mapping}" ]; then
- disk_path_mapping="\${disk_path_name}"
- else
- disk_path_mapping="\${disk_path_mapping} \${disk_path_name}"
- fi
- eval "disk_\${disk_name}=/dev/disk/by-path/\${path_name}"
- eval "disk_\${disk_path_name}=/dev/disk/by-path/\${path_name}"
- eval "disk_path_\${disk_path_name}=/dev/\${disk_name}"
- eval "disk_path_\${disk_name}=/dev/\${disk_name}"
- fi
-done
+ done
-for key in \${disk_mapping}; do
- eval "disk_path=\\${disk_\$key}"
- echo "disk_mapping \$key => \${disk_path}" >> /tmp/preseed.log
-done
+ for key in \${disk_mapping}; do
+ eval "disk_path=\\${disk_\$key}"
+ echo "disk_mapping \$key => \${disk_path}" >> /tmp/preseed.log
+ done
-for key in \${disk_path_mapping}; do
- eval "disk=\\${disk_path_\$key}"
- echo "disk path mapping \$key => \${disk}" >> /tmp/preseed.log
-done
+ for key in \${disk_path_mapping}; do
+ eval "disk=\\${disk_path_\$key}"
+ echo "disk path mapping \$key => \${disk}" >> /tmp/preseed.log
+ done
+else
+ echo "/dev/disk/by-path does not exist" >> /tmp/preseed.log
+fi
partition_disks=""
disks=""
@@ -69,8 +79,15 @@ for disk in \$(list-devices disk); do
disk_name=\$(basename \$disk)
eval "disk_path=\\${disk_\${disk_name}}"
if [ -z "\${disk_path}" ]; then
- echo "ignore disk \${disk_name} since it is not in disk_mapping" >> /tmp/preseed.log
- continue
+ eval "ignore_disk_path=\\${ignore_disk_\${disk_name}}"
+ if [ ! -z "\${ignore_disk_path}" ]; then
+ echo "ignore disk \${disk_name} since it is not in disk_mapping" >> /tmp/preseed.log
+ continue
+ else
+ echo "did not found disk path for \$disk but it is not ignored" >> /tmp/preseed.log
+ eval "disk_\${disk_name}=/dev/\${disk_name}"
+ eval "disk_path_\${disk_name}=/dev/\${disk_name}"
+ fi
fi
found_disk=0
@@ -243,13 +260,20 @@ done
echo "remove disks \${remove_disks}" >> /tmp/preseed.log
partition_disks=""
+#if $getVar('keep_old_partitions', '0') != "0"
for disk in \${sorted_disks}; do
+#else
+for disk in \${disks}; do
+#end if
if [ -z "\${partition_disks}" ]; then
partition_disks="\${disk}"
else
partition_disks="\${partition_disks} \${disk}"
fi
done
+
+partition_disks_str=\$(echo \${partition_disks} | tr ' ' ',')
+echo "d-i partman-auto/select_disks multiselect \${partition_disks_str}" >> /tmp/part-include
echo "d-i partman-auto/disk string \${partition_disks}" >> /tmp/part-include
echo "disks \${partition_disks}" >> /tmp/preseed.log
@@ -590,6 +614,8 @@ for disk in \${sorted_disks}; do
#else
disk_name=\$(basename \$disk)
#end if
+ eval "used_disk_\${disk_name}=\$disk"
+ echo "add disk \$disk into disks" >> /tmp/preseed.log
eval "max_disk_size=\\${max_disk_size_\${disk_name}}"
if [ -z "\${max_disk_size}" ]; then
max_disk_size=\${default_max_disk_size}
@@ -612,15 +638,36 @@ method{ lvm } vg_name{ $vgname }"
echo "disk \${disk} reserve disk size \${reserve_disk_size}" >> /tmp/preseed.log
if [ \${reserve_disk_size} -gt 0 ]; then
reserve_disk_param="\${partition_fstype} \
-device{ \${disk} } \
-method{ format } format{ } label{ reserved_\${disk_name} } \
-use_filesystem{ } filesystem{ \${partition_fstype} }"
+\\$defaultignore{ } device{ \${disk} } \
+method{ lvm } vg_name{ reserved }"
recipe="\$recipe \${reserve_disk_size} \${reserve_disk_size} \${reserve_disk_size} \${reserve_disk_param} ."
echo "reserve partition param \${disk_name} => \${reserve_disk_param}" >> /tmp/preseed.log
fi
done
+
+#if $getVar('keep_old_partitions', '0') == "0"
+for disk in \$disks; do
+#if $getVar('partition_by_path', '0') != "0"
+ path_name=\$(basename \${disk})
+ disk_path_name=\$(echo \${path_name} | tr '-' '_' | tr ':' '_' | tr '.' '_')
+ eval "path_disk=\\${disk_path_\${disk_path_name}}"
+ disk_name=\$(basename \${path_disk})
+#else
+ disk_name=\$(basename \$disk)
+#end if
+ eval "used_disk=\\${used_disk_\${disk_name}}"
+ if [ -z "\${used_disk}" ]; then
+ reserve_disk_param="\${partition_fstype} \
+\\$defaultignore{ } device{ \${disk} } \
+method{ lvm } vg_name{ reserved }"
+ recipe="\$recipe 512 512+100% -1 \${reserve_disk_param} ."
+ echo "reserve partition param \${disk_name} => \${reserve_disk_param}" >> /tmp/preseed.log
+ fi
+done
+#end if
+
echo "d-i partman-auto/expert_recipe string \$recipe" >> /tmp/part-include
echo "d-i partman-auto/choose_recipe select boot-root" >> /tmp/part-include
-echo "d-i partman-lvm/vgcreate string $vgname" >> /tmp/part-include
-echo "d-i partman-auto-lvm/new_vg_name string $vgname" >> /tmp/part-include
+## echo "d-i partman-lvm/vgcreate string $vgname" >> /tmp/part-include
+## echo "d-i partman-auto-lvm/new_vg_name string $vgname" >> /tmp/part-include
diff --git a/cobbler/snippets/preseed_rsyslog.conf b/cobbler/snippets/preseed_rsyslog.conf
index 851150e..3a1011f 100644
--- a/cobbler/snippets/preseed_rsyslog.conf
+++ b/cobbler/snippets/preseed_rsyslog.conf
@@ -4,7 +4,7 @@ cat << EOL > /etc/rsyslog.conf
\\$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
\\$ModLoad imfile
-\\$WorkDirectory /var/lib/rsyslog
+\\$WorkDirectory /var/spool/rsyslog
\\$ActionQueueType LinkedList
\\$ActionQueueFileName srvrfwd
\\$ActionResumeRetryCount -1
diff --git a/cobbler/snippets/rsyslog.xml b/cobbler/snippets/rsyslog.xml
index 37fd69e..e9f488f 100644
--- a/cobbler/snippets/rsyslog.xml
+++ b/cobbler/snippets/rsyslog.xml
@@ -4,14 +4,14 @@
/etc/init.d/chef
# Description: chef client daemon (chef).
#end raw
echo "old date is: `date`" 2>&1 > /tmp/ntp.log
-service ntpd stop 2>&1 >> /tmp/ntp.log
+service ntp stop 2>&1 >> /tmp/ntp.log
ntpdate $ntp_server 2>&1 >> /tmp/ntp.log
-service ntpd start 2>&1 >> /tmp/ntp.log
+service ntp start 2>&1 >> /tmp/ntp.log
echo "new date is: `date`" 2>&1 >> /tmp/ntp.log
crontab -l > /tmp/mycron
diff --git a/cobbler/snippets/suse_chef_run.sh b/cobbler/snippets/suse_chef_run.sh
index 6f32410..d850c41 100644
--- a/cobbler/snippets/suse_chef_run.sh
+++ b/cobbler/snippets/suse_chef_run.sh
@@ -67,13 +67,15 @@ EOL
\\\\$InputFilePollInterval 1
local3.info @$server:514
EOL
- rm -rf /var/lib/rsyslog/chef_\\$node_log
- service rsyslog restart
+ if [ -f "/var/spool/rsyslog/chef_\\${node}_log" ]; then
+ rm -rf /var/spool/rsyslog/chef_\\${node}_log
+ fi
+ service syslog restart
fi
- if [ -f "/etc/chef/\\$node.done" ]; then
- USER=root HOME=/root chef-client --node-name \\$node -j /etc/chef/\\$node.json --client_key /etc/chef/\\$node.pem >> /var/log/chef.log 2>&1
+ if [ -f "/etc/chef/\\${node}.done" ]; then
+ USER=root HOME=/root chef-client --node-name \\$node -j /etc/chef/\\${node}.json --client_key /etc/chef/\\${node}.pem >> /var/log/chef.log 2>&1
else
- USER=root HOME=/root chef-client --node-name \\$node -j /etc/chef/\\$node.json --client_key /etc/chef/\\$node.pem -L /var/log/chef/\\$node/chef-client.log >> /var/log/chef.log 2>&1
+ USER=root HOME=/root chef-client --node-name \\$node -j /etc/chef/\\${node}.json --client_key /etc/chef/\\${node}.pem -L /var/log/chef/\\$node/chef-client.log >> /var/log/chef.log 2>&1
fi
if [ "\\$?" != "0" ]; then
echo "chef-client --node-name \\$node run failed" >> /var/log/chef.log 2>&1
diff --git a/cobbler/snippets/suse_post_partition_disks b/cobbler/snippets/suse_post_partition_disks
index 5151b6b..73cf230 100644
--- a/cobbler/snippets/suse_post_partition_disks
+++ b/cobbler/snippets/suse_post_partition_disks
@@ -1,10 +1,8 @@
-set \$(lsblk -n -p -P -o NAME,TYPE,LABEL | grep 'TYPE="part"' | grep 'LABEL="reserved_.*"' | cut -d' ' -f1)
+set \$(lsblk -n -r -o NAME,LABEL | grep 'reserved_.*' | cut -d' ' -f1)
echo "list partitions: \$@" >> /tmp/post_partition.log
declare -a remove_partitions
-for arg in \$@; do
- eval \$arg
- partition=\$NAME
- partition_name=\$(basename \$partition)
+for partition_name in \$@; do
+ partition=/dev/\${partition_name}
echo "add \${partition_name} => \$partition into remove list" >> /tmp/post_partition.log
remove_partitions[\${partition_name}]=\$partition
done
@@ -20,10 +18,16 @@ for partition in \${remove_partitions[@]}; do
partition_disk=\$1
partition_number=\$2
echo "remove disk \${partition_disk} partition \${partition_number}" >> /tmp/post_partition.log
- if [ -z "\${partition_disk}" -o -z "\${partition_number}" ]; then
- continue
+ if [ ! -z "\${partition_disk}" ]; then
+ if [ ! -z "\${partition_number}" ]; then
+ echo "remove \$partition on \${partition_disk} number \${partition_number}" >> /tmp/post_partition.log
+ parted \${partition_disk} --script -- rm \${partition_number}
+ else
+ echo "partition number not found for partition \$partition" >> /tmp/post_partition.log
+ fi
+ else
+ echo "partition disk not found for partition \$partition" >> /tmp/post_partition.log
fi
- parted \${partition_disk} rm \${partition_number}
done
grep -v "LABEL=reserved_.*" /etc/fstab > /tmp/fstab.new
diff --git a/cobbler/snippets/suse_pre_partition_disks b/cobbler/snippets/suse_pre_partition_disks
index 38eaec4..c1545cf 100644
--- a/cobbler/snippets/suse_pre_partition_disks
+++ b/cobbler/snippets/suse_pre_partition_disks
@@ -13,52 +13,60 @@
#set $vgname = $hostname.split('.')[0]
#end if
-set \$(ls -s -l /dev/disk/by-path | awk '{print \$10, \$12}')
-let disk_mapping_nums=\$#/2
-let disk_mapping_offset=0
-echo "disk_mapping_nums: \$disk_mapping_nums" > /tmp/log
-echo "disk_mapping: \$*" >> /tmp/log
declare -a disk_mapping
disk_mapping=()
declare -a disk_path_mapping
disk_path_mapping=()
-while [ \$disk_mapping_offset -lt \$disk_mapping_nums ]; do
- let found_disk_type=0
+if [ -e /dev/disk/by-path ]; then
+ set \$(ls -s -l /dev/disk/by-path | awk '{print \$10, \$12}')
+ let disk_mapping_nums=\$#/2
+ let disk_mapping_offset=0
+ echo "disk_mapping_nums: \$disk_mapping_nums" > /tmp/log
+ echo "disk_mapping: \$*" >> /tmp/log
+ while [ \$disk_mapping_offset -lt \$disk_mapping_nums ]; do
+ let found_disk_type=0
#if $getVar('disk_type_only','') != ""
- if expr match "\$1" ".*-${disk_type_only}-.*"; then
- let found_disk_type=1
- fi
+ if expr match "\$1" ".*-${disk_type_only}-.*"; then
+ let found_disk_type=1
+ fi
#else
- let found_disk_type=1
+ let found_disk_type=1
#end if
- path_name=\$(basename \$1)
- disk_path_name=\$(echo \${path_name} | tr '-' '_' | tr ':' '_' | tr '.' '_')
- disk_name=\$(basename \$2)
- let disk_mapping_offset=\$disk_mapping_offset+1
- shift 2
+ path_name=\$(basename \$1)
+ disk_path_name=\$(echo \${path_name} | tr '-' '_' | tr ':' '_' | tr '.' '_')
+ disk_name=\$(basename \$2)
+ let disk_mapping_offset=\$disk_mapping_offset+1
+ shift 2
- if [ \$found_disk_type -gt 0 ]; then
- disk_mapping+=(\${disk_name})
- disk_path_mapping+=(\${disk_path_name})
- eval "disk_\${disk_name}=/dev/disk/by-path/\${path_name}"
- eval "disk_\${disk_path_name}=/dev/disk/by-path/\${path_name}"
- eval "disk_path_\${disk_path_name}=/dev/\${disk_name}"
- eval "disk_path_\${disk_name}=/dev/\${disk_name}"
- fi
-done
+ if [ \$found_disk_type -gt 0 ]; then
+ disk_mapping+=(\${disk_name})
+ disk_path_mapping+=(\${disk_path_name})
+ eval "disk_\${disk_name}=/dev/disk/by-path/\${path_name}"
+ eval "disk_\${disk_path_name}=/dev/disk/by-path/\${path_name}"
+ eval "disk_path_\${disk_path_name}=/dev/\${disk_name}"
+ eval "disk_path_\${disk_name}=/dev/\${disk_name}"
+ else
+ eval "ignore_disk_\${disk_name}=/dev/disk/by-path/\${path_name}"
+ eval "ignore_disk_\${disk_path_name}=/dev/disk/by-path/\${path_name}"
+ eval "ignore_disk_path_\${disk_path_name}=/dev/\${disk_name}"
+ eval "ignore_disk_path_\${disk_name}=/dev/\${disk_name}"
+ fi
+ done
-echo "finish disk mapping" >> /tmp/log
-for key in \${disk_mapping[@]}; do
- eval "disk_path=\\${disk_\$key}"
- echo "disk_mapping \$key => \${disk_path}" >> /tmp/log
-done
-
-for key in \${disk_path_mapping[@]}; do
- eval "disk=\\${disk_path_\$key}"
- echo "disk path mapping \$key => \${disk}" >> /tmp/log
-done
+ echo "finish disk mapping" >> /tmp/log
+ for key in \${disk_mapping[@]}; do
+ eval "disk_path=\\${disk_\$key}"
+ echo "disk_mapping \$key => \${disk_path}" >> /tmp/log
+ done
+ for key in \${disk_path_mapping[@]}; do
+ eval "disk=\\${disk_path_\$key}"
+ echo "disk path mapping \$key => \${disk}" >> /tmp/log
+ done
+else
+ echo "/dev/disk/by-path does not exist" >> /tmp/log
+fi
declare -a partition_disks
partition_disks=()
@@ -73,8 +81,15 @@ while [ \$disk_offset -lt \$disk_nums ]; do
let disk_offset=\$disk_offset+1
eval "disk_path=\\${disk_\${disk_name}}"
if [ -z "\${disk_path}" ]; then
- echo "ignore disk \${disk_name} since it is not in disk_mapping" >> /tmp/log
- continue
+ eval "ignore_disk_path=\\${ignore_disk_\${disk_name}}"
+ if [ ! -z "\${ignore_disk_path}" ]; then
+ echo "ignore disk \${disk_name} since it is not in disk_mapping" >> /tmp/log
+ continue
+ else
+ echo "did not found disk path for \$disk but it is not ignored" >> /tmp/log
+ eval "disk_\${disk_name}=/dev/\${disk_name}"
+ eval "disk_path_\${disk_name}=/dev/\${disk_name}"
+ fi
fi
let found_disk=0
@@ -468,6 +483,31 @@ for disk in \${sorted_disks[@]}; do
echo '' >> /tmp/profile/partition.xml
done
+#if $getVar('keep_old_partitions', '0') == "0"
+for disk in \${disks[@]}; do
+ disk_name=\$(basename \$disk)
+ eval "used_disk=\\${used_disk_\${disk_name}}"
+ if [[ -z "\$used_disk" ]]; then
+ partition_numer=\$(lsblk -n -o MAJ:MIN,TYPE \$disk | grep part | awk '{print \$1}' | cut -d: -f2)
+ parted \$disk --script -- rm \${partition_numer}
+ fi
+done
+#end if
+
+#if $getVar('keep_old_partitions', '0') == "0"
+for disk in \${disks[@]}; do
+ disk_name=\$(basename \$disk)
+ eval "used_disk=\\${used_disk_\${disk_name}}"
+ if [[ -z "\$used_disk" ]]; then
+ partition_numers=\$(parted \$disk --script -- p | awk '/^ / {print \$1}')
+ echo "remove partition numbers \${partition_numers} on disk \$disk" >> /tmp/log
+ for partition_numer in \${partition_numers}; do
+ parted \$disk --script -- rm \${partition_numer}
+ done
+ fi
+done
+#end if
+
echo "partition disks" >> /tmp/log
if [ \${#vggroup[@]} -gt 0 ]; then