Upgrading to Mitaka from Liberty¶
Pools Configuration¶
We have updated how the config data for pools is now stored.
Previously there was a mix of content in the designate.conf
file and in the
designate database.
We have moved all of the data to the database in Mitaka, to avoid confusion, and avoid the massive complexity that exists in the config file.
Warning
This part of the upgrade requires downtime.
We have 2 new commands in the designate-manage
utility that are
able to assist the migration.
To make the config syntax simpler we have a new YAML based config file that is used to load information into the database.
---
- name: default
# The name is immutable. There will be no option to change the name after
# creation and the only way will to change it will be to delete it
# (and all zones associated with it) and recreate it.
description: Default PowerDNS Pool
# Attributes are Key:Value pairs that describe the pool. for example the level
# of service (i.e. service_tier:GOLD), capabilities (i.e. anycast: true) or
# other metadata. Users can use this information to point their zones to the
# correct pool
attributes: {}
# List out the NS records for zones hosted within this pool
ns_records:
- hostname: ns1-1.example.org.
priority: 1
- hostname: ns1-2.example.org.
priority: 2
# List out the nameservers for this pool. These are the actual PowerDNS
# servers. We use these to verify changes have propagated to all nameservers.
nameservers:
- host: 192.0.2.2
port: 53
# List out the targets for this pool. For PowerDNS, this is the database
# (or databases, if you deploy a separate DB for each PowerDNS server)
targets:
- type: powerdns
description: PowerDNS Database Cluster
# List out the designate-mdns servers from which PowerDNS servers should
# request zone transfers (AXFRs) from.
masters:
- host: 192.0.2.1
port: 5354
# PowerDNS Configuration options
options:
host: 192.0.2.2
port: 53
connection: 'mysql+pymysql://designate:password@127.0.0.1/designate_pdns?charset=utf8'
# Optional list of additional IP/Port's for which designate-mdns will send
# DNS NOTIFY packets to
also_notifies:
- host: 192.0.2.4
port: 53
# Optional configuration to provide a catalog zone for the pool's zones.
# If configured, catalog_zone_fqdn is required and all other keys are
# optional.
catalog_zone:
catalog_zone_fqdn: cat.example.org.
catalog_zone_refresh: 60
# TSIG secret and algorithm to use for securing AXFRs for catalog zones.
catalog_zone_tsig_key: SomeSecretKey
catalog_zone_tsig_algorithm: hmac-sha512
We have a command that will allow you to take your current running config, and export it to the new YAML format.
Note
You will need to have at least one instance of central running, and machine
designate-manage
is running on will need access to the messaging queue
designate-manage pool generate_file --file output.yml
This will create a YAML file, with all the currently defined pools, and all of their config.
We suggest this is then migrated into a config management system, or other document management system.
From this point on all updates to pools should be done by updating this file, and running:
designate-manage pool update --file /path/to/file.yml
Pools - Step by Step¶
Ensure there is not 2 pools with the same name.
Stop all Designate Services.
Deploy new Mitaka code
Start
designate-central
- Run
designate-manage pool export_from_config --file output.yml
Ensure the output file is correct (reference sample file for each value)
Run
designate-manage pool update --file output.yml --dry_run True --delete True
Ensure the output of this command is not removing any Pools
Run
designate-manage pool update --file output.yml --delete True
Start the remaining designate services.