Add components to designate CCP plugin

Add next components to designate CCP plugin:

  * designate-api
  * designate-central
  * designate-sink
  * designate-pool-manager
  * designate-zone-manager
  * designate-mdns
  * designate-agent

Change-Id: I0332dc2e1e8bfaf7802f339ae94928c6c7de9979
This commit is contained in:
Peter Razumovsky 2017-02-07 17:15:40 +04:00
parent 17a09de0ed
commit c7773735e3
19 changed files with 497 additions and 0 deletions

View File

@ -0,0 +1,4 @@
FROM {{ image_spec("designate-base") }}
MAINTAINER {{ maintainer }}
USER designate

View File

@ -0,0 +1,9 @@
FROM {{ image_spec("designate-base") }}
MAINTAINER {{ maintainer }}
#mysql-client only for provisioning need to be removed later
RUN apt-get install -y --no-install-recommends \
mysql-client \
&& apt-get clean
USER designate

View File

@ -0,0 +1,16 @@
FROM {{ image_spec("openstack-base") }}
MAINTAINER {{ maintainer }}
{{ copy_sources("openstack/designate", "/designate") }}
RUN useradd --user-group -G microservices designate \
&& /var/lib/microservices/venv/bin/pip install --upgrade /designate \
&& mkdir -p /var/lib/designate /etc/designate /var/log/designate \
&& cp -r /designate/etc/designate/* /etc/designate/ \
&& mv /etc/designate/rootwrap.conf.sample /etc/designate/rootwrap.conf \
&& chown -R designate:designate /var/log/designate /etc/designate /var/lib/designate \
&& sed -i 's|^exec_dirs.*|exec_dirs=/var/lib/microservices/venv/bin,/sbin,/usr/sbin,/bin,/usr/bin,/usr/local/bin,/usr/local/sbin|g' /etc/designate/rootwrap.conf
COPY designate_sudoers /etc/sudoers.d/designate_sudoers
RUN chmod 750 /etc/sudoers.d \
&& chmod 440 /etc/sudoers.d/designate_sudoers

View File

@ -0,0 +1 @@
designate ALL = (root) NOPASSWD: /var/lib/microservices/venv/bin/designate-rootwrap /etc/designate/rootwrap.conf *

View File

@ -0,0 +1,4 @@
FROM {{ image_spec("designate-base") }}
MAINTAINER {{ maintainer }}
USER designate

View File

@ -0,0 +1,4 @@
FROM {{ image_spec("designate-base") }}
MAINTAINER {{ maintainer }}
USER designate

View File

@ -0,0 +1,9 @@
FROM {{ image_spec("designate-base") }}
MAINTAINER {{ maintainer }}
#mysql-client only for provisioning need to be removed later
RUN apt-get install -y --no-install-recommends \
mysql-client \
&& apt-get clean
USER designate

View File

@ -0,0 +1,4 @@
FROM {{ image_spec("designate-base") }}
MAINTAINER {{ maintainer }}
USER designate

View File

@ -0,0 +1,4 @@
FROM {{ image_spec("designate-base") }}
MAINTAINER {{ maintainer }}
USER designate

View File

@ -0,0 +1,17 @@
dsl_version: 0.5.0
service:
name: designate-agent
containers:
- name: designate-agent
image: designate-agent
daemon:
dependencies:
- designate-api
files:
- designate-conf
command: designate-agent --config-file /etc/designate/designate.conf
files:
designate-conf:
path: /etc/designate/designate.conf
content: designate.conf.j2

View File

@ -0,0 +1,68 @@
dsl_version: 0.5.0
service:
name: designate-api
ports:
- {{ designate.api_port }}
containers:
- name: designate-api
image: designate-api
pre:
- name: designate-main-db-create
dependencies:
- {{ service.database }}
type: single
command:
mysql -u root -p{{ db.root_password }} -h {{ address(service.database) }} -e "create database {{ designate.db.name.main_database }};
grant all privileges on {{ designate.db.name.main_database }}.* to '{{ designate.db.username }}'@'%' identified by '{{ designate.db.password }}';"
- name: designate-syncdb
dependencies:
- designate-main-db-create
files:
- designate-conf
type: single
command: designate-manage --config-file /etc/designate/designate.conf database sync
- name: designate-user-create
dependencies:
- keystone-create-project
type: single
command: openstack user create --domain default --password {{ designate.password }} {{ designate.username }}
- name: designate-admin-role-add
dependencies:
- designate-user-create
type: single
command: openstack role add --project service --user {{ designate.username }} admin
- name: designate-service-create
dependencies:
- keystone-create-project
type: single
command: openstack service create --name designate --description "Designate Service" dns
- name: designate-public-endpoint-create
dependencies:
- designate-service-create
type: single
command: openstack endpoint create --region RegionOne dns public {{ address('designate-api', designate.api_port, external=True, with_scheme=True) }}
- name: designate-internal-endpoint-create
dependencies:
- designate-service-create
type: single
command: openstack endpoint create --region RegionOne dns internal {{ address('designate-api', designate.api_port, with_scheme=True) }}
- name: designate-admin-endpoint-create
dependencies:
- designate-service-create
type: single
command: openstack endpoint create --region RegionOne dns admin {{ address('designate-api', designate.api_port, with_scheme=True) }}
daemon:
dependencies:
- "{{ messaging.dependencies[messaging.backend.rpc] }}"
files:
- designate-conf
- api-paste
command: designate-api --config-file /etc/designate/designate.conf
files:
designate-conf:
path: /etc/designate/designate.conf
content: designate.conf.j2
api-paste:
path: /etc/designate/api-paste.ini
content: api-paste.ini.j2

View File

@ -0,0 +1,17 @@
dsl_version: 0.5.0
service:
name: designate-central
containers:
- name: designate-central
image: designate-central
daemon:
dependencies:
- designate-api
files:
- designate-conf
command: designate-central --config-file /etc/designate/designate.conf
files:
designate-conf:
path: /etc/designate/designate.conf
content: designate.conf.j2

View File

@ -0,0 +1,17 @@
dsl_version: 0.5.0
service:
name: designate-mdns
containers:
- name: designate-mdns
image: designate-mdns
daemon:
dependencies:
- designate-api
files:
- designate-conf
command: designate-mdns --config-file /etc/designate/designate.conf
files:
designate-conf:
path: /etc/designate/designate.conf
content: designate.conf.j2

View File

@ -0,0 +1,32 @@
dsl_version: 0.5.0
service:
name: designate-pool-manager
containers:
- name: designate-pool-manager
image: designate-pool-manager
pre:
- name: designate-pool-manager-db-create
dependencies:
- {{ service.database }}
type: single
command:
mysql -u root -p{{ db.root_password }} -h {{ address(service.database) }} -e "create database {{ designate.db.name.pool_manager }};
grant all privileges on {{ designate.db.name.pool_manager }}.* to '{{ designate.db.username }}'@'%' identified by '{{ designate.db.password }}';"
- name: designate-pool-sync
dependencies:
- designate-pool-manager-db-create
files:
- designate-conf
type: single
command: designate-manage --config-file /etc/designate/designate.conf pool-manager-cache sync
daemon:
dependencies:
- designate-api
files:
- designate-conf
command: designate-pool-manager --config-file /etc/designate/designate.conf
files:
designate-conf:
path: /etc/designate/designate.conf
content: designate.conf.j2

View File

@ -0,0 +1,17 @@
dsl_version: 0.5.0
service:
name: designate-sink
containers:
- name: designate-sink
image: designate-sink
daemon:
dependencies:
- designate-api
files:
- designate-conf
command: designate-sink --config-file /etc/designate/designate.conf
files:
designate-conf:
path: /etc/designate/designate.conf
content: designate.conf.j2

View File

@ -0,0 +1,17 @@
dsl_version: 0.5.0
service:
name: designate-zone-manager
containers:
- name: designate-zone-manager
image: designate-zone-manager
daemon:
dependencies:
- designate-api
files:
- designate-conf
command: designate-zone-manager --config-file /etc/designate/designate.conf
files:
designate-conf:
path: /etc/designate/designate.conf
content: designate.conf.j2

View File

@ -0,0 +1,66 @@
[composite:osapi_dns]
use = egg:Paste#urlmap
/: osapi_dns_versions
/v1: osapi_dns_v1
/v2: osapi_dns_v2
/admin: osapi_dns_admin
[pipeline:osapi_dns_versions]
pipeline = maintenance faultwrapper ssl osapi_dns_app_versions
[app:osapi_dns_app_versions]
paste.app_factory = designate.api.versions:factory
[composite:osapi_dns_v1]
use = call:designate.api.middleware:auth_pipeline_factory
noauth = request_id noauthcontext maintenance validation_API_v1 faultwrapper ssl normalizeuri osapi_dns_app_v1
keystone = request_id authtoken keystonecontext maintenance validation_API_v1 faultwrapper ssl normalizeuri osapi_dns_app_v1
[app:osapi_dns_app_v1]
paste.app_factory = designate.api.v1:factory
[composite:osapi_dns_v2]
use = call:designate.api.middleware:auth_pipeline_factory
noauth = request_id faultwrapper ssl validation_API_v2 noauthcontext maintenance normalizeuri osapi_dns_app_v2
keystone = request_id faultwrapper ssl validation_API_v2 authtoken keystonecontext maintenance normalizeuri osapi_dns_app_v2
[app:osapi_dns_app_v2]
paste.app_factory = designate.api.v2:factory
[composite:osapi_dns_admin]
use = call:designate.api.middleware:auth_pipeline_factory
noauth = request_id faultwrapper ssl noauthcontext maintenance normalizeuri osapi_dns_app_admin
keystone = request_id faultwrapper ssl authtoken keystonecontext maintenance normalizeuri osapi_dns_app_admin
[app:osapi_dns_app_admin]
paste.app_factory = designate.api.admin:factory
[filter:request_id]
paste.filter_factory = oslo_middleware:RequestId.factory
[filter:noauthcontext]
paste.filter_factory = designate.api.middleware:NoAuthContextMiddleware.factory
[filter:authtoken]
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
[filter:keystonecontext]
paste.filter_factory = designate.api.middleware:KeystoneContextMiddleware.factory
[filter:maintenance]
paste.filter_factory = designate.api.middleware:MaintenanceMiddleware.factory
[filter:normalizeuri]
paste.filter_factory = designate.api.middleware:NormalizeURIMiddleware.factory
[filter:faultwrapper]
paste.filter_factory = designate.api.middleware:FaultWrapperMiddleware.factory
[filter:validation_API_v1]
paste.filter_factory = designate.api.middleware:APIv1ValidationErrorMiddleware.factory
[filter:validation_API_v2]
paste.filter_factory = designate.api.middleware:APIv2ValidationErrorMiddleware.factory
[filter:ssl]
paste.filter_factory = designate.api.middleware:SSLMiddleware.factory

View File

@ -0,0 +1,48 @@
configs:
designate:
api_port:
cont: 9001
ingress: dns
debug: false
notification:
driver: noop
topics:
enabled: false
names: changeme
# options, allows to configure services particularly
service:
central:
workers: 1
threads: 1000
api:
workers: 1
threads: 1000
mdns:
workers: 1
threads: 1000
agent:
workers: 1
zone_manager:
workers: 1
threads: 1000
pool_manager:
workers: 1
threads: 1000
domain_purge:
interval: 3600
batch_size: 100
time_threshold: 604800 # 7 days
username: designate
password: password
db:
username: designate
password: password
name:
pool_manager: designate_pool_manager
main_database: designate
sources:
openstack/designate:
git_url: https://git.openstack.org/openstack/designate.git
git_ref: stable/newton

View File

@ -0,0 +1,143 @@
########################
## General Configuration
########################
[DEFAULT]
verbose = true
debug = {{ designate.debug }}
use_syslog = false
use_stderr = true
notification_driver = {{ designate.notification.driver }}
{% if designate.notification.topics.enabled %}
notification_topics = {{ designate.notification.topics.names }}
{% endif %}
{{ oslo_messaging[messaging.backend.rpc]('rpc_config') }}
{{ oslo_messaging[messaging.backend.rpc]('notifications_config') }}
#--------------------
# Keystone Middleware
#--------------------
[keystone_authtoken]
auth_uri = {{ address('keystone', keystone.public_port, with_scheme=True) }}
auth_url = {{ address('keystone', keystone.admin_port, with_scheme=True) }}
project_domain_name = Default
project_name = service
user_domain_name = Default
auth_type = password
username = {{ designate.username }}
password = {{ designate.password }}
memcached_servers = {{ address("memcached", memcached.port) }}
########################
## Service Configuration
########################
#----------------
# Central Service
#----------------
[service:central]
workers = {{ designate.service.central.workers }}
threads = {{ designate.service.central.threads }}
#------------
# API Service
#------------
[service:api]
workers = {{ designate.service.api.workers }}
threads = {{ designate.service.api.threads }}
api_base_uri = http://{{ network_topology["private"]["address"] }}:{{ designate.api_port.cont }}/
api_host = {{ network_topology["private"]["address"] }}
api_port = {{ designate.api_port.cont }}
auth_strategy = keystone
enable_api_v1 = True
enabled_extensions_v1 = diagnostics, quotas, reports, sync, touch
enable_api_v2 = True
enabled_extensions_v2 = quotas, reports
#-------------
# Sink Service
#-------------
[service:sink]
enabled_notification_handlers = nova_fixed, neutron_floatingip
#-------------
# mDNS Service
#-------------
[service:mdns]
workers = {{ designate.service.mdns.workers }}
threads = {{ designate.service.mdns.threads }}
#--------------
# Agent Service
#--------------
[service:agent]
workers = {{ designate.service.agent.workers }}
#---------------------
# Zone Manager Service
#---------------------
[service:zone_manager]
workers = {{ designate.service.zone_manager.workers }}
threads = {{ designate.service.zone_manager.threads }}
#------------------------
# Deleted domains purging
#------------------------
[zone_manager_task:domain_purge]
interval = {{ designate.domain_purge.interval }}
batch_size = {{ designate.domain_purge.batch_size }}
time_threshold = {{ designate.domain_purge.threshold }}
#---------------------
# Pool Manager Service
#---------------------
[service:pool_manager]
workers = {{ designate.service.pool_manager.workers }}
threads = {{ designate.service.pool_manager.threads }}
{% if designate.pool is defined %}
pool_id = {{ designate.pool.pool_id }}
{%- endif %}
###################################
## Pool Manager Cache Configuration
###################################
#------------------------------
# SQLAlchemy Pool Manager Cache
#------------------------------
[pool_manager_cache:sqlalchemy]
connection = mysql+pymysql://{{ designate.db.username }}:{{ designate.db.password }}@{{ address(service.database) }}/{{ designate.db.name.pool_manager }}
########################
## Storage Configuration
########################
#-------------------
# SQLAlchemy Storage
#-------------------
[storage:sqlalchemy]
connection = mysql+pymysql://{{ designate.db.username }}:{{ designate.db.password }}@{{ address(service.database) }}/{{ designate.db.name.main_database }}
########################
## Handler Configuration
########################
#-------------------
# Nova Fixed Handler
#-------------------
[handler:nova_fixed]
domain_id = default
notification_topics = notifications
control_exchange = 'neutron'
format = '%(hostname)s.%(domain)s'
#-------------------------
# Neutron Floating Handler
#-------------------------
[handler:neutron_floatingip]
domain_id = default
notification_topics = notifications
control_exchange = 'neutron'
format = '%(hostname)s.%(domain)s'