This guide installs OpenStack Designate components for a self-hosted DNSaaS control plane.
designate.conf| Service | Purpose |
|---|---|
designate-api |
REST API endpoint (port 9001) |
designate-central |
Core coordination service |
designate-worker |
DNS zone operations |
designate-producer |
Task generation for queue |
designate-mdns |
Multicast DNS service |
designate-sink |
Optional: Nova/Neutron event listener |
- name: Install Designate on Debian family
hosts: designate_debian
become: true
vars:
designate_db_user: designate
designate_db_password: change-me
designate_db_host: 127.0.0.1
designate_db_name: designate
designate_rabbit_user: openstack
designate_rabbit_password: change-me
designate_rabbit_host: 127.0.0.1
tasks:
- name: Install Designate packages
ansible.builtin.apt:
update_cache: true
name:
- designate-api
- designate-central
- designate-worker
- designate-producer
- designate-mdns
- designate-sink
- python3-designateclient
state: present
failed_when: false
- name: Write baseline designate.conf
ansible.builtin.copy:
dest: /etc/designate/designate.conf
mode: "0640"
content: |
[DEFAULT]
transport_url = rabbit://{{ designate_rabbit_user }}:{{ designate_rabbit_password }}@{{ designate_rabbit_host }}:5672/
[service:api]
api_base_uri = http://127.0.0.1:9001/
[storage:sqlalchemy]
connection = mysql+pymysql://{{ designate_db_user }}:{{ designate_db_password }}@{{ designate_db_host }}/{{ designate_db_name }}
- name: Enable and start Designate services
ansible.builtin.systemd:
name: "{{ item }}"
enabled: true
state: started
loop:
- designate-api
- designate-central
- designate-worker
- designate-producer
- designate-mdns
- designate-sink
failed_when: false
- name: Install Designate on RHEL family
hosts: designate_rhel
become: true
vars:
designate_db_user: designate
designate_db_password: change-me
designate_db_host: 127.0.0.1
designate_db_name: designate
designate_rabbit_user: openstack
designate_rabbit_password: change-me
designate_rabbit_host: 127.0.0.1
tasks:
- name: Install Designate packages
ansible.builtin.dnf:
name:
- openstack-designate-api
- openstack-designate-central
- openstack-designate-worker
- openstack-designate-producer
- openstack-designate-mdns
- openstack-designate-sink
- python3-designateclient
state: present
failed_when: false
- name: Write baseline designate.conf
ansible.builtin.copy:
dest: /etc/designate/designate.conf
mode: "0640"
content: |
[DEFAULT]
transport_url = rabbit://{{ designate_rabbit_user }}:{{ designate_rabbit_password }}@{{ designate_rabbit_host }}:5672/
[service:api]
api_base_uri = http://127.0.0.1:9001/
[storage:sqlalchemy]
connection = mysql+pymysql://{{ designate_db_user }}:{{ designate_db_password }}@{{ designate_db_host }}/{{ designate_db_name }}
- name: Enable and start Designate services
ansible.builtin.systemd:
name: "{{ item }}"
enabled: true
state: started
loop:
- designate-api
- designate-central
- designate-worker
- designate-producer
- designate-mdns
- designate-sink
failed_when: false
ansible-playbook -i inventory.ini designate-install.yml
designate_debian inventory groupBefore running this playbook, ensure:
Designate requires complex OpenStack integration. We provide specialized Ansible automation services for Designate deployments, including Keystone integration, backend configurations, and production hardening. Contact office@linux-server-admin.com or visit our contact page.