Update overcloud to support N compute hosts.
[apex-tripleo-heat-templates.git] / overcloud-source.yaml
index 8cb4596..6192cc1 100644 (file)
@@ -11,6 +11,7 @@ Parameters:
     Default: unset
     Description: The keystone auth secret.
     Type: String
+    NoEcho: true
   CinderPassword:
     Default: unset
     Description: The password for the cinder service account, used by cinder-api.
@@ -30,15 +31,38 @@ Parameters:
     Description: The password for the Heat service account, used by the Heat services.
     Type: String
     NoEcho: true
+  ImageUpdatePolicy:
+    Default: 'REPLACE'
+    Description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
+    Type: String
   KeyName:
     Default: default
     Description: Name of an existing EC2 KeyPair to enable SSH access to the instances
     Type: String
+  NeutronBridgeMappings:
+    Description: The OVS logical->physical bridge mappings to use.
+    Type: String
+    Default: ''
   NeutronPassword:
     Default: unset
     Description: The password for the neutron service account, used by neutron agents.
     Type: String
     NoEcho: true
+  CeilometerComputeAgent:
+    Description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
+    Type: String
+    Default: ''
+    AllowedValues: ['', Present]
+  CeilometerMeteringSecret:
+    Default: unset
+    Description: Secret shared by the ceilometer services.
+    Type: String
+    NoEcho: true
+  CeilometerPassword:
+    Default: unset
+    Description: The password for the ceilometer service account.
+    Type: String
+    NoEcho: true
   NovaComputeDriver:
     Default: libvirt.LibvirtDriver
     Type: String
@@ -57,9 +81,28 @@ Parameters:
     Default: stack
     Description: What username to ssh to the virtual power host with.
     Type: String
+  NeutronPublicInterface:
+    Default: eth0
+    Description: What interface to bridge onto br-ex for network nodes.
+    Type: String
+  NeutronPublicInterfaceDefaultRoute:
+    Default: ''
+    Description: A custom default route for the NeutronPublicInterface.
+    Type: String
+  NeutronPublicInterfaceIP:
+    Default: ''
+    Description: A custom IP address to put onto the NeutronPublicInterface.
+    Type: String
+  NeutronPublicInterfaceRawDevice:
+    Default: ''
+    Description: If set, the public interface is a vlan with this device as the raw device.
+    Type: String
   notcomputeImage:
     Type: String
     Default: overcloud-control
+  NtpServer:
+    Type: String
+    Default: ''
 Resources:
   AccessPolicy:
     Properties:
@@ -86,12 +129,19 @@ Resources:
       Count: '1'
       Timeout: '1800'
   CompletionHandle:
-    Type: AWS::CloudFormation::WaitConditionHandle
-  ComputeKey:
-    Properties:
-      UserName:
-        Ref: ComputeUser
-    Type: AWS::IAM::AccessKey
+    Type: OS::Heat::UpdateWaitConditionHandle
+  NovaCompute0Key:
+    Type: FileInclude
+    Path: nova-compute-instance.yaml
+    SubKey: Resources.NovaCompute0Key
+  NovaCompute0CompletionCondition:
+    Type: FileInclude
+    Path: nova-compute-instance.yaml
+    SubKey: Resources.NovaCompute0CompletionCondition
+  NovaCompute0CompletionHandle:
+    Type: FileInclude
+    Path: nova-compute-instance.yaml
+    SubKey: Resources.NovaCompute0CompletionHandle
   ComputeUser:
     Properties:
       Policies:
@@ -108,11 +158,13 @@ Resources:
         NeutronHost: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [notcompute, networks]} ]} ] }
         GlanceHost: {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [notcompute, networks]} ]} ] }
         NovaDSN: {"Fn::Join": ['', ['mysql://nova:unset@', {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [notcompute, networks]} ]} ]}, '/nova']]}
+        CeilometerDSN: {"Fn::Join": ['', ['mysql://ceilometer:unset@', {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [notcompute, networks]} ]} ]}, '/ceilometer']]}
         NeutronDSN: {"Fn::Join": ['', ['mysql://neutron:unset@', {"Fn::Select": [ 0, {"Fn::Select": [ "ctlplane", {"Fn::GetAtt": [notcompute, networks]} ]} ]}, '/neutron']]}
         NeutronNetworkType: "gre"
         NeutronEnableTunnelling: "True"
         NeutronNetworkVLANRanges: ""
-        NeutronBridgeMappings: ""
+        NeutronBridgeMappings:
+            Ref: NeutronBridgeMappings
         RabbitPassword: "guest"
   NovaCompute0:
     Type: FileInclude
@@ -130,7 +182,7 @@ Resources:
       InstanceType: '0'
     Metadata:
       OpenStack::Heat::Stack: {}
-      Openstack::ImageBuilder::Elements:
+      OpenStack::ImageBuilder::Elements:
       - boot-stack
       - heat-cfntools
       - heat-localip
@@ -139,6 +191,9 @@ Resources:
         Ref: AdminPassword
       admin-token:
         Ref: AdminToken
+      bootstack:
+        public_interface_ip:
+          Ref: NeutronPublicInterfaceIP
       cinder:
         db: mysql://cinder:unset@localhost/cinder
         volume_size_mb: '5000'
@@ -156,6 +211,7 @@ Resources:
                - networks
       db-password: unset
       glance:
+        backend: swift
         db: mysql://glance:unset@localhost/glance
         host:
           Fn::Select:
@@ -167,17 +223,9 @@ Resources:
                  - networks
         service-password:
           Ref: GlancePassword
-      os-collect-config:
-        cfn:
-          access_key_id:
-            Ref: Key
-          path: notcomputeConfig.Metadata
-          secret_access_key:
-            Fn::GetAtt:
-            - Key
-            - SecretAccessKey
-          stack_name:
-            Ref: AWS::StackName
+        swift-store-user: service:glance
+        swift-store-key:
+          Ref: GlancePassword
       heat:
         admin_password:
           Ref: HeatPassword
@@ -185,7 +233,7 @@ Resources:
         admin_user: heat
         auth_encryption_key: unset___________
         db: mysql://heat:unset@localhost/heat
-        heat_watch_server_url:
+        watch_server_url:
           Fn::Join:
             - ''
             - - 'http://'
@@ -231,20 +279,6 @@ Resources:
               - Fn::GetAtt:
                 - notcompute
                 - networks
-      nova:
-        compute_driver: libvirt.LibvirtDriver
-        db: mysql://nova:unset@localhost/nova
-        host:
-          Fn::Select:
-            - 0
-            - Fn::Select:
-              - 'ctlplane'
-              - Fn::GetAtt:
-                - notcompute
-                - networks
-        metadata-proxy: true
-        service-password:
-          Ref: NovaPassword
       neutron:
         host:
           Fn::Select:
@@ -265,12 +299,50 @@ Resources:
                 - Fn::GetAtt:
                   - notcompute
                   - networks
-          public_interface: eth0
+          bridge_mappings: {Ref: NeutronBridgeMappings}
+          public_interface:
+            Ref: NeutronPublicInterface
+          public_interface_raw_device:
+            Ref: NeutronPublicInterfaceRawDevice
+          public_interface_route:
+            Ref: NeutronPublicInterfaceDefaultRoute
           physical_bridge: br-ex
           tenant_network_type: gre
         ovs_db: mysql://neutron:unset@localhost/ovs_neutron?charset=utf8
         service-password:
           Ref: NeutronPassword
+      ceilometer:
+        db: mysql://ceilometer:unset@localhost/ceilometer
+        metering_secret: {Ref: CeilometerMeteringSecret}
+        service-password:
+          Ref: CeilometerPassword
+      nova:
+        compute_driver: libvirt.LibvirtDriver
+        db: mysql://nova:unset@localhost/nova
+        default_floating_pool:
+          ext-net
+        host:
+          Fn::Select:
+            - 0
+            - Fn::Select:
+              - 'ctlplane'
+              - Fn::GetAtt:
+                - notcompute
+                - networks
+        metadata-proxy: true
+        service-password:
+          Ref: NovaPassword
+      os-collect-config:
+        cfn:
+          access_key_id:
+            Ref: Key
+          path: notcomputeConfig.Metadata
+          secret_access_key:
+            Fn::GetAtt:
+            - Key
+            - SecretAccessKey
+          stack_name:
+            Ref: AWS::StackName
       rabbit:
         host:
           Fn::Select:
@@ -281,11 +353,16 @@ Resources:
                 - notcompute
                 - networks
         password: guest
+      ntp:
+        servers:
+            - {server: {Ref: NtpServer}, fudge: "stratum 0"}
   notcompute:
     Type: OS::Nova::Server
     Properties:
       image:
         Ref: notcomputeImage
+      image_update_policy:
+        Ref: ImageUpdatePolicy
       flavor:
         Ref: Flavor
       key_name:
@@ -302,3 +379,18 @@ Resources:
             - SecretAccessKey
           stack_name:
             Ref: AWS::StackName
+Outputs:
+  KeystoneURL:
+    Description: URL for the Overcloud Keystone service
+    Value:
+      Fn::Join:
+      - ''
+      - - http://
+        - Fn::Select:
+          - 0
+          - Fn::Select:
+            - ctlplane
+            - Fn::GetAtt:
+              - notcompute
+              - networks
+        - :5000/v2.0/