Installing Liberty on Ubuntu¶
This section describes how to install Designate on Ubuntu 14.04.
To install other OpenStack services, see OpenStack Installation
Guide.
This section assumes the Identity service runs on the host
controller.
Install and configure Basic Environment¶
Enable OpenStack repository¶
Enable the OpenStack Liberty repository:
$ sudo apt-get update $ sudo apt-get install software-properties-common $ sudo add-apt-repository cloud-archive:liberty
Upgrade the packages on your host:
$ sudo apt-get update $ sudo apt-get dist-upgrade
Install and configure SQL database¶
Install the MariaDB packages:
$ sudo apt-get install mariadb-server python-pymysqlChoose a suitable password for the database root account.
Install and configure message queue¶
Install the RabbitMQ packages:
$ sudo apt-get install rabbitmq-serverAdd the
openstackuser:$ sudo rabbitmqctl add_user openstack RABBIT_PASS Creating user "openstack" ...
Replace
RABBIT_PASSwith a suitable password.Permit configuration, write, and read access for the
openstackuser:$ sudo rabbitmqctl set_permissions openstack ".*" ".*" ".*" Setting permissions for user "openstack" in vhost "/" ...
Install DNS server¶
Install the BIND9 packages:
$ sudo apt-get install bind9Add the following options in the
/etc/bind/named.conf.optionsfile:options { ... allow-new-zones yes; request-ixfr no; recursion no; };Restart the DNS service:
$ sudo service bind9 restart
Install Designate¶
Install the
designatepackage:$ sudo apt-get install designateIn the
Configuring designate-commonprompt, complete the following actions:- select
Yesfor the questionSet up a database for Designate?. - enter
localhostfor theIP address of your RabbitMQ host. - enter the
openstackasUsername for connection to the RabbitMQ server. - enter the
password for connection to the RabbitMQ serverthat you chose for the RabbitMQ server at the previous step. - press the
enterkey at the promptAuthentication server hostname. - press the
enterkey at the promptAuthentication server password. - select
Nofor the questionRegister Designate in the Keystone endpoint catalog?. - select
Yesfor the questionConfigure database for designate-common with dbconfig-common. - select
mysqlfordatabase type to be used by designate-common. - enter the
password of the database's administrative userthat is chosen for the root account at the previous step. - enter the
MySQL application password for designate-common. - enter the same password as
password confirmation.
- select
Note
the designate-common package offers automatic creation of the
database tables for Designate during the installation process.
Configure Designate¶
Source the admin credentials to gain access to admin-only CLI commands.
Create the
designateuser:$ openstack user create --domain default --password-prompt designate User Password: Repeat User Password: +-----------+----------------------------------+ | Field | Value | +-----------+----------------------------------+ | domain_id | default | | enabled | True | | id | b7dd483c69654442b09a7458f7daf8d3 | | name | designate | +-----------+----------------------------------+
Add the admin role to the
designateuser andserviceproject:$ openstack role add --project service --user designate adminCreate the
designateservice entity:$ openstack service create --name designate \ --description "OpenStack DNS service" dns +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack DNS service | | enabled | True | | id | 6f634693062946579f678c32c006e097 | | name | designate | | type | dns | +-------------+----------------------------------+
Create the DNS service API endpoints:
$ openstack endpoint create --region RegionOne \ dns public http://controller:9001 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 05bf0535afad4e0897fcbc4686bf1ab9 | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | 6f634693062946579f678c32c006e097 | | service_name | designate | | service_type | dns | | url | http://controller:9001 | +--------------+----------------------------------+ $ openstack endpoint create --region RegionOne \ dns internal http://controller:9001 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | b8f56bf8a8ed4e88b1655655a3327ae6 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | 6f634693062946579f678c32c006e097 | | service_name | designate | | service_type | dns | | url | http://controller:9001 | +--------------+----------------------------------+ $ openstack endpoint create --region RegionOne \ dns admin http://controller:9001 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | f081aef76b06472cb791aa04d920f195 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | 6f634693062946579f678c32c006e097 | | service_name | designate | | service_type | dns | | url | http://controller:9001 | +--------------+----------------------------------+
Edit the
/etc/designate/designate.conffile and complete the following actions:In the
[service:api]section, configureauth_strategy:[service:api] api_host = 0.0.0.0 api_port = 9001 auth_strategy = keystone enable_api_v1 = True enabled_extensions_v1 = diagnostics, quotas, reports, sync, touch enable_api_v2 = True enabled_extensions_v2 = quotas, reports
In the
[keystone_authtoken]section, configure the following options:[keystone_authtoken] auth_host = controller auth_port = 35357 auth_protocol = http admin_tenant_name = service admin_user = designate admin_password = DESIGNATE_PASS
Replace DESIGNATE_PASS with the password you chose for the
designateuser in the Identity service.In the
[service:pool_manager]section, configurepool_id:[service:pool_manager] pool_id = 794ccc2c-d751-44fe-b57f-8894c9f5c842
Configure the pool:
[pool:794ccc2c-d751-44fe-b57f-8894c9f5c842] nameservers = 0f66b842-96c2-4189-93fc-1dc95a08b012 targets = f26e0b32-736f-4f0a-831b-039a415c481e [pool_nameserver:0f66b842-96c2-4189-93fc-1dc95a08b012] port = 53 host = 127.0.0.1 [pool_target:f26e0b32-736f-4f0a-831b-039a415c481e] options = port: 53, host: 127.0.0.1 masters = 127.0.0.1:5354 type = bind9
In the
[storage:sqlalchemy]section, configure database access:[storage:sqlalchemy] connection = mysql+pymysql://designate-common:DESIGNATE_DBPASS@localhost/designatedb
DESIGNATE_DBPASSis automatically set to the password you chose for the Designate database.In the
[pool_manager_cache:sqlalchemy]section, configure database access:[pool_manager_cache:sqlalchemy] connection = mysql+pymysql://designate-common:DESIGNATE_DBPASS@localhost/designate_pool_manager
Replace
DESIGNATE_DBPASSwith a suitable password.
Restart the Designate central and API services:
$ sudo service designate-central restart $ sudo service designate-api restart
Install Designate pool manager and mdns¶
Create the
designate_pool_managerdatabase and grant proper access:$ mysql -u root -p Enter password: <enter your root password here> mysql> CREATE DATABASE `designate_pool_manager` CHARACTER SET utf8 COLLATE utf8_general_ci; mysql> GRANT ALL PRIVILEGES ON designate_pool_manager.* TO 'designate-common'@'localhost' IDENTIFIED BY 'DESIGNATE_DBPASS'; mysql> exit;
Install the
designate-pool-manageranddesignate-mdnspackage:$ sudo apt-get install designate-pool-manager designate-mdnsSync the Pool Manager cache:
$ sudo su -s /bin/sh -c "designate-manage pool-manager-cache sync" designate
Restart the Designate pool manager and mDNS services:
$ sudo service designate-pool-manager restart $ sudo service designate-mdns restart
Verify operation¶
Note
If you have a firewall enabled, make sure to open port 53, as well as Designate’s default port (9001).
Using a web browser, curl statement, or a REST client, calls can be made to the Designate API using the following format where “api_version” is either v1 or v2 and “command” is any of the commands listed under the corresponding version at REST API Documentation.
http://controller:9001/api_version/command
You can find the IP Address of your server by running:
curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
Note
Before Domains are created, you must create a server (/v1/servers).