From 0244ae08cd426a0419c9ce859dd1303d6e0ef412 Mon Sep 17 00:00:00 2001
From: Ben Nemec <bnemec@redhat.com>
Date: Thu, 19 Jul 2018 16:46:44 +0000
Subject: [PATCH] Add sample designate environment for ha

The pool configuration for an ha deployment of designate looks quite
a bit different from the nonha one, so it's useful to provide a
separate example environment for it.

Change-Id: I69b3c44b368bab3fff885e67fa6523fbb1c80347
---
 environments/enable-designate-ha.yaml     | 137 ++++++++++++++++++++++
 sample-env-generator/enable-services.yaml | 109 +++++++++++++++++
 2 files changed, 246 insertions(+)
 create mode 100644 environments/enable-designate-ha.yaml

diff --git a/environments/enable-designate-ha.yaml b/environments/enable-designate-ha.yaml
new file mode 100644
index 0000000000..fc9243c546
--- /dev/null
+++ b/environments/enable-designate-ha.yaml
@@ -0,0 +1,137 @@
+# *******************************************************************
+# This file was created automatically by the sample environment
+# generator. Developers should use `tox -e genconfig` to update it.
+# Users are recommended to make changes to a copy of the file instead
+# of the original, if any customizations are needed.
+# *******************************************************************
+# title: Enable Designate Service
+# description: |
+#   EXPERIMENTAL: This service is not considered ready for production and
+#   should only be used for development and test purposes at this time.
+#   
+#   This environment enables the Designate services and provides sample
+#   configuration values for other services to allow them to integrate with
+#   Designate.
+parameter_defaults:
+  # The content for Designate's pools.yaml
+  # Mandatory. This parameter must be set by the user.
+  # Type: string
+  DesignatePools: |
+    - name: default
+      # The name is immutable. There will be no option to change the name after
+      # creation and the only way will to change it will be to delete it
+      # (and all zones associated with it) and recreate it.
+      description: Default Pool
+
+      attributes: {}
+
+      # List out the NS records for zones hosted within this pool
+      # This should be a record that is created outside of designate, that
+      # points to the public IP of the controller node.
+      ns_records:
+        - hostname: ns1-1.example.org.
+          priority: 1
+        - hostname: ns1-2.example.org.
+          priority: 2
+        - hostname: ns1-3.example.org.
+          priority: 3
+
+      # List out the nameservers for this pool. These are the actual BIND servers.
+      # We use these to verify changes have propagated to all nameservers.
+      nameservers:
+        - host: 10.0.0.51
+          port: 53
+        - host: 10.0.0.52
+          port: 53
+        - host: 10.0.0.53
+          port: 53
+
+      # List out the targets for this pool. For BIND there will be one
+      # entry for each BIND server, as we have to run rndc command on each server
+      targets:
+        - type: bind9
+          description: BIND9 Server 1
+
+          # List out the designate-mdns servers from which BIND servers should
+          # request zone transfers (AXFRs) from.
+          # This should be the IP of the controller node.
+          # If you have multiple controllers you can add multiple masters
+          # by running designate-mdns on them, and adding them here.
+          masters:
+            - host: 10.0.0.51
+              port: 5354
+            - host: 10.0.0.52
+              port: 5354
+            - host: 10.0.0.53
+              port: 5354
+
+          # BIND Configuration options
+          options:
+            host: 10.0.0.51
+            port: 53
+            rndc_host: 172.17.0.251
+            rndc_port: 953
+            rndc_key_file: /etc/rndc.key
+        - type: bind9
+          description: BIND9 Server 2
+
+          # List out the designate-mdns servers from which BIND servers should
+          # request zone transfers (AXFRs) from.
+          # This should be the IP of the controller node.
+          # If you have multiple controllers you can add multiple masters
+          # by running designate-mdns on them, and adding them here.
+          masters:
+            - host: 10.0.0.51
+              port: 5354
+            - host: 10.0.0.52
+              port: 5354
+            - host: 10.0.0.53
+              port: 5354
+
+          # BIND Configuration options
+          options:
+            host: 10.0.0.52
+            port: 53
+            rndc_host: 172.17.0.252
+            rndc_port: 953
+            rndc_key_file: /etc/rndc.key
+        - type: bind9
+          description: BIND9 Server 3
+
+          # List out the designate-mdns servers from which BIND servers should
+          # request zone transfers (AXFRs) from.
+          # This should be the IP of the controller node.
+          # If you have multiple controllers you can add multiple masters
+          # by running designate-mdns on them, and adding them here.
+          masters:
+            - host: 10.0.0.51
+              port: 5354
+            - host: 10.0.0.52
+              port: 5354
+            - host: 10.0.0.53
+              port: 5354
+
+          # BIND Configuration options
+          options:
+            host: 10.0.0.53
+            port: 53
+            rndc_host: 172.17.0.253
+            rndc_port: 953
+            rndc_key_file: /etc/rndc.key
+
+  # If True, enable the internal Neutron DNS server that provides name
+  # resolution between VMs.  This parameter has no effect if
+  # NeutronDhcpAgentDnsmasqDnsServers is set.
+  # Type: boolean
+  NeutronEnableInternalDNS: True
+
+  # Comma-separated list of extensions enabled for the Neutron plugin.
+  # Type: comma_delimited_list
+  NeutronPluginExtensions: qos,port_security,dns
+
+resource_registry:
+  OS::TripleO::Services::DesignateApi: ../docker/services/designate-api.yaml
+  OS::TripleO::Services::DesignateCentral: ../docker/services/designate-central.yaml
+  OS::TripleO::Services::DesignateMDNS: ../docker/services/designate-mdns.yaml
+  OS::TripleO::Services::DesignateProducer: ../docker/services/designate-producer.yaml
+  OS::TripleO::Services::DesignateWorker: ../docker/services/designate-worker.yaml
diff --git a/sample-env-generator/enable-services.yaml b/sample-env-generator/enable-services.yaml
index 6ed92d5413..560f897a7f 100644
--- a/sample-env-generator/enable-services.yaml
+++ b/sample-env-generator/enable-services.yaml
@@ -73,3 +73,112 @@ environments:
                     rndc_host: 172.17.0.251
                     rndc_port: 953
                     rndc_key_file: /etc/rndc.key
+    children:
+      -
+        name: enable-designate-ha
+        sample_values:
+          NeutronPluginExtensions: qos,port_security,dns
+          NeutronEnableInternalDNS: True
+          DesignatePools: |-
+            |
+                - name: default
+                  # The name is immutable. There will be no option to change the name after
+                  # creation and the only way will to change it will be to delete it
+                  # (and all zones associated with it) and recreate it.
+                  description: Default Pool
+
+                  attributes: {}
+
+                  # List out the NS records for zones hosted within this pool
+                  # This should be a record that is created outside of designate, that
+                  # points to the public IP of the controller node.
+                  ns_records:
+                    - hostname: ns1-1.example.org.
+                      priority: 1
+                    - hostname: ns1-2.example.org.
+                      priority: 2
+                    - hostname: ns1-3.example.org.
+                      priority: 3
+
+                  # List out the nameservers for this pool. These are the actual BIND servers.
+                  # We use these to verify changes have propagated to all nameservers.
+                  nameservers:
+                    - host: 10.0.0.51
+                      port: 53
+                    - host: 10.0.0.52
+                      port: 53
+                    - host: 10.0.0.53
+                      port: 53
+
+                  # List out the targets for this pool. For BIND there will be one
+                  # entry for each BIND server, as we have to run rndc command on each server
+                  targets:
+                    - type: bind9
+                      description: BIND9 Server 1
+
+                      # List out the designate-mdns servers from which BIND servers should
+                      # request zone transfers (AXFRs) from.
+                      # This should be the IP of the controller node.
+                      # If you have multiple controllers you can add multiple masters
+                      # by running designate-mdns on them, and adding them here.
+                      masters:
+                        - host: 10.0.0.51
+                          port: 5354
+                        - host: 10.0.0.52
+                          port: 5354
+                        - host: 10.0.0.53
+                          port: 5354
+
+                      # BIND Configuration options
+                      options:
+                        host: 10.0.0.51
+                        port: 53
+                        rndc_host: 172.17.0.251
+                        rndc_port: 953
+                        rndc_key_file: /etc/rndc.key
+                    - type: bind9
+                      description: BIND9 Server 2
+
+                      # List out the designate-mdns servers from which BIND servers should
+                      # request zone transfers (AXFRs) from.
+                      # This should be the IP of the controller node.
+                      # If you have multiple controllers you can add multiple masters
+                      # by running designate-mdns on them, and adding them here.
+                      masters:
+                        - host: 10.0.0.51
+                          port: 5354
+                        - host: 10.0.0.52
+                          port: 5354
+                        - host: 10.0.0.53
+                          port: 5354
+
+                      # BIND Configuration options
+                      options:
+                        host: 10.0.0.52
+                        port: 53
+                        rndc_host: 172.17.0.252
+                        rndc_port: 953
+                        rndc_key_file: /etc/rndc.key
+                    - type: bind9
+                      description: BIND9 Server 3
+
+                      # List out the designate-mdns servers from which BIND servers should
+                      # request zone transfers (AXFRs) from.
+                      # This should be the IP of the controller node.
+                      # If you have multiple controllers you can add multiple masters
+                      # by running designate-mdns on them, and adding them here.
+                      masters:
+                        - host: 10.0.0.51
+                          port: 5354
+                        - host: 10.0.0.52
+                          port: 5354
+                        - host: 10.0.0.53
+                          port: 5354
+
+                      # BIND Configuration options
+                      options:
+                        host: 10.0.0.53
+                        port: 53
+                        rndc_host: 172.17.0.253
+                        rndc_port: 953
+                        rndc_key_file: /etc/rndc.key