0b162a4c48
Change-Id: I04a3a48c7e72797092fd1c3bdc6252085eff04df
181 lines
4.7 KiB
Plaintext
181 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
|
|
|
|
# We need to wait for the configuration and database to be in place
|
|
# before we can start up pdns4. Otherwise it will just crash in a loop.
|
|
stop_designate_backend
|
|
}
|
|
|
|
# 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
|
|
api_ca_cert: 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
|
|
guardian=yes
|
|
daemon=yes
|
|
disable-axfr=no
|
|
# local-address should always be set, we temporarily
|
|
# commented it out due to compatibility issues with pdns 4.3.
|
|
# local-address=$HOST_IP $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
|
|
}
|
|
|
|
# init_designate_backend - initialize databases, etc.
|
|
function init_designate_backend {
|
|
# (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
|
|
|
|
restart_service pdns
|
|
}
|
|
|
|
# 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
|