We no longer need to deal with xenial or older distro versions, so we can assume that we can always install pdns4 from the distro directly and don't need the distro version check any longer. Drop a config option that was removed in pdns 4.2.x. Use mysql credentials correctly. Change-Id: I90af3a092296f943509833608f25522b6f8e9ab6
182 lines
4.7 KiB
Plaintext
182 lines
4.7 KiB
Plaintext
# 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
|
|
else
|
|
die $LINENO "PDNS4 Backend plugin backend only supports Ubuntu"
|
|
fi
|
|
|
|
if is_service_enabled mysql; then
|
|
PDNS+=" pdns-backend-mysql"
|
|
elif is_service_enabled postgresql; then
|
|
PDNS+=" pdns-backend-pgsql"
|
|
else
|
|
die $LINENO "PDNS4 backend only supports MySQL / pgSQL"
|
|
fi
|
|
|
|
install_package $PDNS
|
|
sudo rm -rf $POWERDNS_CFG_DIR/pdns.d
|
|
}
|
|
|
|
# configure_designate_backend - make configuration changes, including those to other services
|
|
function configure_designate_backend {
|
|
# Generate Designate pool.yaml file
|
|
sudo tee $DESIGNATE_CONF_DIR/pools.yaml > /dev/null <<EOF
|
|
---
|
|
- name: default
|
|
description: DevStack PowerDNS Pool
|
|
attributes: {}
|
|
|
|
ns_records:
|
|
- hostname: $DESIGNATE_DEFAULT_NS_RECORD
|
|
priority: 1
|
|
|
|
nameservers:
|
|
- host: $(ipv6_unquote $DESIGNATE_SERVICE_HOST)
|
|
port: $DESIGNATE_SERVICE_PORT_DNS
|
|
|
|
targets:
|
|
- type: pdns4
|
|
description: PowerDNS Database Cluster
|
|
|
|
masters:
|
|
- host: $(ipv6_unquote $DESIGNATE_SERVICE_HOST)
|
|
port: $DESIGNATE_SERVICE_PORT_MDNS
|
|
|
|
options:
|
|
host: $(ipv6_unquote $DESIGNATE_SERVICE_HOST)
|
|
port: $DESIGNATE_SERVICE_PORT_DNS
|
|
api_endpoint: http://$DESIGNATE_SERVICE_HOST:8081
|
|
api_token: changeme
|
|
EOF
|
|
|
|
# Generate PowerDNS pdns.conf file
|
|
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=$HOST_IP
|
|
local-ipv6=$HOST_IPV6
|
|
local-port=$DESIGNATE_SERVICE_PORT_DNS
|
|
master=no
|
|
slave=yes
|
|
cache-ttl=0
|
|
query-cache-ttl=0
|
|
negquery-cache-ttl=0
|
|
webserver=yes
|
|
webserver-address=$(ipv6_unquote $DESIGNATE_SERVICE_HOST)
|
|
webserver-allow-from=$(ipv6_unquote $DESIGNATE_SERVICE_HOST),127.0.0.1,::1
|
|
api=yes
|
|
api-key=changeme
|
|
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=$MYSQL_HOST
|
|
gmysql-user=$DATABASE_USER
|
|
gmysql-password=$DATABASE_PASSWORD
|
|
gmysql-dbname=designate_pdns
|
|
gmysql-dnssec=yes
|
|
EOF
|
|
elif is_service_enabled postgresql; then
|
|
sudo tee -a $POWERDNS_CFG_DIR/pdns.conf > /dev/null <<EOF
|
|
# Launch gpgsql backend
|
|
launch=gpgsql
|
|
|
|
# gpgsql parameters
|
|
gpgsql-host=$DATABASE_HOST
|
|
gpgsql-user=$DATABASE_USER
|
|
gpgsql-password=$DATABASE_PASSWORD
|
|
gpgsql-dbname=designate_pdns
|
|
gpgsql-dnssec=yes
|
|
EOF
|
|
else
|
|
die $LINENO "PDNS4 backend only supports MySQL / pgSQL"
|
|
fi
|
|
restart_service pdns
|
|
}
|
|
|
|
# init_designate_backend - initialize databases, etc.
|
|
function init_designate_backend {
|
|
# Stop pdns so that the migration succeeds, if not you get a error
|
|
# that the schema is still in use.
|
|
if is_service_enabled postgresql; then
|
|
stop_designate_backend
|
|
fi
|
|
|
|
# (Re)create designate_pdns database
|
|
recreate_database designate_pdns utf8
|
|
if is_service_enabled mysql; then
|
|
sudo mysql -u$DATABASE_USER -p$DATABASE_PASSWORD -h$MYSQL_HOST designate_pdns < $DESIGNATE_PLUGINS/backend-pdns4-mysql-db.sql
|
|
elif is_service_enabled postgresql; then
|
|
sudo psql -U root -d designate_pdns -f $DESIGNATE_PLUGINS/backend-pdns4-pgsql-db.sql
|
|
else
|
|
die $LINENO "PDNS4 backend only supports MySQL"
|
|
fi
|
|
}
|
|
|
|
# create_designate_pool_configuration_backend - Perform post-pool config tasks
|
|
function create_designate_pool_configuration_backend {
|
|
# Init and migrate designate_pdns database
|
|
:
|
|
}
|
|
|
|
# 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
|