.. Copyright 2016 Cloudbase Solutions Srl Author: Alin Balutoiu Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. MSDNS Agent Backend ******************* MSDNS User Documentation ======================== This page documents using the MSDNS Agent backend. The agent runs on the Windows host where the Microsoft DNS Server feature is installed. It receives DNS messages from Mini DNS using private DNS OPCODEs and classes and creates or deletes zones using WMI calls. It also instructs MSDNS to request AXFR from MiniDNS when a zone is created or updated. `Microsoft DNS documentation for managing DNS zones `_ Setting up the Microsoft DNS server on Windows Server ----------------------------------------------------- The DNS Server role can be installed on the system by following the documentation available here: `How to install the DNS Server role `_ Configuring MSDNS ----------------- Assuming the DNS Server role has been installed on the system, follow the next steps to complete the configuration. These steps are for the Windows host which will run the designate agent. Make sure that Python 2.7 or Python 3.4 is installed on the system already. To install Designate, clone the repository from https://github.com/openstack/designate and do a pip install. Example: .. code-block:: powershell git clone https://github.com/openstack/designate pip install .\\designate After that, we need to configure the Designate Agent. Inside the github repository, there is a folder named "etc/designate" which can be used as default configuration. Copy the folder somewhere else, for this example we will copy it to C:\\etc\\designate Inside the configuration folder, make a copy of designate.conf.sample and rename the copy to designate.conf Example: .. code-block:: powershell copy C:\\etc\\designate\\designate.conf.sample C:\\etc\\designate\\designate.conf Configure the "service.agent" and "backend.agent.msdns" sections in C:\\etc\\designate\\designate.conf Look in C:\\etc\\designate\\designate.conf.example for more complete examples. .. code-block:: ini [service:agent] backend_driver = msdns # Place here the MiniDNS ipaddr and port (no the agent itself) masters = :53 Ensure that "policy_file" under the [default] section is set: .. code-block:: ini policy_file = C:\\etc\\designate\\policy.json Start the designate agent using (Python 2.7 was installed in the default location C:\\Python27): .. code-block:: powershell C:\\Python27\\Scripts\\designate-agent.exe --config-file 'C:\\etc\\designate\\designate.conf' You should see log messages similar to: .. code-block:: powershell 2016-06-22 02:00:47.177 3436 INFO designate.backend.agent_backend.impl_msdns [-] Started msdns backend 2016-06-22 02:00:47.177 3436 INFO designate.service [-] _handle_tcp thread started 2016-06-22 02:00:47.177 3436 INFO designate.service [-] _handle_udp thread started The following steps are for the system running the Designate controller. Make sure to set the mDNS port to 53 in the ``[service:mdns]`` section. MS DNS does not support Masters that are on any port other than 53. Create an agent pool: .. code-block:: bash # Fetch the existing pool(s) if needed or start from scratch designate-manage pool generate_file --file /tmp/pool.yaml # Edit the file (see below) and reload it as: designate-manage pool update --file /tmp/pool.yaml The "targets" section in pool.yaml should look like: .. code-block:: ini targets: - description: Microsoft DNS agent masters: - host: port: 53 options: {} options: - host: port: 5358 type: agent