Merge "Remove ImageBuilder::Elements from templates"
[apex-tripleo-heat-templates.git] / overcloud-source.yaml
index e219846..b8216cd 100644 (file)
@@ -252,6 +252,23 @@ Parameters:
     Default: []
     Description: Should be used for arbitrary ips.
     Type: Json
+  PublicVirtualFixedIPs:
+    Default: []
+    Description: |
+        Control the IP allocation for the PublicVirtualInterface port. E.g.
+        [{'ip_address':'1.2.3.4'}]
+    Type: Json
+  PublicVirtualInterface:
+    Default: 'br-ex'
+    Description: >
+        Specifies the interface where the public-facing virtual ip will be assigned.
+        This should be int_public when a VLAN is being used.
+    Type: String
+  PublicVirtualNetwork:
+    Default: 'ctlplane'
+    Type: String
+    Description: >
+        Neutron network to allocate public virtual IP port on.
   KeystoneCACertificate:
     Default: ''
     Description: Keystone self-signed certificate authority certificate.
@@ -277,25 +294,31 @@ Resources:
     Type: OS::Heat::RandomString
     Properties:
       length: 10
+  PublicVirtualIP:
+    Type: OS::Neutron::Port
+    Properties:
+      name: public_virtual_ip
+      network: {Ref: PublicVirtualNetwork}
+      fixed_ips:
+        Ref: PublicVirtualFixedIPs
   RabbitCookie:
     Type: OS::Heat::RandomString
     Properties:
       length: 20
       salt:
         Ref: RabbitCookieSalt
-  NovaCompute0Config:
+  NovaCompute0Deploy:
     Type: FileInclude
     Path: nova-compute-instance.yaml
     SubKey: Resources.NovaCompute0Deploy
     Parameters:
         NovaApiHost: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
         KeystoneHost: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
-        RabbitHost: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
         NeutronHost: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
         GlanceHost: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
         NovaDSN: {"Fn::Join": ['', ['mysql://nova:unset@', {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}, '/nova']]}
         CeilometerDSN: {"Fn::Join": ['', ['mysql://ceilometer:unset@', {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}, '/ceilometer']]}
-        NeutronDSN: {"Fn::Join": ['', ['mysql://neutron:unset@', {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}, '/neutron']]}
+        NeutronDSN: {"Fn::Join": ['', ['mysql://neutron:unset@', {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}, '/ovs_neutron']]}
         NeutronNetworkType: "gre"
         NeutronEnableTunnelling: "True"
         NeutronFlatNetworks:
@@ -307,69 +330,17 @@ Resources:
             Ref: HypervisorNeutronPublicInterface
         NeutronBridgeMappings:
             Ref: NeutronBridgeMappings
-        StaticHosts:
-          Fn::Join:
-          - "\n"
-          - - Fn::Join:
-              - "\n"
-              - Merge::Map:
-                  NovaCompute0:
-                    Fn::Join:
-                    - ' '
-                    - - Fn::Select:
-                        - 0
-                        - Fn::Select:
-                          - ctlplane
-                          - Fn::GetAtt:
-                            - NovaCompute0
-                            - networks
-                      - Fn::Select:
-                        - name
-                        - Fn::GetAtt:
-                          - NovaCompute0
-                          - show
-                      - Fn::Join:
-                        - '.'
-                        - - Fn::Select:
-                            - name
-                            - Fn::GetAtt:
-                              - NovaCompute0
-                              - show
-                          - 'novalocal'
-            - Fn::Join:
-              - "\n"
-              - Merge::Map:
-                  controller0:
-                    Fn::Join:
-                    - ' '
-                    - - Fn::Select:
-                        - 0
-                        - Fn::Select:
-                          - ctlplane
-                          - Fn::GetAtt:
-                            - controller0
-                            - networks
-                      - Fn::Select:
-                        - name
-                        - Fn::GetAtt:
-                          - controller0
-                          - show
-                      - Fn::Join:
-                        - '.'
-                        - - Fn::Select:
-                            - name
-                            - Fn::GetAtt:
-                              - controller0
-                              - show
-                          - 'novalocal'
-                      - {Ref: CloudName}
+  NovaCompute0AllNodes:
+    Type: FileInclude
+    Path: nova-compute-instance.yaml
+    SubKey: Resources.NovaCompute0AllNodesDeploy
+    Parameters:
+        AllNodesConfig: {Ref: allNodesConfig}
   NovaCompute0Passthrough:
-    Type: OS::Heat::StructuredDeployment
-    Properties:
-      config: {Ref: NovaComputePassthrough}
-      server: {Ref: NovaCompute0}
-      signal_transport: NO_SIGNAL
-      input_values:
+    Type: FileInclude
+    Path: nova-compute-instance.yaml
+    SubKey: Resources.NovaCompute0Passthrough
+    Parameters:
         passthrough_config: {Ref: ExtraConfig}
   NovaCompute0:
     Type: FileInclude
@@ -380,7 +351,6 @@ Resources:
     Properties:
       group: os-apply-config
       config:
-        completion-signal: {get_input: deploy_signal_id}
         admin-password:
           Ref: AdminPassword
         admin-token:
@@ -412,6 +382,17 @@ Resources:
             Ref: CinderISCSIHelper
         controller-address:
           get_input: controller_host
+        corosync:
+          bindnetaddr: {get_input: controller_host}
+          mcastport: 5577
+          nodes:
+            Merge::Map:
+              controller0:
+                ip: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [controller0, networks]} ]} ] }
+        pacemaker:
+          stonith_enabled : false
+          recheck_interval : 5
+          quorum_policy : ignore
         db-password: unset
         glance:
           registry:
@@ -419,7 +400,7 @@ Resources:
           backend: swift
           db: mysql://glance:unset@localhost/glance
           host:
-            get_input: controller_host
+            get_input: controller_virtual_ip
           port:
             Ref: GlancePort
           protocol:
@@ -444,11 +425,17 @@ Resources:
           watch_server_url: {get_input: heat.watch_server_url}
           metadata_server_url: {get_input: heat.metadata_server_url}
           waitcondition_server_url: {get_input: heat.waitcondition_server_url}
-        hosts: {get_input: hosts}
+        horizon:
+          caches:
+            memcached:
+              nodes:
+                Merge::Map:
+                  controller0:
+                    {"Fn::Select": [ name, {"Fn::GetAtt": [controller0, show]} ] }
         keystone:
           db: mysql://keystone:unset@localhost/keystone
           host:
-            get_input: controller_host
+            get_input: controller_virtual_ip
           ca_certificate: {Ref: KeystoneCACertificate}
           signing_key: {Ref: KeystoneSigningKey}
           signing_certificate: {Ref: KeystoneSigningCertificate}
@@ -506,8 +493,6 @@ Resources:
           service-password:
             Ref: NovaPassword
         rabbit:
-          host:
-            get_input: controller_host
           username:
             Ref: RabbitUserName
           password:
@@ -519,15 +504,44 @@ Resources:
         ntp:
           servers:
               - {server: {Ref: NtpServer}, fudge: "stratum 0"}
+        virtual_interfaces:
+          instances:
+            - vrrp_instance_name: VI_CONTROL
+              virtual_router_id: 51
+              keepalive_interface:
+                Ref: ControlVirtualInterface
+              priority: 101
+              virtual_ips:
+              - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
+                interface:
+                  Ref: ControlVirtualInterface
+            - vrrp_instance_name: VI_PUBLIC
+              virtual_router_id: 52
+              keepalive_interface:
+                Ref: PublicVirtualInterface
+              priority: 101
+              virtual_ips:
+              - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [PublicVirtualIP, fixed_ips]]]}
+                interface:
+                  Ref: PublicVirtualInterface
+          vrrp_sync_groups:
+            - name: VG1
+              members:
+                - VI_CONTROL
+                - VI_PUBLIC
         keepalived:
           keepalive_interface:
-            Ref: NeutronPublicInterface
+            Ref: PublicVirtualInterface
           priority: 101
         virtual_ips:
             -
               ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
               interface:
                 Ref: ControlVirtualInterface
+            -
+              ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [PublicVirtualIP, fixed_ips]]]}
+              interface:
+                Ref: PublicVirtualInterface
         haproxy:
           nodes:
             Merge::Map:
@@ -539,34 +553,50 @@ Resources:
           services:
             - name: keystone_admin
               port: 35357
+              net_binds: &public_binds
+                - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
+                - ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [PublicVirtualIP, fixed_ips]]]}
             - name: keystone_public
               port: 5000
+              net_binds: *public_binds
             - name: horizon
               port: 80
+              net_binds: *public_binds
             - name: neutron
               port: 9696
+              net_binds: *public_binds
             - name: cinder
               port: 8776
+              net_binds: *public_binds
             - name: glance_api
               port: 9292
+              net_binds: *public_binds
             - name: glance_registry
               port: 9191
+              net_binds: *public_binds
             - name: heat_api
               port: 8004
+              net_binds: *public_binds
             - name: heat_cloudwatch
               port: 8003
+              net_binds: *public_binds
             - name: heat_cfn
               port: 8000
+              net_binds: *public_binds
             - name: nova_ec2
               port: 8773
             - name: nova_osapi
               port: 8774
+              net_binds: *public_binds
             - name: nova_metadata
               port: 8775
+              net_binds: *public_binds
             - name: ceilometer
               port: 8777
+              net_binds: *public_binds
             - name: swift_proxy_server
               port: 8080
+              net_binds: *public_binds
   controllerPassthrough:
     Type: OS::Heat::StructuredConfig
     Properties:
@@ -583,10 +613,19 @@ Resources:
         Ref: OvercloudControlFlavor
       key_name:
         Ref: KeyName
+      networks:
+        - network: ctlplane
       user_data_format: SOFTWARE_CONFIG
+  controller0AllNodes:
+    DependsOn: [controller0Deployment,controller0SSLDeployment,controller0Swift,controller0Passthrough]
+    Type: OS::Heat::StructuredDeployment
+    Properties:
+      config: {Ref: allNodesConfig}
+      server: {Ref: controller0}
   controller0Deployment:
     Type: OS::Heat::StructuredDeployment
     Properties:
+      signal_transport: NO_SIGNAL
       config: {Ref: controllerConfig}
       server: {Ref: controller0}
       input_values:
@@ -604,6 +643,8 @@ Resources:
               - Fn::GetAtt:
                 - controller0
                 - networks
+        controller_virtual_ip:
+          {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
         heat.watch_server_url:
           Fn::Join:
             - ''
@@ -622,6 +663,11 @@ Resources:
             - - 'http://'
               - {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
               - ':8000/v1/waitcondition'
+  allNodesConfig:
+    Type: OS::Heat::StructuredConfig
+    Properties:
+      config:
+        completion-signal: {get_input: deploy_signal_id}
         hosts:
           Fn::Join:
           - "\n"
@@ -678,8 +724,13 @@ Resources:
                               - show
                           - 'novalocal'
                       - {Ref: CloudName}
-        controller_virtual_ip:
-          {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]}
+        rabbit:
+          nodes:
+            Fn::Join:
+              - ','
+              - Merge::Map:
+                  controller0:
+                    {"Fn::Select": [ name, {"Fn::GetAtt": [controller0, show]} ] }
   controller0SSLDeployment:
     Type: OS::Heat::StructuredDeployment
     Properties:
@@ -687,6 +738,14 @@ Resources:
       server: {Ref: controller0}
       signal_transport: NO_SIGNAL
       input_values:
+        controller_host:
+          Fn::Select:
+            - 0
+            - Fn::Select:
+              - ctlplane
+              - Fn::GetAtt:
+                - controller0
+                - networks
         ssl_certificate: {Ref: SSLCertificate}
         ssl_key: {Ref: SSLKey}
         ssl_ca_certificate: {Ref: SSLCACertificate}