diff --git a/designate/backend/base.py b/designate/backend/base.py index f646fc77d..4253f6aae 100644 --- a/designate/backend/base.py +++ b/designate/backend/base.py @@ -36,6 +36,8 @@ class Backend(DriverPlugin): __plugin_type__ = 'backend' __plugin_ns__ = 'designate.backend' + __backend_status__ = 'untested' + def __init__(self, target): super(Backend, self).__init__() diff --git a/designate/backend/impl_infoblox/config.py b/designate/backend/impl_infoblox/config.py index 959927b5d..4ec601929 100644 --- a/designate/backend/impl_infoblox/config.py +++ b/designate/backend/impl_infoblox/config.py @@ -25,16 +25,62 @@ cfg.CONF.register_group(cfg.OptGroup( )) OPTS = [ - cfg.StrOpt('wapi_url'), - cfg.StrOpt('username'), - cfg.StrOpt('password'), - cfg.BoolOpt('sslverify', default=False), - cfg.BoolOpt('multi_tenant', default=False), - cfg.IntOpt('http_pool_connections', default=100), - cfg.IntOpt('http_pool_maxsize', default=100), - cfg.StrOpt('dns_view', default='default'), - cfg.StrOpt('network_view', default='default'), - cfg.StrOpt('ns_group') + cfg.StrOpt( + 'wapi_url', + deprecated_for_removal=True, + deprecated_reason="All backend options have been migrated to options " + "in the pools.yaml file"), + cfg.StrOpt( + 'username', + deprecated_for_removal=True, + deprecated_reason="All backend options have been migrated to options " + "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') diff --git a/doc/ext/support_matrix.py b/doc/ext/support_matrix.py index e069d28b0..8151b0531 100644 --- a/doc/ext/support_matrix.py +++ b/doc/ext/support_matrix.py @@ -40,6 +40,7 @@ class SupportMatrix(object): self.grades = [] self.grade_names = {} + self.grade_classes = {} # Dict of (name, SupportMatrixTarget) enumerating # all the hypervisor drivers that have data recorded @@ -50,11 +51,12 @@ class SupportMatrix(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.title = title self.notes = notes self.in_tree = in_tree + self.css_class = css_class class SupportMatrixBackend(object): @@ -156,11 +158,13 @@ class SupportMatrixDirective(rst.Directive): title = cfg.get("grades.%s" % grade, "title") notes = cfg.get("grades.%s" % grade, "notes") 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_classes[grade] = css_class grade = SupportMatrixGrade( - grade, title, notes, in_tree) + grade, title, notes, in_tree, css_class) matrix.grades.append(grade) @@ -178,31 +182,27 @@ class SupportMatrixDirective(rst.Directive): def _build_backend_detail_table(self, backend, matrix): table = nodes.table() + table.set_class("table") + table.set_class("table-condensed") tgroup = nodes.tgroup(cols=2) - thead = nodes.thead() tbody = nodes.tbody() for i in range(2): tgroup.append(nodes.colspec(colwidth=1)) - tgroup.append(thead) tgroup.append(tbody) 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() gradetitle = nodes.entry() gradetitle.append(nodes.strong(text="Grade")) gradetext = nodes.entry() - gradetext.append(nodes.paragraph( - text=matrix.grade_names[backend.status])) + class_name = "label-%s" % matrix.grade_classes[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(gradetext) tbody.append(graderow) @@ -212,10 +212,18 @@ class SupportMatrixDirective(rst.Directive): treetitle.append(nodes.strong(text="In Tree")) if bool(backend.in_tree): status = u"\u2714" + intree = nodes.paragraph(text=status) + intree.set_class("label") + intree.set_class("label-success") + else: status = u"\u2716" + intree = nodes.paragraph(text=status) + intree.set_class("label") + intree.set_class("label-danger") + status = u"\u2714" treetext = nodes.entry() - treetext.append(nodes.paragraph(text=status)) + treetext.append(intree) treerow.append(treetitle) treerow.append(treetext) tbody.append(treerow) @@ -257,6 +265,8 @@ class SupportMatrixDirective(rst.Directive): for key in six.iterkeys(matrix.backends): + content.append( + nodes.subtitle(text=matrix.backends[key].title)) content.append( self._build_backend_detail_table( matrix.backends[key], @@ -268,9 +278,12 @@ class SupportMatrixDirective(rst.Directive): 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) table = nodes.table() + table.set_class("table") + table.set_class("table-condensed") grades = matrix.grades tablegroup = nodes.tgroup(cols=2) @@ -298,7 +311,11 @@ class SupportMatrixDirective(rst.Directive): for grade in grades: item = nodes.row() 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) notescol = nodes.entry() @@ -311,8 +328,10 @@ class SupportMatrixDirective(rst.Directive): def _build_grade_table(self, matrix, content): - summarytitle = nodes.title(text="Backends - Summary") + summarytitle = nodes.subtitle(text="Backends - Summary") summary = nodes.table() + summary.set_class("table") + summary.set_class("table-condensed") cols = len(list(six.iterkeys(matrix.backends))) cols += 2 summarygroup = nodes.tgroup(cols=cols) @@ -362,21 +381,35 @@ class SupportMatrixDirective(rst.Directive): item.append(namecol) 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) typecol = nodes.entry() - typecol.append(nodes.paragraph( - text=matrix.backends[backend].type)) + type_text = nodes.paragraph( + text=matrix.backends[backend].type) + type_text.set_class("label") + type_text.set_class("label-info") + typecol.append(type_text) item.append(typecol) if bool(matrix.backends[backend].in_tree): status = u"\u2714" + intree = nodes.paragraph(text=status) + intree.set_class("label") + intree.set_class("label-success") + else: status = u"\u2716" + intree = nodes.paragraph(text=status) + intree.set_class("label") + intree.set_class("label-danger") intreecol = nodes.entry() - intreecol.append(nodes.paragraph(text=status)) + intreecol.append(intree) item.append(intreecol) notescol = nodes.entry() @@ -390,5 +423,5 @@ class SupportMatrixDirective(rst.Directive): def setup(app): - app.add_directive('support_matrix', SupportMatrixDirective) app.add_stylesheet('support-matrix.css') + app.add_directive('support_matrix', SupportMatrixDirective) diff --git a/doc/source/_static/support-matrix.css b/doc/source/_static/support-matrix.css new file mode 100644 index 000000000..c41905312 --- /dev/null +++ b/doc/source/_static/support-matrix.css @@ -0,0 +1,3 @@ +.docs-body .section h1 { + display: block; +} diff --git a/doc/source/backends/bind9.rst b/doc/source/backends/bind9.rst index 558fb0952..102e8b4ed 100644 --- a/doc/source/backends/bind9.rst +++ b/doc/source/backends/bind9.rst @@ -26,16 +26,19 @@ Designate Configuration Example configuration required for Bind9 operation. One section for each pool target -.. code-block:: ini - - [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 + .. literalinclude:: sample_yaml_snippets/bind.yaml + :language: yaml The key and config files are relative to the host running Pool Manager (and can 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 ------------------- diff --git a/doc/source/backends/infoblox.rst b/doc/source/backends/infoblox.rst index 17655c8d8..2989c8c73 100644 --- a/doc/source/backends/infoblox.rst +++ b/doc/source/backends/infoblox.rst @@ -67,39 +67,6 @@ Designate Backend Configuration the domain. So, if you wish for any Infoblox nameservers to be listed in NS 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 -------------------------- diff --git a/doc/source/backends/powerdns.rst b/doc/source/backends/powerdns.rst index c86bad98e..633718fdb 100644 --- a/doc/source/backends/powerdns.rst +++ b/doc/source/backends/powerdns.rst @@ -18,25 +18,6 @@ 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 ---------------------- @@ -49,7 +30,7 @@ You need to configure PowerDNS to use the MySQL backend. launch = gmysql -2. Configure the MySQL database settings:: +2. Configure the MySQL database settings: .. code-block:: ini @@ -61,38 +42,31 @@ You need to configure PowerDNS to use the MySQL backend. gmysql-dnssec=yes #gmysql-socket= + .. note:: 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] - connection = mysql+pymysql://:@:/ +4. Then update the pools in designate + +.. 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. .. code-block:: console - $ designate-manage powerdns init - $ designate-manage powerdns sync + $ 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. - -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. diff --git a/doc/source/backends/sample_yaml_snippets/bind.yaml b/doc/source/backends/sample_yaml_snippets/bind.yaml new file mode 100644 index 000000000..9dbeb221a --- /dev/null +++ b/doc/source/backends/sample_yaml_snippets/bind.yaml @@ -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 diff --git a/doc/source/backends/sample_yaml_snippets/powerdns.yaml b/doc/source/backends/sample_yaml_snippets/powerdns.yaml new file mode 100644 index 000000000..400dce74e --- /dev/null +++ b/doc/source/backends/sample_yaml_snippets/powerdns.yaml @@ -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' diff --git a/doc/source/designate-manage.rst b/doc/source/designate-manage.rst new file mode 100644 index 000000000..6c0b19e18 --- /dev/null +++ b/doc/source/designate-manage.rst @@ -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 + + diff --git a/doc/source/index.rst b/doc/source/index.rst index cb1cf5438..071d60b07 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -1,3 +1,4 @@ +=========================================== Designate, a DNSaaS component for OpenStack =========================================== @@ -54,6 +55,7 @@ Reference Documentation production-guidelines production-architecture configuration + designate-manage rest devstack related diff --git a/doc/source/install/ubuntu-juno.rst b/doc/source/install/ubuntu-juno.rst deleted file mode 100644 index f0a2de82e..000000000 --- a/doc/source/install/ubuntu-juno.rst +++ /dev/null @@ -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 - -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: - - 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. diff --git a/doc/source/pools.rst b/doc/source/pools.rst index 585386f2f..af1fff0d2 100644 --- a/doc/source/pools.rst +++ b/doc/source/pools.rst @@ -79,7 +79,7 @@ Designate Manage Pools Command Reference Update Pools Information ^^^^^^^^^^^^^^^^^^^^^^^^ -.. code-block:: language +.. code-block:: console designate-manage pool update [options] @@ -103,7 +103,7 @@ Options: Generate YAML File ^^^^^^^^^^^^^^^^^^ -.. code-block:: language +.. code-block:: console designate-manage pool generate_file [options] @@ -115,7 +115,7 @@ Options: Generate YAML File from Liberty Config ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. code-block:: language +.. code-block:: console designate-manage pool export_from_config [options] diff --git a/doc/source/support-matrix.ini b/doc/source/support-matrix.ini index d67de3af3..73e897ef3 100644 --- a/doc/source/support-matrix.ini +++ b/doc/source/support-matrix.ini @@ -45,7 +45,8 @@ in-tree=True [backends] backend-impl-bind9=Bind9 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-akamai=Akamai eDNS backend-impl-msdns=Microsoft DNS Server @@ -59,6 +60,8 @@ backend-impl-denominator=Denominator [backends.backend-impl-powerdns-mysql] +[backends.backend-impl-designate] + [backends.backend-impl-powerdns-pgsql] status=untested @@ -84,9 +87,10 @@ type=agent [backends.backend-impl-msdns] in-tree=False -status=untested +status=known-broken repository=https://git.openstack.org/openstack/designate-msdnsagent -maintainers=Graham Hayes +maintainers=Graham Hayes +notes=This backend has not been updated to work with the current XFR based backends. [grades] 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 notes=Tested on every commit by the OpenStack CI Infrastructure, and maintained by designate developers as a reference backend in-tree=True +css-class=success [grades.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 in-tree=optional +css-class=success [grades.release-compatible] title=Release Compatible notes=Not necessarily tested on every commit, but has a maintainer committed to ensuring compatibility for each release in-tree=optional +css-class=success [grades.untested] title=Untested notes=All other backends in the designate repository in-tree=optional +css-class=info [grades.failing] title=Failing notes=Backends that were previously "Compatible", but tests are now failing on a regular basis. in-tree=optional +css-class=warning [grades.known-broken] title=Known Broken notes=Backends that do not work, and have been broken with no sign of any fixes in-tree=optional +css-class=danger