Change migrate-hosts to remove repository.d/hosts/fqdn

Create a backup, and drop that later.

refs #7398
This commit is contained in:
Michael Friedrich 2014-11-07 01:01:12 +01:00
parent f69f7d61f2
commit 9c60a82c87

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# Moves configuration files from /etc/icinga2/conf.d/hosts # Moves configuration files from /etc/icinga2/conf.d/hosts/<fqdn>
# to /etc/icinga2/repository.d # as backup files. TODO: Remove script before 2.2 release.
icinga2bin=@CMAKE_INSTALL_FULL_SBINDIR@/icinga2 icinga2bin=@CMAKE_INSTALL_FULL_SBINDIR@/icinga2
sysconfdir=`$icinga2bin variable get --current SysconfDir` sysconfdir=`$icinga2bin variable get --current SysconfDir`
@ -10,74 +10,22 @@ if [ -z "$sysconfdir" ]; then
exit 1 exit 1
fi fi
if [ ! -d $sysconfdir/icinga2/conf.d/hosts ]; then target="`hostname -f`"
if [ ! -e $sysconfdir/icinga2/repository.d/hosts/$target.conf ]; then
exit 0 exit 0
fi fi
mkdir -p $sysconfdir/icinga2/repository.d/hosts mv $sysconfdir/icinga2/repository.d/hosts/$target.conf $sysconfdir/icinga2/repository.d/hosts/$target.conf.bak
host_count=0 if [ -d $sysconfdir/icinga2/repository.d/hosts/$target ]; then
service_count=0
for hostFile in $sysconfdir/icinga2/conf.d/hosts/*.conf; do
if [ ! -e $hostFile ]; then
continue
fi
host_count=$(($host_count + 1))
host=`basename $hostFile .conf`
if [ "x$host" = "xlocalhost" ]; then
target="`hostname -f`"
else
target=$host
fi
if [ ! -e $sysconfdir/icinga2/repository.d/hosts/$target.conf ]; then
mv $sysconfdir/icinga2/conf.d/hosts/$host.conf $sysconfdir/icinga2/repository.d/hosts/$target.conf
sed "s/localhost/$target/g" $sysconfdir/icinga2/repository.d/hosts/$target.conf > $sysconfdir/icinga2/repository.d/hosts/$target.conf.tmp
mv $sysconfdir/icinga2/repository.d/hosts/$target.conf.tmp $sysconfdir/icinga2/repository.d/hosts/$target.conf
else
rm -f $sysconfdir/icinga2/conf.d/hosts/$host.conf
fi
if [ -d $sysconfdir/icinga2/conf.d/hosts/$host ]; then
service_count=$(($service_count + 1))
if [ ! -e $sysconfdir/icinga2/repository.d/hosts/$target ]; then
mv $sysconfdir/icinga2/conf.d/hosts/$host $sysconfdir/icinga2/repository.d/hosts/$target
for file in $sysconfdir/icinga2/repository.d/hosts/$target/*.conf; do for file in $sysconfdir/icinga2/repository.d/hosts/$target/*.conf; do
if [ ! -e $file ]; then if [ ! -e $file ]; then
break break
fi fi
sed "s/localhost/$target/g" $file > $file.tmp mv $file $file.bak
mv $file.tmp $file
done done
else
rm -rf $sysconfdir/icinga2/conf.d/hosts/$host
fi fi
fi
done
cat >$sysconfdir/icinga2/conf.d/hosts/README <<TEXT
What happened to my configuration files?
========================================
Your host and service configuration files were moved to the $sysconfdir/icinga2/repository.d directory.
This allows you to manipulate those files using the "icinga2 repository" CLI commands.
Here are a few commands you might want to try:
# icinga2 repository host list
# icinga2 repository service list
# icinga2 repository --help
TEXT
echo "Migrated $host_count host(s) and $service_count service(s)."
echo "Moved repository FQDN host in $sysconfdir/icinga2/repository.d/hosts/$target as backup. Please migrate your changes to all new conf.d/{hosts,services.conf}"
exit 0 exit 0