Merge "Adding NTP to undercloud template"
[apex-tripleo-heat-templates.git] / nova-compute-instance.yaml
index b5a4b34..92e9a01 100644 (file)
 HeatTemplateFormatVersion: '2012-12-12'
 Description: 'Nova Compute'
 Parameters:
+  AdminPassword:
+    Default: unset
+    Description: The password for the keystone admin account, used for monitoring, querying neutron etc.
+    Type: String
+    NoEcho: true
   KeyName: 
     Description: Name of an existing EC2 KeyPair to enable SSH access to the instances
     Type: String
     Default: default
-  InstanceType:
+  OvercloudComputeFlavor:
     Description: Use this flavor
     Type: String
     Default: baremetal
+  ImageUpdatePolicy:
+    Default: 'REBUILD_PRESERVE_EPHEMERAL'
+    Description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
+    Type: String
   NovaImage:
     Type: String
+    Default: overcloud-compute
   KeystoneHost:
     Type: String
-  ServicePassword:
-    Description: admin_password for setting up auth in nova.
+  NeutronFlatNetworks:
+    Type: String
+    Default: ''
+    Description: If set, flat networks to configure in neutron plugins.
+  NeutronHost:
     Type: String
-  QuantumHost:
+  NeutronPhysicalBridge:
+    Default: ''
+    Description: An OVS bridge to create for accessing external networks.
+    Type: String
+  NeutronPublicInterface:
+    Default: ''
+    Description: A port to add to the NeutronPhysicalBridge.
     Type: String
   RabbitHost:
     Type: String
+  RabbitUserName:
+    Type: String
   RabbitPassword:
     Type: String
-  NovaInterfaces:
+    NoEcho: true
+  CeilometerComputeAgent:
+    Description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
     Type: String
-    Default: eth0
+    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:
     Type: String
     Default: libvirt.LibvirtDriver
+  NovaComputeLibvirtType:
+    Type: String
+    Default: ''
   NovaApiHost:
     Type: String
+  NovaPassword:
+    Default: unset
+    Description: The password for the nova service account, used by nova-api.
+    Type: String
+    NoEcho: true
   GlanceHost:
     Type: String
+  CeilometerDSN:
+    Type: String
   NovaDSN:
     Type: String
-  QuantumDSN:
+  NeutronDSN:
     Type: String
-  QuantumBridgeMappings:
+  NeutronBridgeMappings:
     Type: String
-  QuantumNetworkVLANRanges:
+  NeutronNetworkVLANRanges:
     Type: String
-  QuantumNetworkType:
+  NeutronNetworkType:
     Type: String
-  QuantumEnableTunnelling:
+  NeutronEnableTunnelling:
     Type: String
+  StaticHosts:
+    Default: ''
+    Description: Static content to append to /etc/hosts
+    Type: String
+  LiveUpdateUserName:
+    Type: String
+    Description: The live-update username for the undercloud Glance API.
+    Default: ''
+  LiveUpdateTenantName:
+    Type: String
+    Description: The live-update tenant name for the undercloud Glance API.
+    Default: ''
+  LiveUpdateHost:
+    Type: String
+    Description: The IP address for the undercloud Glance API.
+    Default: ''
+  LiveUpdatePassword:
+    Type: String
+    Default: ''
+    Description: The live-update password for the undercloud Glance API.
+    NoEcho: true
+  LiveUpdateComputeImage:
+    Type: String
+    Description: The image ID for live-updates to the overcloud compute nodes.
+    Default: ''
 Resources:
-  AccessPolicy:
+  ComputeAccessPolicy:
     Type: OS::Heat::AccessPolicy
     Properties:
-      AllowedResources: [ NovaCompute ]
-  User:
+      AllowedResources: [ NovaCompute0 ]
+  ComputeUser:
     Type: AWS::IAM::User
     Properties:
-      Policies: [ { Ref: AccessPolicy } ]
-  Key:
+      Policies: [ { Ref: ComputeAccessPolicy } ]
+  NovaCompute0Key:
     Type: AWS::IAM::AccessKey
     Properties:
       UserName:
-        Ref: User
-  NovaCompute:
-    Type: AWS::EC2::Instance
+        Ref: ComputeUser
+  NovaCompute0CompletionCondition:
+    Type: AWS::CloudFormation::WaitCondition
+    DependsOn: notCompute0Config
+    Properties:
+      Handle: {Ref: NovaCompute0CompletionHandle}
+      Count: '1'
+      Timeout: '1800'
+  NovaCompute0CompletionHandle:
+    Type: AWS::CloudFormation::WaitConditionHandle
+  NovaCompute0:
+    Type: OS::Nova::Server
     Properties:
-      ImageId:
+      image:
         {Ref: NovaImage}
-      InstanceType: {Ref: InstanceType}
-      KeyName: {Ref: KeyName}
+      image_update_policy:
+        Ref: ImageUpdatePolicy
+      flavor: {Ref: OvercloudComputeFlavor}
+      key_name: {Ref: KeyName}
     Metadata:
+      os-collect-config:
+        cfn:
+          access_key_id:
+            Ref: NovaCompute0Key
+          secret_access_key:
+            Fn::GetAtt: [ NovaCompute0Key, SecretAccessKey ]
+          stack_name: {Ref: 'AWS::StackName'}
+          path: NovaCompute0Config.Metadata
       OpenStack::ImageBuilder::Elements: [ nova-compute ]
-      heat: 
-        access_key_id:
-          Ref: Key
-        secret_key:
-          Fn::GetAtt: [ Key, SecretAccessKey ]
-        stack:
-          name: {Ref: 'AWS::StackName'}
-          region: {Ref: 'AWS::Region'}
-        refresh:
-          - resource: NovaCompute
+  NovaCompute0Config:
+    Type: AWS::AutoScaling::LaunchConfiguration
+    Properties:
+      InstanceType: '0'
+      ImageId: '0'
+    Metadata:
+      completion-handle:
+        Ref: NovaCompute0CompletionHandle
+      os-collect-config:
+        cfn:
+          access_key_id:
+            Ref: NovaCompute0Key
+          secret_access_key:
+            Fn::GetAtt: [ NovaCompute0Key, SecretAccessKey ]
+          stack_name: {Ref: 'AWS::StackName'}
+          path: NovaCompute0Config.Metadata
       nova:
         compute_driver: {Ref: NovaComputeDriver}
+        compute_libvirt_type: {Ref: NovaComputeLibvirtType}
         db: {Ref: NovaDSN}
         host: {Ref: NovaApiHost}
+        service-password:
+          Ref: NovaPassword
+      ceilometer:
+        db: {Ref: CeilometerDSN}
+        metering_secret: {Ref: CeilometerMeteringSecret}
+        service-password: {Ref: CeilometerPassword}
+        compute_agent: {Ref: CeilometerComputeAgent}
       glance:
         host: {Ref: GlanceHost}
+      hosts: {Ref: StaticHosts}
       keystone:
         host: {Ref: KeystoneHost}
-      quantum:
-        host: {Ref: QuantumHost}
-        ovs_db: {Ref: QuantumDSN}
+      neutron:
+        flat-networks: {Ref: NeutronFlatNetworks}
+        host: {Ref: NeutronHost}
+        ovs_db: {Ref: NeutronDSN}
         ovs:
-          local_ip: 0.0.0.0
-          tenant_network_type: {Ref: QuantumNetworkType}
-          network_vlan_ranges: {Ref: QuantumNetworkVLANRanges}
-          bridge_mappings: {Ref: QuantumBridgeMappings}
-          enable_tunneling: {Ref: QuantumEnableTunnelling}
-
-      service-password: {Ref: ServicePassword}
-      admin-password: {Ref: ServicePassword}
+          local_ip:
+            Fn::Select:
+              - 0
+              - Fn::Select:
+                - ctlplane
+                - Fn::GetAtt:
+                  - NovaCompute0
+                  - networks
+          tenant_network_type: {Ref: NeutronNetworkType}
+          network_vlan_ranges: {Ref: NeutronNetworkVLANRanges}
+          bridge_mappings: {Ref: NeutronBridgeMappings}
+          enable_tunneling: {Ref: NeutronEnableTunnelling}
+          physical_bridge: {Ref: NeutronPhysicalBridge}
+          public_interface: {Ref: NeutronPublicInterface}
+        service-password:
+          Ref: NeutronPassword
+      admin-password: {Ref: AdminPassword}
       rabbit:
         host: {Ref: RabbitHost}
+        username: {Ref: RabbitUserName}
         password: {Ref: RabbitPassword}
-      swift:
-        store_user: ''
-        store_key: ''
-      interfaces:
-        control: {Ref: NovaInterfaces}
+      live-update:
+        host: {Ref: LiveUpdateHost}
+        username: {Ref: LiveUpdateUserName}
+        password: {Ref: LiveUpdatePassword}
+        tenant-name: {Ref: LiveUpdateTenantName}
+        base_image_id: {Ref: NovaImage}
+        live_update_image_id: {Ref: LiveUpdateComputeImage}