
Change-Id: I1bf5f91afa1262d73acb0e494c42bdc8166f8195 Blueprint: transition-powerdns-to-pools
122 lines
3.2 KiB
Plaintext
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
|