...
 
Commits (3)
cloud-init (18.3-4) UNRELEASED; urgency=medium
* Remove debconf setup of data source.
* Don't override apt pipelining.
* Only handle preseed on initial installation.
* Drop all config migration for versions older then Stretch.
-- Bastian Blank <bastian.blank@credativ.de> Wed, 06 Feb 2019 10:10:21 +0100
......
......@@ -114,21 +114,7 @@ handle_preseed_local_cloud_config() {
db_unregister "${debconf_name}" || :
}
if [ "$1" = "configure" ]; then
# we want to affect apt_pipelining on install, not wait for
# cloud-init to run it on next boot.
pipeline_f="/etc/apt/apt.conf.d/90cloud-init-pipelining"
if [ -f /var/lib/cloud/instance/obj.pkl ]; then
cloud-init single --name apt-pipelining --frequency once >/dev/null 2>&1 ||
echo "Warning: failed to setup apt-pipelining" 1>&2
elif [ ! -f "$pipeline_f" ]; then
# there was no cloud available, so populate it ourselves.
cat > "$pipeline_f" <<EOF
//Written by cloud-init per 'apt_pipelining'
Acquire::http::Pipeline-Depth "0";
EOF
fi
if [ "$1" = "configure" ] && [ -z "$2" ]; then
# if there are maas settings pre-seeded apply them
handle_preseed_maas
......
#!/bin/sh
set -e
#DEBHELPER#
# Remove a no-longer used conffile
rm_conffile() {
local PKGNAME="$1"
local CONFFILE="$2"
[ -e "$CONFFILE" ] || return 0
local md5sum="$(md5sum $CONFFILE | sed -e 's/ .*//')"
local old_md5sum="$(dpkg-query -W -f='${Conffiles}' $PKGNAME | \
sed -n -e "\' $CONFFILE ' { s/ obsolete$//; s/.* //; p }")"
if [ "$md5sum" != "$old_md5sum" ]; then
echo "Obsolete conffile $CONFFILE has been modified by you."
echo "Saving as $CONFFILE.dpkg-bak ..."
mv -f "$CONFFILE" "$CONFFILE".dpkg-bak
else
echo "Removing obsolete conffile $CONFFILE ..."
rm -f "$CONFFILE"
fi
}
# move_sem(src,targets)
# rename sem/* items named $src to $targets
# (with hard links if more than one)
move_sem() {
local src=$1 f="" targ="" freqid="" dir=/var/lib/cloud/sem
shift
# link the remaining targets to src, if it exists
for f in "${dir}/${src}."*; do
# if there were no src entries, nothing to do
[ -f "${f}" ] || return 0
freqid=${f#${dir}/${src}.} # 'i-abcdefg' or 'always'
for targ in "$@"; do
[ -e "${dir}/${targ}.${freqid}" ] && continue
ln -f "${f}" "${dir}/${targ}.${freqid}"
done
rm "${f}"
done
return 0
}
fix_ephemeral0_micro() {
# make ephemeral0 entries in /etc/fstab written by cloudconfig
# 'nobootwait', so they do not block subsequent boots (LP: #634102)
local out="" oldver=$1 dev="" adop="nobootwait"
local s="[[:space:]]" ns="[^[:space:]]" # space and "not space"
local remain="${s}\+.*" first4=""
for dev in /dev/sda2 /dev/sdb; do
first4="${dev}$s\+$ns\+$s\+$ns\+$s\+$ns\+"
out=$(awk '$1 == dev && $4 ~ /cloudconfig/ && $4 !~ op { print $1 ; }' \
dev="${dev}" "op=${adop}" /etc/fstab) || return 0
[ -n "${out}" ] || continue
echo "making ephemeral ${dev} in /etc/fstab ${adop} (LP: #634102)" 1>&2
sed -i "s|^\(${first4}\)\(${remain}\)|\1,${adop}\2|" /etc/fstab
done
}
convert_varlib_05x_06x() {
local url="http://169.254.169.254/2009-04-04/meta-data/instance-id"
local tout="--connect-timeout .5 --read-timeout .5"
local iid="" f="" uptime="" bn=""
iid=$(wget "${url}" ${tout} --tries 1 -O - 2>/dev/null) || iid=""
[ -n "${iid}" -a -d /var/lib/cloud ] || return 0
cd /var/lib/cloud
mkdir -p "instances/${iid}" "instances/${iid}/sem"
[ -e instance ] || ln -sf "instances/${iid}" instance
for f in data/*; do
[ -f "$f" ] || continue
case "${f#*/}" in
user-data.txt.i|user-data.txt|cloud-config.txt)
mv "${f}" instance/
;;
esac
done
[ -f data/cache/obj.pkl ] && mv data/cache/obj.pkl instance/
for f in sem/*.${iid}; do
[ -f "${f}" ] || continue
bn=${f#*/}; bn=${bn%.${iid}}
case "${bn}" in
set_defaults) mv "${f}" "instance/sem/config-locale";;
set_hostname) mv "${f}" "instance/sem/config-set_hostname";;
*) mv "${f}" "instance/sem/${bn}";;
esac
done
[ ! -f sem/update_hostname.always ] ||
mv sem/update_hostname.always sem/config-update_hostname.always
rmdir data/cache 2>/dev/null || :
rm -f data/available.build
mkdir -p instance/scripts
if [ -d data/scripts ]; then
mv data/scripts/* instance/scripts || :
rmdir data/scripts || :
fi
[ -d data/scripts/* ] && mv data/scripts instance/
[ ! -e instance/boot-finished ] &&
[ -f /proc/uptime ] && read uptime other </proc/uptime &&
echo "${uptime}" > instance/boot-finished || :
return 0
}
case "$1" in
install|upgrade)
if [ "$2" = "0.5.7-0ubuntu1" ]; then
bad_d=/etc/update-motd.d/92-ec2-upgrade-available
rm_conffile cloud-init "${bad_d}/motd-hook"
# the dir for this file is almost certainly empty, but
# if the file above was only moved, or other files there
# then leave it be
rmdir "${bad_d}" 2>/dev/null || true
fi
if dpkg --compare-versions "$2" le "0.5.10-0ubuntu2"; then
old_confs="cloud-apt-update-upgrade cloud-config-misc
cloud-config-mounts cloud-config-puppet
cloud-config-ssh cloud-disable-ec2-metadata"
for f in ${old_confs}; do
rm_conffile cloud-init "/etc/init/${f}.conf"
done
fi
if dpkg --compare-versions "$2" le "0.5.11-0ubuntu1"; then
# rename the config entries in sem/ so they're not run again
# transition names in 0.5.11 had only short name (no config- prefix)
# so create config- entries for each
for name in apt-update-upgrade disable-ec2-metadata mounts \
puppet runcmd ssh updates-check; do
move_sem ${name} config-${name}
done
# 0.5.11 split 'config-misc' into 'updates-check' and 'runcmd'
move_sem config-misc config-updates-check config-runcmd
fi
if dpkg --compare-versions "$2" le "0.5.14-0ubuntu5"; then
fix_ephemeral0_micro
fi
if dpkg --compare-versions "$2" le 0.6.0-0ubuntu1; then
# convert /var/lib/cloud from 0.5.x layout to 0.6.x
convert_varlib_05x_06x
fi
if dpkg --compare-versions "$2" le 0.7.7~bzr1156-2; then
dpkg-divert --package cloud-init --remove --rename --divert \
/etc/init/ureadahead.conf.disabled /etc/init/ureadahead.conf
fi
d=/etc/cloud/
if [ -f "$d/distro.cfg" ] && [ ! -f "$d/cloud.cfg.d/90_dpkg.cfg" ]; then
echo "moving $d/distro.cfg -> $d/cloud.cfg.d/90_dpkg.cfg"
[ -d "${d}/cloud.cfg.d" ] || mkdir "${d}/cloud.cfg.d"
mv "$d/distro.cfg" "$d/cloud.cfg.d/90_dpkg.cfg"
fi
esac