Support for dns aliases, dynamic creation of zone files (dependent

on the environment fact) from Facter facts and a fix for environment
support in puppet.
This commit is contained in:
aes_ng 2012-03-02 16:05:37 +02:00
parent 0479aeb8b8
commit b470ceb9b6
6 changed files with 75 additions and 4 deletions

View file

@ -0,0 +1,35 @@
#!/bin/sh
if [ $# != 2 ]; then
echo "ERR: Must have two arguments: DNS server name and zone/environment" 1>&2
return 2
fi
ZONE=$2
SERVER=$1
FACTS_DIR="/var/lib/puppet/yaml/facts"
ZONE_FILE="/srv/puppet/files/common/dns/db.$ZONE-dynamic.$SERVER"
if [ ! -d "${FACTS_DIR}" ]; then
echo "ERR: Cannot find Facter facts directory ${FACTS_DIR}" 1>&2
exit 3
fi
if [ -f "${ZONE_FILE}" ]; then
rm $ZONE_FILE
fi
cd $FACTS_DIR
for i in `grep -l "environment: $ZONE" *`;
do
echo $i
hn=`grep hostname $i | cut -f 2 -d ':' | tr -d ' '`
ip=`grep "ipaddress:" $i | cut -f 2 -d ':'`
a=`grep "aliases:" $i | cut -f 2 -d ':' | tr -d '"' | tr -d ' '| tr ',' "\n"`;
echo "$hn IN A $ip" >> $ZONE_FILE
if [ "$a" != "" ]; then
for j in $a;
do
echo "$j CNAME $hn" >> $ZONE_FILE
done
fi
done

View file

@ -236,9 +236,12 @@ define dns::zone($role = "master", $master = [], $slaves = [], $source = "AUTO")
}
file { "${dns::server::chroot}${zonedir}/db.${zonefile}-dynamic":
ensure => present,
source => [ "puppet:///files/dns/db.${zonefile}-dynamic.${homename}",
"puppet:///modules/dns/empty", ],
mode => 0640,
content => generate(
"/bin/sh",
"/etc/puppet/modules/dns/files/create_dynamic_records.sh",
$homename,
$zone),
mode => 0640,
owner => "root",
group => $dns::server::group,
require => $operatingsystem ? {