diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index 8d27c74327..d1e9f6aa80 100644 --- a/ansible/group_vars/all.yml +++ b/ansible/group_vars/all.yml @@ -876,6 +876,8 @@ designate_backend: "bind9" designate_ns_record: "sample.openstack.org" designate_backend_external: "no" designate_backend_external_bind9_nameservers: "" +# Valid options are [ '', redis, etcd ] +designate_coordination_backend: "{{ 'redis' if enable_redis|bool else 'etcd' if enable_etcd|bool else '' }}" ####################### # Neutron options diff --git a/ansible/roles/designate/templates/designate.conf.j2 b/ansible/roles/designate/templates/designate.conf.j2 index b1282201df..580ccccfdf 100644 --- a/ansible/roles/designate/templates/designate.conf.j2 +++ b/ansible/roles/designate/templates/designate.conf.j2 @@ -98,3 +98,11 @@ enable_proxy_headers_parsing = True [oslo_policy] policy_file = {{ designate_policy_file }} {% endif %} + +[coordination] +{% if designate_coordination_backend == 'redis' %} +backend_url = {{ redis_connection_string }} +{% elif designate_coordination_backend == 'etcd' %} +# NOTE(noxoid): python-etcd3 does not support multiple endpoints +backend_url = etcd3://{{ hostvars[groups['etcd'][0]]['ansible_' + hostvars[groups['etcd'][0]]['api_interface']]['ipv4']['address'] }}:{{ etcd_client_port }} +{% endif %} diff --git a/doc/source/reference/networking/designate-guide.rst b/doc/source/reference/networking/designate-guide.rst index f6b37e3f40..acac51a062 100644 --- a/doc/source/reference/networking/designate-guide.rst +++ b/doc/source/reference/networking/designate-guide.rst @@ -37,6 +37,13 @@ Configure Designate options in ``/etc/kolla/globals.yml`` dns_interface: "eth1" designate_ns_record: "sample.openstack.org" +.. important:: + + If multiple nodes are assigned to be Designate workers then you must + enable a supported coordination backend, currently either 'redis' or + 'etcd'. The backend choice can be overridden by the + ``designate_coordination_backend`` variable. + The following additional variables are required depending on which backend you intend to use: diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml index 1e36710178..d8fa8feb0c 100644 --- a/etc/kolla/globals.yml +++ b/etc/kolla/globals.yml @@ -464,6 +464,8 @@ # Valid options are [ bind9 ] #designate_backend: "bind9" #designate_ns_record: "sample.openstack.org" +# Valid options are [ '', redis, etcd ] +#designate_coordination_backend: "{{ 'redis' if enable_redis|bool else 'etcd' if enable_etcd|bool else '' }}" ######################## # Nova - Compute Options diff --git a/releasenotes/notes/new-variable-designate-coordination-backend-741ec71946e7567e.yaml b/releasenotes/notes/new-variable-designate-coordination-backend-741ec71946e7567e.yaml new file mode 100644 index 0000000000..b0239ff97b --- /dev/null +++ b/releasenotes/notes/new-variable-designate-coordination-backend-741ec71946e7567e.yaml @@ -0,0 +1,7 @@ +--- +features: + - | + Designate coordination backend can now be configured via the + designate_coordination_backend variable. Coordination is mandatory + when multiple workers are deployed as in a multinode environment. + Possible values are redis or etcd.