Files
designate/contrib/devstack/lib/designate_plugins/backend-powerdns
Kiall Mac Innes 9b7a253460 Convert PowerDNS to a Pools Backend
Change-Id: I1bf5f91afa1262d73acb0e494c42bdc8166f8195
Blueprint: transition-powerdns-to-pools
2014-12-15 13:54:59 +00:00

122 lines
3.2 KiB
Plaintext

# lib/designate_plugins/backend-powerdns
# Configure the powerdns backend
# Enable with:
# DESIGNATE_BACKEND_DRIVER=powerdns
# Dependencies:
# ``functions`` file
# ``designate`` configuration
# install_designate_backend - install any external requirements
# configure_designate_backend - make configuration changes, including those to other services
# init_designate_backend - initialize databases, etc.
# start_designate_backend - start any external services
# stop_designate_backend - stop any external services
# cleanup_designate_backend - remove transient data and cache
# Save trace setting
DP_PDNS_XTRACE=$(set +o | grep xtrace)
set +o xtrace
# Defaults
# --------
if is_fedora; then
POWERDNS_CFG_DIR=/etc/pdns
else
POWERDNS_CFG_DIR=/etc/powerdns
fi
# Entry Points
# ------------
# install_designate_backend - install any external requirements
function install_designate_backend {
if is_ubuntu; then
PDNS=pdns-server
elif is_fedora || is_suse; then
PDNS=pdns
else
PDNS=pdns-server
fi
install_package $PDNS pdns-backend-mysql
sudo rm -rf $POWERDNS_CFG_DIR/pdns.d
}
# configure_designate_backend - make configuration changes, including those to other services
function configure_designate_backend {
iniset $DESIGNATE_CONF service:pool_manager backends powerdns
iniset $DESIGNATE_CONF service:mdns slave_nameserver_ips_and_ports "$DESIGNATE_SERVICE_HOST:$DESIGNATE_SERVICE_PORT_DNS"
iniset $DESIGNATE_CONF backend:powerdns server_ids $DESIGNATE_SERVER_ID
iniset $DESIGNATE_CONF backend:powerdns connection `database_connection_url designate_pdns`
iniset $DESIGNATE_CONF backend:powerdns masters "$DESIGNATE_SERVICE_HOST:$DESIGNATE_SERVICE_PORT_MDNS"
iniset $DESIGNATE_CONF backend:powerdns:$DESIGNATE_SERVER_ID host $DESIGNATE_SERVICE_HOST
iniset $DESIGNATE_CONF backend:powerdns:$DESIGNATE_SERVER_ID port $DESIGNATE_SERVICE_PORT_DNS
sudo tee $POWERDNS_CFG_DIR/pdns.conf > /dev/null <<EOF
# General Config
setgid=pdns
setuid=pdns
config-dir=$POWERDNS_CFG_DIR
socket-dir=/var/run
guardian=yes
daemon=yes
disable-axfr=no
local-address=$DESIGNATE_SERVICE_HOST
local-port=$DESIGNATE_SERVICE_PORT_DNS
master=no
slave=yes
cache-ttl=0
query-cache-ttl=0
negquery-cache-ttl=0
EOF
if is_service_enabled mysql; then
sudo tee -a $POWERDNS_CFG_DIR/pdns.conf > /dev/null <<EOF
# Launch gmysql backend
launch=gmysql
# gmysql parameters
gmysql-host=$DATABASE_HOST
gmysql-user=$DATABASE_USER
gmysql-password=$DATABASE_PASSWORD
gmysql-dbname=designate_pdns
gmysql-dnssec=yes
EOF
else
die $LINENO "PowerDNS backend only supports MySQL"
fi
restart_service pdns
}
# init_designate_backend - initialize databases, etc.
function init_designate_backend {
# (Re)create designate_pdns database
recreate_database designate_pdns utf8
# Init and migrate designate_pdns database
designate-manage powerdns sync
}
# start_designate_backend - start any external services
function start_designate_backend {
start_service pdns
}
# stop_designate_backend - stop any external services
function stop_designate_backend {
stop_service pdns
}
# cleanup_designate_backend - remove transient data and cache
function cleanup_designate_backend {
:
}
# Restore xtrace
$DP_PDNS_XTRACE