WIP: Add Designate

Sem-Ver: feature
Change-Id: Idd18443fe0cd5b0df352f88e554d1f2db3404db5
diff --git a/playbooks/openstack.yml b/playbooks/openstack.yml
index fb422c8..9d7f0cf 100644
--- a/playbooks/openstack.yml
+++ b/playbooks/openstack.yml
@@ -81,6 +81,10 @@
       tags:
         - openstack-helm-placement
 
+    - role: openstack_helm_designate
+      tags:
+        - openstack-helm-designate
+
     - role: openstack_helm_infra_openvswitch
       tags:
         - openstack-helm-infra-openvswitch
diff --git a/releasenotes/notes/add_designate-73b91c9514f92c22.yaml b/releasenotes/notes/add_designate-73b91c9514f92c22.yaml
new file mode 100644
index 0000000..58c3143
--- /dev/null
+++ b/releasenotes/notes/add_designate-73b91c9514f92c22.yaml
@@ -0,0 +1,2 @@
+---
+features: Add Designate
diff --git a/roles/openstack_helm_designate/defaults/main.yml b/roles/openstack_helm_designate/defaults/main.yml
new file mode 100644
index 0000000..99701e6
--- /dev/null
+++ b/roles/openstack_helm_designate/defaults/main.yml
@@ -0,0 +1,61 @@
+---
+# .. vim: foldmarker=[[[,]]]:foldmethod=marker
+
+# .. Copyright (C) 2022 VEXXHOST, Inc.
+# .. SPDX-License-Identifier: Apache-2.0
+
+# Default variables
+# =================
+
+# .. contents:: Sections
+#    :local:
+
+
+# .. envvar:: openstack_helm_designate_chart_repo_name [[[
+#
+# Helm repository name for the chart.
+openstack_helm_designate_chart_repo_name: openstack-helm
+
+                                                                   # ]]]
+# .. envvar:: openstack_helm_designate_chart_repo_url [[[
+#
+# Helm repository URL for the chart.
+openstack_helm_designate_chart_repo_url: https://tarballs.opendev.org/openstack/openstack-helm/
+
+                                                                   # ]]]
+# .. envvar:: openstack_helm_designate_chart_name [[[
+#
+# Helm chart name (will also be used for release name)
+openstack_helm_designate_chart_name: designate
+
+                                                                   # ]]]
+# .. envvar:: openstack_helm_designate_image_repository [[[
+#
+# Image repository location to be prefixed for all images
+openstack_helm_designate_image_repository: "{{ atmosphere_image_repository | default('us-docker.pkg.dev/vexxhost-infra/openstack') }}"
+
+                                                                   # ]]]
+# .. envvar:: openstack_helm_designate_image_tag [[[
+#
+# Image tag for container
+openstack_helm_designate_image_tag: 0.2.5
+
+                                                                   # ]]]
+# .. envvar:: openstack_helm_designate_heat_image_tag [[[
+#
+# Image tag for Heat to be used for jobs running via Helm hooks
+openstack_helm_designate_heat_image_tag: wallaby
+
+                                                                   # ]]]
+# .. envvar:: openstack_helm_designate_values [[[
+#
+# Overrides for Helm chart values
+openstack_helm_designate_values: {}
+
+                                                                   # ]]]
+# .. envvar:: openstack_helm_designate_ingress_annotations [[[
+#
+# Ingress annotations
+openstack_helm_designate_ingress_annotations: {}
+
+                                                                   # ]]]
diff --git a/roles/openstack_helm_designate/meta/main.yml b/roles/openstack_helm_designate/meta/main.yml
new file mode 100644
index 0000000..ed691c4
--- /dev/null
+++ b/roles/openstack_helm_designate/meta/main.yml
@@ -0,0 +1,29 @@
+# Copyright (c) 2022 VEXXHOST, Inc.
+#
+# 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.
+
+galaxy_info:
+  author: VEXXHOST, Inc.
+  description: Ansible role for OpenStack designate
+  license: Apache-2.0
+  min_ansible_version: 5.5.0
+  platforms:
+    - name: Ubuntu
+      versions:
+        - focal
+
+dependencies:
+  - role: helm_repository
+    vars:
+      helm_repository_name: "{{ openstack_helm_designate_chart_repo_name }}"
+      helm_repository_repo_url: "{{ openstack_helm_designate_chart_repo_url }}"
diff --git a/roles/openstack_helm_designate/tasks/main.yml b/roles/openstack_helm_designate/tasks/main.yml
new file mode 100644
index 0000000..7fd7300
--- /dev/null
+++ b/roles/openstack_helm_designate/tasks/main.yml
@@ -0,0 +1,39 @@
+# Copyright (c) 2022 VEXXHOST, Inc.
+#
+# 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.
+
+- name: Generate OpenStack-Helm endpoints
+  ansible.builtin.include_role:
+    name: openstack_helm_endpoints
+  vars:
+    openstack_helm_endpoints_repo_name: "{{ openstack_helm_designate_chart_repo_name }}"
+    openstack_helm_endpoints_repo_url: "{{ openstack_helm_designate_chart_repo_url }}"
+    openstack_helm_endpoints_chart: "{{ openstack_helm_designate_chart_name }}"
+
+- name: Deploy Helm chart
+  kubernetes.core.helm:
+    name: "{{ openstack_helm_designate_chart_name }}"
+    chart_ref: "{{ openstack_helm_designate_chart_repo_name }}/{{ openstack_helm_designate_chart_name }}"
+    chart_version: 0.2.5
+    release_namespace: openstack
+    kubeconfig: /etc/kubernetes/admin.conf
+    values: "{{ _openstack_helm_designate_values | combine(openstack_helm_designate_values, recursive=True) }}"
+
+- name: Create Ingress
+  ansible.builtin.include_role:
+    name: openstack_helm_ingress
+  vars:
+    openstack_helm_ingress_endpoint: designate
+    openstack_helm_ingress_service_name: designate-api
+    openstack_helm_ingress_service_port: 8778
+    openstack_helm_ingress_annotations: "{{ openstack_helm_designate_ingress_annotations }}"
diff --git a/roles/openstack_helm_designate/vars/main.yml b/roles/openstack_helm_designate/vars/main.yml
new file mode 100644
index 0000000..177b79b
--- /dev/null
+++ b/roles/openstack_helm_designate/vars/main.yml
@@ -0,0 +1,33 @@
+# Copyright (c) 2022 VEXXHOST, Inc.
+#
+# 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.
+
+_openstack_helm_designate_values:
+  endpoints: "{{ openstack_helm_endpoints }}"
+  images:
+    tags:
+      bootstrap: "{{ openstack_helm_designate_image_repository }}/heat:{{ openstack_helm_designate_heat_image_tag }}"
+      db_init: "{{ openstack_helm_designate_image_repository }}/heat:{{ openstack_helm_designate_heat_image_tag }}"
+      db_drop: "{{ openstack_helm_designate_image_repository }}/heat:{{ openstack_helm_designate_heat_image_tag }}"
+      rabbit_init: "{{ openstack_helm_designate_image_repository }}/rabbitmq:3.8.23-management"
+      ks_user: "{{ openstack_helm_designate_image_repository }}/heat:{{ openstack_helm_designate_heat_image_tag }}"
+      ks_service: "{{ openstack_helm_designate_image_repository }}/heat:{{ openstack_helm_designate_heat_image_tag }}"
+      ks_endpoints: "{{ openstack_helm_designate_image_repository }}/heat:{{ openstack_helm_designate_heat_image_tag }}"
+      dep_check: "{{ openstack_helm_designate_image_repository }}/kubernetes-entrypoint:latest"
+      designate_db_sync: "{{ openstack_helm_designate_image_repository }}/designate:{{ openstack_helm_designate_image_tag }}"
+      designate_api: "{{ openstack_helm_designate_image_repository }}/designate:{{ openstack_helm_designate_image_tag }}"
+      designate_central: "{{ openstack_helm_designate_image_repository }}/designate:{{ openstack_helm_designate_image_tag }}"
+      designate_mdns: "{{ openstack_helm_designate_image_repository }}/designate:{{ openstack_helm_designate_image_tag }}"
+      designate_worker: "{{ openstack_helm_designate_image_repository }}/designate:{{ openstack_helm_designate_image_tag }}"
+      designate_producer: "{{ openstack_helm_designate_image_repository }}/designate:{{ openstack_helm_designate_image_tag }}"
+      designate_sink: "{{ openstack_helm_designate_image_repository }}/designate:{{ openstack_helm_designate_image_tag }}"
diff --git a/roles/openstack_helm_endpoints/vars/main.yml b/roles/openstack_helm_endpoints/vars/main.yml
index 2b8632b..d86cb48 100644
--- a/roles/openstack_helm_endpoints/vars/main.yml
+++ b/roles/openstack_helm_endpoints/vars/main.yml
@@ -301,6 +301,35 @@
       designate:
         password: "{{ openstack_helm_endpoints_designate_rabbitmq_password }}"
 
+_openstack_helm_endpoints_mdns:
+  name: minidns
+  hosts:
+    default: minidns
+    public: designate-mdns
+  host_fqdn_override:
+    default: "{{ openstack_helm_endpoints_designate_api_host }}"
+  path:
+    default: /
+  scheme:
+    default: 'tcp'
+  port:
+    ipc:
+      default: 5354
+
+_openstack_helm_endpoints_powerdns:
+  auth:
+    service:
+      token: chiave_segreta
+  hosts:
+    default: powerdns
+  host_fqdn_override:
+    default: "{{ openstack_helm_endpoints_designate_api_host }}"
+  port:
+    powerdns_api:
+      default: 8081
+    powerdns:
+      default: 53
+
 _openstack_helm_endpoints_load_balancer:
   identity:
     auth: