Docs update

* Added MSDNS to Known-Broken
* Removed Juno Docs
* Added CLI docs for designate-manage
* Update backend docs to new yaml style

Change-Id: I8f6876bfeb33bcad46141030a04fe9127dedcefe
This commit is contained in:
Graham Hayes 2016-03-21 16:13:40 +00:00
parent e34ddf8110
commit b172846a1f
14 changed files with 537 additions and 339 deletions

View File

@ -36,6 +36,8 @@ class Backend(DriverPlugin):
__plugin_type__ = 'backend' __plugin_type__ = 'backend'
__plugin_ns__ = 'designate.backend' __plugin_ns__ = 'designate.backend'
__backend_status__ = 'untested'
def __init__(self, target): def __init__(self, target):
super(Backend, self).__init__() super(Backend, self).__init__()

View File

@ -25,16 +25,62 @@ cfg.CONF.register_group(cfg.OptGroup(
)) ))
OPTS = [ OPTS = [
cfg.StrOpt('wapi_url'), cfg.StrOpt(
cfg.StrOpt('username'), 'wapi_url',
cfg.StrOpt('password'), deprecated_for_removal=True,
cfg.BoolOpt('sslverify', default=False), deprecated_reason="All backend options have been migrated to options "
cfg.BoolOpt('multi_tenant', default=False), "in the pools.yaml file"),
cfg.IntOpt('http_pool_connections', default=100), cfg.StrOpt(
cfg.IntOpt('http_pool_maxsize', default=100), 'username',
cfg.StrOpt('dns_view', default='default'), deprecated_for_removal=True,
cfg.StrOpt('network_view', default='default'), deprecated_reason="All backend options have been migrated to options "
cfg.StrOpt('ns_group') "in the pools.yaml file"),
cfg.StrOpt(
'password',
deprecated_for_removal=True,
deprecated_reason="All backend options have been migrated to options "
"in the pools.yaml file"),
cfg.BoolOpt(
'sslverify',
default=False,
deprecated_for_removal=True,
deprecated_reason="All backend options have been migrated to options "
"in the pools.yaml file"),
cfg.BoolOpt(
'multi_tenant',
default=False,
deprecated_for_removal=True,
deprecated_reason="All backend options have been migrated to options "
"in the pools.yaml file"),
cfg.IntOpt(
'http_pool_connections',
default=100,
deprecated_for_removal=True,
deprecated_reason="All backend options have been migrated to options "
"in the pools.yaml file"),
cfg.IntOpt(
'http_pool_maxsize',
default=100,
deprecated_for_removal=True,
deprecated_reason="All backend options have been migrated to options "
"in the pools.yaml file"),
cfg.StrOpt(
'dns_view',
default='default',
deprecated_for_removal=True,
deprecated_reason="All backend options have been migrated to options "
"in the pools.yaml file"),
cfg.StrOpt(
'network_view',
default='default',
deprecated_for_removal=True,
deprecated_reason="All backend options have been migrated to options "
"in the pools.yaml file"),
cfg.StrOpt(
'ns_group',
deprecated_for_removal=True,
deprecated_reason="All backend options have been migrated to options "
"in the pools.yaml file")
] ]
cfg.CONF.register_opts(OPTS, group='backend:infoblox') cfg.CONF.register_opts(OPTS, group='backend:infoblox')

View File

@ -40,6 +40,7 @@ class SupportMatrix(object):
self.grades = [] self.grades = []
self.grade_names = {} self.grade_names = {}
self.grade_classes = {}
# Dict of (name, SupportMatrixTarget) enumerating # Dict of (name, SupportMatrixTarget) enumerating
# all the hypervisor drivers that have data recorded # all the hypervisor drivers that have data recorded
@ -50,11 +51,12 @@ class SupportMatrix(object):
class SupportMatrixGrade(object): class SupportMatrixGrade(object):
def __init__(self, key, title, notes, in_tree): def __init__(self, key, title, notes, in_tree, css_class):
self.key = key self.key = key
self.title = title self.title = title
self.notes = notes self.notes = notes
self.in_tree = in_tree self.in_tree = in_tree
self.css_class = css_class
class SupportMatrixBackend(object): class SupportMatrixBackend(object):
@ -156,11 +158,13 @@ class SupportMatrixDirective(rst.Directive):
title = cfg.get("grades.%s" % grade, "title") title = cfg.get("grades.%s" % grade, "title")
notes = cfg.get("grades.%s" % grade, "notes") notes = cfg.get("grades.%s" % grade, "notes")
in_tree = cfg.get("grades.%s" % grade, "in-tree") in_tree = cfg.get("grades.%s" % grade, "in-tree")
css_class = cfg.get("grades.%s" % grade, "css-class")
matrix.grade_names[grade] = title matrix.grade_names[grade] = title
matrix.grade_classes[grade] = css_class
grade = SupportMatrixGrade( grade = SupportMatrixGrade(
grade, title, notes, in_tree) grade, title, notes, in_tree, css_class)
matrix.grades.append(grade) matrix.grades.append(grade)
@ -178,31 +182,27 @@ class SupportMatrixDirective(rst.Directive):
def _build_backend_detail_table(self, backend, matrix): def _build_backend_detail_table(self, backend, matrix):
table = nodes.table() table = nodes.table()
table.set_class("table")
table.set_class("table-condensed")
tgroup = nodes.tgroup(cols=2) tgroup = nodes.tgroup(cols=2)
thead = nodes.thead()
tbody = nodes.tbody() tbody = nodes.tbody()
for i in range(2): for i in range(2):
tgroup.append(nodes.colspec(colwidth=1)) tgroup.append(nodes.colspec(colwidth=1))
tgroup.append(thead)
tgroup.append(tbody) tgroup.append(tbody)
table.append(tgroup) table.append(tgroup)
header = nodes.row()
blank = nodes.entry()
blank.append(nodes.emphasis(text=backend.title))
header.append(blank)
blank = nodes.entry()
header.append(blank)
thead.append(header)
graderow = nodes.row() graderow = nodes.row()
gradetitle = nodes.entry() gradetitle = nodes.entry()
gradetitle.append(nodes.strong(text="Grade")) gradetitle.append(nodes.strong(text="Grade"))
gradetext = nodes.entry() gradetext = nodes.entry()
gradetext.append(nodes.paragraph( class_name = "label-%s" % matrix.grade_classes[backend.status]
text=matrix.grade_names[backend.status])) status_text = nodes.paragraph(
text=matrix.grade_names[backend.status])
status_text.set_class(class_name)
status_text.set_class("label")
gradetext.append(status_text)
graderow.append(gradetitle) graderow.append(gradetitle)
graderow.append(gradetext) graderow.append(gradetext)
tbody.append(graderow) tbody.append(graderow)
@ -212,10 +212,18 @@ class SupportMatrixDirective(rst.Directive):
treetitle.append(nodes.strong(text="In Tree")) treetitle.append(nodes.strong(text="In Tree"))
if bool(backend.in_tree): if bool(backend.in_tree):
status = u"\u2714" status = u"\u2714"
intree = nodes.paragraph(text=status)
intree.set_class("label")
intree.set_class("label-success")
else: else:
status = u"\u2716" status = u"\u2716"
intree = nodes.paragraph(text=status)
intree.set_class("label")
intree.set_class("label-danger")
status = u"\u2714"
treetext = nodes.entry() treetext = nodes.entry()
treetext.append(nodes.paragraph(text=status)) treetext.append(intree)
treerow.append(treetitle) treerow.append(treetitle)
treerow.append(treetext) treerow.append(treetext)
tbody.append(treerow) tbody.append(treerow)
@ -257,6 +265,8 @@ class SupportMatrixDirective(rst.Directive):
for key in six.iterkeys(matrix.backends): for key in six.iterkeys(matrix.backends):
content.append(
nodes.subtitle(text=matrix.backends[key].title))
content.append( content.append(
self._build_backend_detail_table( self._build_backend_detail_table(
matrix.backends[key], matrix.backends[key],
@ -268,9 +278,12 @@ class SupportMatrixDirective(rst.Directive):
def _build_grade_listing(self, matrix, content): def _build_grade_listing(self, matrix, content):
summarytitle = nodes.title(text="Grades") summarytitle = nodes.subtitle(text="Grades")
content.append(nodes.raw(text="Grades", attributes={'tagname': 'h2'}))
content.append(summarytitle) content.append(summarytitle)
table = nodes.table() table = nodes.table()
table.set_class("table")
table.set_class("table-condensed")
grades = matrix.grades grades = matrix.grades
tablegroup = nodes.tgroup(cols=2) tablegroup = nodes.tgroup(cols=2)
@ -298,7 +311,11 @@ class SupportMatrixDirective(rst.Directive):
for grade in grades: for grade in grades:
item = nodes.row() item = nodes.row()
namecol = nodes.entry() namecol = nodes.entry()
namecol.append(nodes.paragraph(text=grade.title)) class_name = "label-%s" % grade.css_class
status_text = nodes.paragraph(text=grade.title)
status_text.set_class(class_name)
status_text.set_class("label")
namecol.append(status_text)
item.append(namecol) item.append(namecol)
notescol = nodes.entry() notescol = nodes.entry()
@ -311,8 +328,10 @@ class SupportMatrixDirective(rst.Directive):
def _build_grade_table(self, matrix, content): def _build_grade_table(self, matrix, content):
summarytitle = nodes.title(text="Backends - Summary") summarytitle = nodes.subtitle(text="Backends - Summary")
summary = nodes.table() summary = nodes.table()
summary.set_class("table")
summary.set_class("table-condensed")
cols = len(list(six.iterkeys(matrix.backends))) cols = len(list(six.iterkeys(matrix.backends)))
cols += 2 cols += 2
summarygroup = nodes.tgroup(cols=cols) summarygroup = nodes.tgroup(cols=cols)
@ -362,21 +381,35 @@ class SupportMatrixDirective(rst.Directive):
item.append(namecol) item.append(namecol)
statuscol = nodes.entry() statuscol = nodes.entry()
statuscol.append(nodes.paragraph(text=grade.title)) class_name = "label-%s" % grade.css_class
status_text = nodes.paragraph(text=grade.title)
status_text.set_class(class_name)
status_text.set_class("label")
statuscol.append(status_text)
item.append(statuscol) item.append(statuscol)
typecol = nodes.entry() typecol = nodes.entry()
typecol.append(nodes.paragraph( type_text = nodes.paragraph(
text=matrix.backends[backend].type)) text=matrix.backends[backend].type)
type_text.set_class("label")
type_text.set_class("label-info")
typecol.append(type_text)
item.append(typecol) item.append(typecol)
if bool(matrix.backends[backend].in_tree): if bool(matrix.backends[backend].in_tree):
status = u"\u2714" status = u"\u2714"
intree = nodes.paragraph(text=status)
intree.set_class("label")
intree.set_class("label-success")
else: else:
status = u"\u2716" status = u"\u2716"
intree = nodes.paragraph(text=status)
intree.set_class("label")
intree.set_class("label-danger")
intreecol = nodes.entry() intreecol = nodes.entry()
intreecol.append(nodes.paragraph(text=status)) intreecol.append(intree)
item.append(intreecol) item.append(intreecol)
notescol = nodes.entry() notescol = nodes.entry()
@ -390,5 +423,5 @@ class SupportMatrixDirective(rst.Directive):
def setup(app): def setup(app):
app.add_directive('support_matrix', SupportMatrixDirective)
app.add_stylesheet('support-matrix.css') app.add_stylesheet('support-matrix.css')
app.add_directive('support_matrix', SupportMatrixDirective)

View File

@ -0,0 +1,3 @@
.docs-body .section h1 {
display: block;
}

View File

@ -26,16 +26,19 @@ Designate Configuration
Example configuration required for Bind9 operation. One section for each pool target Example configuration required for Bind9 operation. One section for each pool target
.. code-block:: ini .. literalinclude:: sample_yaml_snippets/bind.yaml
:language: yaml
[pool_target:f26e0b32-736f-4f0a-831b-039a415c481e]
options = rndc_host: 192.168.27.100, rndc_port: 953, rndc_config_file: /etc/bind/rndc.conf, rndc_key_file: /etc/bind/rndc.key, port: 53, host: 192.168.27.100, clean_zonefile: false
masters = 192.168.27.100:5354
type = bind9
The key and config files are relative to the host running Pool Manager (and can The key and config files are relative to the host running Pool Manager (and can
be different from the hosts running Bind) be different from the hosts running Bind)
Then update the pools in designate - see :ref:`designate_manage_pool` for further details on
the ``designate-manage pool`` command
.. code-block:: console
$ designate-manage pool update
Bind9 Configuration Bind9 Configuration
------------------- -------------------

View File

@ -67,39 +67,6 @@ Designate Backend Configuration
the domain. So, if you wish for any Infoblox nameservers to be listed in NS the domain. So, if you wish for any Infoblox nameservers to be listed in NS
records, they must be added via Designate. records, they must be added via Designate.
*Example Designate Configuration*
.. code-block:: ini
[pool:794ccc2c-d751-44fe-b57f-8894c9f5c842]
#Specify the API service points for each grid
targets = f26e0b32-736f-4f0a-831b-039a415c481e
# Specify the lead secondary servers configured in the NS groups
# for each target.
nameservers = ffedb95e-edc1-11e4-9ae6-000c29db281b
[pool_target:f26e0b32-736f-4f0a-831b-039a415c481e]
type = infoblox
# wapi_url, username, password can all be overridden from the defaults
# allowing targets to point to different grids
options = dns_view: default, ns_group: Designate
[pool_nameserver:ffedb95e-edc1-11e4-9ae6-000c29db281b]
host=172.16.98.200
port=53
[backend:infoblox]
# The values below will be used for all targets unless overridden
# in the target configuration. http_* options may only be set here,
# not at the target level.
http_pool_maxsize = 100
http_pool_connections = 100
wapi_url = https://172.16.98.200/wapi/v2.1/
sslverify = False
password = infoblox
username = admin
multi_tenant = False
Multi-tenant Configuration Multi-tenant Configuration
-------------------------- --------------------------

View File

@ -18,25 +18,6 @@
PowerDNS Backend PowerDNS Backend
================ ================
Designate Configuration
-----------------------
=============================== ====================================== ==============================================================
Parameter Default Note
=============================== ====================================== ==============================================================
domain_type NATIVE PowerDNS Domain Type
also_notify [] List of additional IPs to send NOTIFYs to.
connection sqlite:///$pystatepath/powerdns.sqlite Database connection string
connection_debug 0 Verbosity of SQL debugging information. 0=None, 100=Everything
connection_trace False Add python stack traces to SQL as comment strings
idle_timeout 3600 timeout before idle sql connections are reaped
max_retries 10 maximum db connection retries during startup.
(setting -1 implies an infinite retry count)
retry_interval 10 interval between retries of opening a sql connection
mysql_engine InnoDB MySQL engine to use
sqlite_synchronous True If passed, use synchronous mode for sqlite
=============================== ====================================== ==============================================================
PowerDNS Configuration PowerDNS Configuration
---------------------- ----------------------
@ -49,7 +30,7 @@ You need to configure PowerDNS to use the MySQL backend.
launch = gmysql launch = gmysql
2. Configure the MySQL database settings:: 2. Configure the MySQL database settings:
.. code-block:: ini .. code-block:: ini
@ -61,38 +42,31 @@ You need to configure PowerDNS to use the MySQL backend.
gmysql-dnssec=yes gmysql-dnssec=yes
#gmysql-socket=<socket path> #gmysql-socket=<socket path>
.. note:: .. note::
PowerDNS can connect via socket or host/port. PowerDNS can connect via socket or host/port.
3. Configure the options for designate-central - specifically "connection" to point to your MySQL database 3. Configure the PowerDNS Backend using this sample target snippet
.. code-block:: ini .. literalinclude:: sample_yaml_snippets/powerdns.yaml
:language: yaml
[backend:powerdns] 4. Then update the pools in designate
connection = mysql+pymysql://<username>:<password>@<host>:<port>/<dbname>
.. code-block:: console
$ designate-manage pool update
See :ref:`designate_manage_pool` for further details on the ``designate-manage pool``
command, and :ref:`pools` for information about the yaml file syntax
4. Setup the database schema. 4. Setup the database schema.
.. code-block:: console .. code-block:: console
$ designate-manage powerdns init $ designate-manage powerdns sync <pool_id>
$ designate-manage powerdns sync
See :ref:`designate_manage_powerdns` for further details on the ``designate-manage powerdns`` command
5. Restart PowerDNS and it should be ready to serve queries using the MySQL database as the backing store. 5. Restart PowerDNS and it should be ready to serve queries using the MySQL database as the backing store.
PowerDNS deployment as hidden Master
------------------------------------
One deployment scenario can be that the PowerDNS backend will be used as a "hidden" Master DNS for other DNS servers to consume via AXFR.
Say you have 10.0.0.1 and 10.0.0.2 as slaves then configure the backend as follows in addition to other options
.. code-block:: ini
[backend:powernds]
domain_type = MASTER
also_notify = 10.0.0.1,10.0.0.2
.. note::
This should mostly be used in connection with another backend acting as slave.

View File

@ -0,0 +1,17 @@
targets:
- type: bind
description: BIND9 Server 1
# List out the designate-mdns servers from which BIND servers should
# request zone transfers (AXFRs) from.
masters:
- host: 192.0.2.1
port: 5354
# BIND Configuration options
options:
host: 192.0.2.2
port: 53
rndc_host: 192.0.2.2
rndc_port: 953
rndc_key_file: /etc/designate/rndc.key

View File

@ -0,0 +1,15 @@
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.1
port: 53
connection: 'mysql+pymysql://designate:password@127.0.0.1/designate_pdns?charset=utf8'

View File

@ -0,0 +1,345 @@
.. _designate-manage:
====================
Designate Manage CLI
====================
This chapter documents :command:`designate-manage`
For help on a specific :command:`designate` command, enter:
.. code-block:: console
$ designate-manage COMMAND --help
.. _designate_manage_command_usage:
designate-manage
================
designate-manage usage
----------------------
.. code-block:: console
usage: designate-manage [-h] [--config-dir DIR] [--config-file PATH] [--debug]
[--log-config-append PATH] [--log-date-format DATE_FORMAT]
[--log-dir LOG_DIR] [--log-file PATH] [--nodebug]
[--nouse-syslog] [--nouse-syslog-rfc-format] [--noverbose]
[--nowatch-log-file]
[--syslog-log-facility SYSLOG_LOG_FACILITY] [--use-syslog]
[--use-syslog-rfc-format] [--verbose] [--version]
[--watch-log-file]
.. _designate_command_options:
designate optional arguments
----------------------------
``--config-dir DIR``
Path to a config directory to pull \*.conf files from.
This file set is sorted, so as to provide a
predictable parse order if individual options are
over-ridden. The set is parsed after the file(s)
specified via previous --config-file, arguments hence
over-ridden options in the directory take precedence.
``--config-file PATH``
Path to a config file to use. Multiple config files
can be specified, with values in later files taking
precedence. Defaults to None.
``--debug, -d``
If set to true, the logging level will be set to DEBUG
instead of the default INFO level.
``--log-config-append PATH, --log_config PATH``
The name of a logging configuration file. This file is
appended to any existing logging configuration files.
For details about logging configuration files, see the
Python logging module documentation. Note that when
logging configuration files are used then all logging
configuration is set in the configuration file and
other logging configuration options are ignored (for
example, logging_context_format_string).
``--log-date-format DATE_FORMAT``
Defines the format string for %(asctime)s in log
records. Default: None . This option is ignored if
log_config_append is set.
``--log-dir LOG_DIR, --logdir LOG_DIR``
(Optional) The base directory used for relative
log_file paths. This option is ignored if
log_config_append is set.
``--log-file PATH, --logfile PATH``
(Optional) Name of log file to send logging output to.
If no default is set, logging will go to stderr as
defined by use_stderr. This option is ignored if
log_config_append is set.
``--nodebug``
The inverse of --debug
``--nouse-syslog``
The inverse of --use-syslog
``--nouse-syslog-rfc-format``
The inverse of --use-syslog-rfc-format
``--noverbose``
The inverse of --verbose
``--nowatch-log-file``
The inverse of --watch-log-file
``--syslog-log-facility SYSLOG_LOG_FACILITY``
Syslog facility to receive log lines. This option is
ignored if log_config_append is set.
``--use-syslog``
Use syslog for logging. Existing syslog format is
DEPRECATED and will be changed later to honor RFC5424.
This option is ignored if log_config_append is set.
``--use-syslog-rfc-format``
Enables or disables syslog rfc5424 format for logging.
If enabled, prefixes the MSG part of the syslog
message with APP-NAME (RFC5424). This option is
ignored if log_config_append is set.
``--verbose, -v``
If set to false, the logging level will be set to
WARNING instead of the default INFO level.
``--watch-log-file``
Uses logging handler designed to watch file system.
When log file is moved or removed this handler will
open a new log file with specified path
instantaneously. It makes sense only if log_file
option is specified and Linux platform is used. This
option is ignored if log_config_append is set.
.. _designate_manage_pool:
designate-manage pool
=====================
.. _designate_manage_pool_export_from_config:
designate-manage pool export_from_config
----------------------------------------
.. code-block:: console
usage: designate-manage pool export_from_config [-h] [--file FILE]
Export a YAML copy of a Kilo/Liberty pool config.
**Optional arguments:**
``-h, --help``
show this help message and exit
``--file FILE``
The path to the file the yaml output should be writen to
(Defaults to /etc/designate/pools.yaml)
.. _designate_manage_pool_generate_file:
designate-manage pool generate_file
-----------------------------------
.. code-block:: console
usage: designate-manage pool generate_file [-h] [--file FILE]
Export a YAML copy of the current running pool config
**Optional arguments:**
``-h, --help``
show this help message and exit
``--file FILE``
The path to the file the yaml output should be writen to
(Defaults to /etc/designate/pools.yaml)
.. _designate_manage_pool_update:
designate-manage pool update
----------------------------
.. code-block:: console
usage: designate-manage pool update [-h] [--file FILE] [--delete DELETE]
[--dry_run DRY_RUN]
Export a YAML copy of the current running pool config
**Optional arguments:**
``-h, --help``
show this help message and exit
``--file FILE``
The path to the file that should be used to update the pools config
(Defaults to /etc/designate/pools.yaml)
``--delete DELETE``
Any Pools not listed in the config file will be deleted.
.. warning:: This will delete any zones left in this pool
``--dry_run DRY_RUN``
This will simulate what will happen when you run this command
.. _designate_manage_database:
designate-manage database
=========================
.. _designate_manage_database_sync:
designate-manage database sync
------------------------------
.. code-block:: console
usage: designate-manage database sync [-h] [--revision REVISION]
Update the designate database schema
**Optional arguments:**
``-h, --help``
show this help message and exit
``--revision REVISION``
The version that the designate database should be synced to.
(Defaults to latest version)
.. _designate_manage_database_version:
designate-manage database version
---------------------------------
.. code-block:: console
usage: designate-manage database version [-h]
Show what version of the database schema is currently in place
**Optional arguments:**
``-h, --help``
show this help message and exit
.. _designate_manage_pool_manager_cache:
designate-manage pool_manager_cache
===================================
.. _designate_manage_pool_manager_cache_sync:
designate-manage pool_manager_cache sync
----------------------------------------
.. code-block:: console
usage: designate-manage pool_manager_cache sync [-h] [--revision REVISION]
Update the designate pool manager cache database schema
**Optional arguments:**
``-h, --help``
show this help message and exit
``--revision REVISION``
The version that the designate pool manager cache database should be synced to.
(Defaults to latest version)
.. _designate_manage_pool_manager_cache_version:
designate-manage pool_manager_cache version
-------------------------------------------
.. code-block:: console
usage: designate-manage pool_manager_cache version [-h]
Show what version of the pool manager cache database schema is currently in place
**Optional arguments:**
``-h, --help``
show this help message and exit
.. _designate_manage_powerdns:
designate-manage powerdns
=========================
.. _designate_manage_powerdns_sync:
designate-manage powerdns sync
------------------------------
.. code-block:: console
usage: designate-manage powerdns sync [-h] [--revision REVISION] POOL_ID
Update the designate powerdns database schema
**Required arguments:**
``POOL_ID``
The pool that should be upgraded or migrated
**Optional arguments:**
``-h, --help``
show this help message and exit
``--revision REVISION``
The version that the designate pool manager cache database should be synced to.
(Defaults to latest version)
.. _designate_manage_powerdns_version:
designate-manage powerdns version
-------------------------------------------
.. code-block:: console
usage: designate-manage powerdns version [-h] POOL_ID
Show what version of the powerdns database schema is currently in place
**Required arguments:**
``POOL_ID``
The pool that should be upgraded or migrated
**Optional arguments:**
``-h, --help``
show this help message and exit

View File

@ -1,3 +1,4 @@
===========================================
Designate, a DNSaaS component for OpenStack Designate, a DNSaaS component for OpenStack
=========================================== ===========================================
@ -54,6 +55,7 @@ Reference Documentation
production-guidelines production-guidelines
production-architecture production-architecture
configuration configuration
designate-manage
rest rest
devstack devstack
related related

View File

@ -1,219 +0,0 @@
*************************
Installing Juno on Ubuntu
*************************
.. _install-ubuntu-architecture:
Architecture
============
Please see :ref:`production-architecture` for general production architecture notes.
* Ubuntu as the Operating System
* Designate
* RabbitMQ
* MySQL
* :ref:`backend-powerdns`
* Keystone for AuthN / AuthZ (Not included in this guide)
.. _install-ubuntu-prerequisites:
Prerequisites
=============
.. _install-ubuntu-prereq-install:
Install
^^^^^^^
::
$ sudo apt-get install mysql-server rabbitmq-server pdns-server pdns-backend-mysql
.. _install-ubuntu-prereq-setup-rabbitmq:
RabbitMQ
^^^^^^^^
.. note::
Do the following commands as "root" or via sudo <command>
Create a user:
::
$ rabbitmqctl add_user designate designate
Give the user access to the / vhost:
::
$ sudo rabbitmqctl set_permissions -p "/" designate ".*" ".*" ".*"
.. _install-ubuntu-prereq-setup-mysql:
MySQL
^^^^^
.. note::
The following commands should be done using the mysql command line or similar.
Create the MySQL user
::
$ mysql -u root -p
Enter password: <enter your password here>
mysql> GRANT ALL ON designate.* TO 'designate'@'localhost' IDENTIFIED BY 'designate';
mysql> GRANT ALL ON powerdns.* TO 'powerdns'@'localhost' IDENTIFIED BY 'powerdns';
Create the database
::
mysql> CREATE DATABASE `designate` CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> CREATE DATABASE `powerdns` CHARACTER SET utf8 COLLATE utf8_general_ci;
.. _install-ubuntu-prereq-pdns:
PowerDNS
^^^^^^^^
Edit the config::
$ sudo editor /etc/powerdns/pdns.conf
Settings::
launch = gmysql
Edit the MySQL backend settings::
$ sudo editor /etc/powerdns/pdns.d/pdns.local.gmysql.conf
Settings::
gmysql-host=localhost
gmysql-dbname=powerdns
gmysql-user=powerdns
gmysql-password=powerdns
Delete a couple unnecessary files::
$ rm /etc/powerdns/bindbackend.conf
$ rm /etc/powerdns/pdns.d/pdns.simplebind.conf
.. _install-ubuntu-source:
Installing using Source (Git)
=============================
1. Install pre-requisites:
::
$ sudo apt-get install libmysqlclient-dev
$ sudo apt-get install git python-dev python-pip
$ sudo apt-get build-dep python-lxml
2. Clone the repository:
::
$ git clone https://git.openstack.org/openstack/designate designate
3. Change directory to the newly cloned repository
::
$ cd designate
4. Checking out a specific version:
In some cases you might want to pin the repository version to a specific version of the repository like a stable one.
Example for the Juno release:
::
$ git checkout stable/juno
3. Install all dependencies using pip
::
$ sudo pip install -r requirements.txt
$ sudo pip install MySQL-python
4. Install Designate:
::
$ sudo python setup.py develop
5. Copy over configuration files
::
$ sudo cp -R etc/designate /etc/
$ ls /etc/designate/*.sample | while read f; do sudo cp $f $(echo $f | sed "s/.sample$//g"); done
Create directories
^^^^^^^^^^^^^^^^^^
Since we are not running packages some directories are not created for us.
::
$ sudo mkdir /var/lib/designate /var/log/designate
# Needed if you are running designate as a non root user.
$ sudo chown designate /var/lib/designate /var/log/designate
Configuring
===========
Designate
^^^^^^^^^
::
$ sudo editor /etc/designate/designate.conf
Copy or mirror the configuration from this sample file here:
.. literalinclude:: /examples/basic-config-sample-juno.conf
:language: ini
Sync Database schemas
^^^^^^^^^^^^^^^^^^^^^
Initialize and sync the database schemas for Designate and PowerDNS::
$ designate-manage database sync
$ designate-manage powerdns sync
Register Designate with Keystone
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
For howto register Designate with Keystone you can check the code used in the devstack plugin.
There should be no version registered in the URL for the endpoint.
Starting the services
=====================
Central::
$ designate-central
API::
$ designate-api
You should now be able to create zones and use nslookup or dig towards localhost to query pdns for it.

View File

@ -79,7 +79,7 @@ Designate Manage Pools Command Reference
Update Pools Information Update Pools Information
^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: language .. code-block:: console
designate-manage pool update [options] designate-manage pool update [options]
@ -103,7 +103,7 @@ Options:
Generate YAML File Generate YAML File
^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^
.. code-block:: language .. code-block:: console
designate-manage pool generate_file [options] designate-manage pool generate_file [options]
@ -115,7 +115,7 @@ Options:
Generate YAML File from Liberty Config Generate YAML File from Liberty Config
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: language .. code-block:: console
designate-manage pool export_from_config [options] designate-manage pool export_from_config [options]

View File

@ -45,7 +45,8 @@ in-tree=True
[backends] [backends]
backend-impl-bind9=Bind9 backend-impl-bind9=Bind9
backend-impl-powerdns-mysql=Power DNS (MySQL) backend-impl-powerdns-mysql=Power DNS (MySQL)
backend-impl-powerdns-pgsql=Power DNS (pgSQL) backend-impl-designate=Designate to Designate
backend-impl-dynect=DynECT
backend-impl-dynect=DynECT backend-impl-dynect=DynECT
backend-impl-akamai=Akamai eDNS backend-impl-akamai=Akamai eDNS
backend-impl-msdns=Microsoft DNS Server backend-impl-msdns=Microsoft DNS Server
@ -59,6 +60,8 @@ backend-impl-denominator=Denominator
[backends.backend-impl-powerdns-mysql] [backends.backend-impl-powerdns-mysql]
[backends.backend-impl-designate]
[backends.backend-impl-powerdns-pgsql] [backends.backend-impl-powerdns-pgsql]
status=untested status=untested
@ -84,9 +87,10 @@ type=agent
[backends.backend-impl-msdns] [backends.backend-impl-msdns]
in-tree=False in-tree=False
status=untested status=known-broken
repository=https://git.openstack.org/openstack/designate-msdnsagent repository=https://git.openstack.org/openstack/designate-msdnsagent
maintainers=Graham Hayes <graham.hayes@hp.com> maintainers=Graham Hayes <graham.hayes@hpe.com>
notes=This backend has not been updated to work with the current XFR based backends.
[grades] [grades]
valid-grades=integrated,master-compatible,release-compatible,untested,failing,known-broken valid-grades=integrated,master-compatible,release-compatible,untested,failing,known-broken
@ -95,28 +99,34 @@ valid-grades=integrated,master-compatible,release-compatible,untested,failing,kn
title=Integrated title=Integrated
notes=Tested on every commit by the OpenStack CI Infrastructure, and maintained by designate developers as a reference backend notes=Tested on every commit by the OpenStack CI Infrastructure, and maintained by designate developers as a reference backend
in-tree=True in-tree=True
css-class=success
[grades.master-compatible] [grades.master-compatible]
title=Master Compatible title=Master Compatible
notes=Tested on every commit by 3rd party testing, and has a person or group dedicated to maintaining compatibility on a regular basis notes=Tested on every commit by 3rd party testing, and has a person or group dedicated to maintaining compatibility on a regular basis
in-tree=optional in-tree=optional
css-class=success
[grades.release-compatible] [grades.release-compatible]
title=Release Compatible title=Release Compatible
notes=Not necessarily tested on every commit, but has a maintainer committed to ensuring compatibility for each release notes=Not necessarily tested on every commit, but has a maintainer committed to ensuring compatibility for each release
in-tree=optional in-tree=optional
css-class=success
[grades.untested] [grades.untested]
title=Untested title=Untested
notes=All other backends in the designate repository notes=All other backends in the designate repository
in-tree=optional in-tree=optional
css-class=info
[grades.failing] [grades.failing]
title=Failing title=Failing
notes=Backends that were previously "Compatible", but tests are now failing on a regular basis. notes=Backends that were previously "Compatible", but tests are now failing on a regular basis.
in-tree=optional in-tree=optional
css-class=warning
[grades.known-broken] [grades.known-broken]
title=Known Broken title=Known Broken
notes=Backends that do not work, and have been broken with no sign of any fixes notes=Backends that do not work, and have been broken with no sign of any fixes
in-tree=optional in-tree=optional
css-class=danger