Make puppet-applying *Post resources depend on hieradata
[apex-tripleo-heat-templates.git] / compute.yaml
index 08e8153..7fcdf42 100644 (file)
@@ -1,4 +1,4 @@
-heat_template_version: 2014-10-16
+heat_template_version: 2015-04-30
 
 description: >
   OpenStack hypervisor node. Can be wrapped in a ResourceGroup for scaling.
@@ -15,8 +15,6 @@ parameters:
     default: ''
     constraints:
     - allowed_values: ['', Present]
-  CeilometerDSN:
-    type: string
   CeilometerMeteringSecret:
     default: unset
     description: Secret shared by the ceilometer services.
@@ -72,7 +70,8 @@ parameters:
   Flavor:
     description: Flavor for the nova compute node
     type: string
-    default: baremetal
+    constraints:
+      - custom_constraint: nova.flavor
   GlanceHost:
     type: string
     default: ''  # Has to be here because of the ignored empty value bug
@@ -87,6 +86,8 @@ parameters:
   Image:
     type: string
     default: overcloud-compute
+    constraints:
+      - custom_constraint: glance.image
   ImageUpdatePolicy:
     default: 'REBUILD_PRESERVE_EPHEMERAL'
     description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
@@ -95,30 +96,11 @@ parameters:
     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
     type: string
     default: default
+    constraints:
+      - custom_constraint: nova.keypair
   KeystoneHost:
     type: string
     default: ''
-  LiveUpdateComputeImage:
-    type: string
-    description: The image ID for live-updates to the overcloud compute nodes.
-    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.
-    hidden: true
-  LiveUpdateTenantName:
-    type: string
-    description: The live-update tenant name for the undercloud Glance API.
-    default: ''
-  LiveUpdateUserName:
-    type: string
-    description: The live-update username for the undercloud Glance API.
-    default: ''
   NeutronBridgeMappings:
     description: >
       The OVS logical->physical bridge mappings to use. See the Neutron
@@ -128,15 +110,13 @@ parameters:
       network) - if changing this either use different post-install network
       scripts or be sure to keep 'datacentre' as a mapping network name.
     type: string
-    default: ""
-  NeutronDSN:
-    type: string
+    default: "datacentre:br-ex"
   NeutronEnableTunnelling:
     type: string
     default: "True"
   NeutronFlatNetworks:
     type: string
-    default: ''
+    default: 'datacentre'
     description: >
       If set, flat networks to configure in neutron plugins.
   NeutronHost:
@@ -152,7 +132,7 @@ parameters:
       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
       Neutron documentation for permitted values. Defaults to permitting any
       VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
-    type: string
+    type: comma_delimited_list
   NeutronPassword:
     default: unset
     description: The password for the neutron service account, used by neutron agents.
@@ -163,7 +143,7 @@ parameters:
     description: An OVS bridge to create for accessing external networks.
     type: string
   NeutronPublicInterface:
-    default: eth0
+    default: nic1
     description: A port to add to the NeutronPhysicalBridge.
     type: string
   NeutronTunnelTypes:
@@ -172,6 +152,36 @@ parameters:
         The tunnel types for the Neutron tenant network. To specify multiple
         values, use a comma separated string, like so: 'gre,vxlan'
     default: 'gre'
+  NeutronPublicInterfaceRawDevice:
+    default: ''
+    type: string
+  NeutronDVR:
+    default: 'False'
+    type: string
+  NeutronMetadataProxySharedSecret:
+    default: 'unset'
+    description: Shared secret to prevent spoofing
+    type: string
+  NeutronMechanismDrivers:
+    default: 'openvswitch'
+    description: |
+        The mechanism drivers for the Neutron tenant network. To specify multiple
+        values, use a comma separated string, like so: 'openvswitch,l2_population'
+    type: string
+  # Not relevant for Computes, should be removed
+  NeutronAllowL3AgentFailover:
+    default: 'True'
+    description: Allow automatic l3-agent failover
+    type: string
+  # Not relevant for Computes, should be removed
+  NeutronL3HA:
+    default: 'False'
+    description: Whether to enable l3-agent HA
+    type: string
+  NeutronAgentMode:
+    default: 'dvr_snat'
+    description: Agent mode for the neutron-l3-agent on the controller hosts
+    type: string
   NovaApiHost:
     type: string
     default: ''  # Has to be here because of the ignored empty value bug
@@ -187,8 +197,10 @@ parameters:
   NovaComputeLibvirtType:
     type: string
     default: ''
-  NovaDSN:
-    type: string
+  NovaEnableRbdBackend:
+    default: false
+    description: Whether to enable or not the Rbd backend for Nova
+    type: boolean
   NovaPassword:
     default: unset
     description: The password for the nova service account, used by nova-api.
@@ -212,6 +224,16 @@ parameters:
     default: guest
     description: The username for RabbitMQ
     type: string
+  RabbitClientUseSSL:
+    default: false
+    description: >
+        Rabbit client subscriber parameter to specify
+        an SSL connection to the RabbitMQ host.
+    type: string
+  RabbitClientPort:
+    default: 5672
+    description: Set rabbit subscriber port, change this if using SSL
+    type: number
   SnmpdReadonlyUserName:
     default: ro_snmp_user
     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
@@ -221,7 +243,17 @@ parameters:
     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
     type: string
     hidden: true
-
+  ServiceNetMap:
+    default: {}
+    description: Mapping of service_name -> network name. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  UpdateIdentifier:
+    default: ''
+    type: string
+    description: >
+      Setting to a previously unused value during stack-update will trigger
+      package update on all nodes
 
 resources:
 
@@ -237,6 +269,42 @@ resources:
       networks:
         - network: ctlplane
       user_data_format: SOFTWARE_CONFIG
+      user_data: {get_resource: NodeUserData}
+
+  NodeUserData:
+    type: OS::TripleO::NodeUserData
+
+  InternalApiPort:
+    type: OS::TripleO::Compute::Ports::InternalApiPort
+    properties:
+      ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+
+  StoragePort:
+    type: OS::TripleO::Compute::Ports::StoragePort
+    properties:
+      ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+
+  TenantPort:
+    type: OS::TripleO::Compute::Ports::TenantPort
+    properties:
+      ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+
+  NetworkConfig:
+    type: OS::TripleO::Compute::Net::SoftwareConfig
+    properties:
+      InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
+      StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
+      TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
+
+  NetworkDeployment:
+    type: OS::TripleO::SoftwareDeployment
+    properties:
+      signal_transport: NO_SIGNAL
+      config: {get_resource: NetworkConfig}
+      server: {get_resource: NovaCompute}
+      input_values:
+        bridge_name: {get_param: NeutronPhysicalBridge}
+        interface_name: {get_param: NeutronPublicInterface}
 
   NovaComputeConfig:
     type: OS::Heat::StructuredConfig
@@ -246,14 +314,12 @@ resources:
         nova:
           compute_driver: { get_input: nova_compute_driver }
           compute_libvirt_type: { get_input: nova_compute_libvirt_type }
-          db: {get_input: nova_dsn}
-          debug: {get_param: Debug}
+          debug: {get_input: debug}
           host: {get_input: nova_api_host}
           public_ip: {get_input: nova_public_ip}
           service-password: {get_input: nova_password}
         ceilometer:
-          db: {get_input: ceilometer_dsn}
-          debug: {get_param: Debug}
+          debug: {get_input: debug}
           metering_secret: {get_input: ceilometer_metering_secret}
           service-password: {get_input: ceilometer_password}
           compute_agent: {get_input: ceilometer_compute_agent}
@@ -262,18 +328,24 @@ resources:
           readonly_user_name: {get_input: snmpd_readonly_user_name}
           readonly_user_password: {get_input: snmpd_readonly_user_password}
         glance:
-          debug: {get_param: Debug}
+          debug: {get_input: debug}
           host: {get_input: glance_host}
           port: {get_input: glance_port}
           protocol: {get_input: glance_protocol}
         keystone:
-          debug: {get_param: Debug}
+          debug: {get_input: debug}
           host: {get_input: keystone_host}
         neutron:
-          debug: {get_param: Debug}
+          debug: {get_input: debug}
           flat-networks: {get_input: neutron_flat_networks}
           host: {get_input: neutron_host}
+          router_distributed: {get_input: neutron_router_distributed}
+          agent_mode: {get_input: neutron_agent_mode}
           ovs_db: {get_input: neutron_dsn}
+          metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
+          mechanism_drivers: {get_input: neutron_mechanism_drivers}
+          allow_automatic_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
+          l3_ha: {get_input: neutron_l3_ha}
           ovs:
             local_ip: {get_input: neutron_local_ip}
             tenant_network_type: {get_input: neutron_tenant_network_type}
@@ -283,37 +355,30 @@ resources:
             enable_tunneling: {get_input: neutron_enable_tunneling}
             physical_bridge: {get_input: neutron_physical_bridge}
             public_interface: {get_input: neutron_public_interface}
+            public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
           service-password: {get_input: neutron_password}
         admin-password: {get_input: admin_password}
         rabbit:
           host: {get_input: rabbit_host}
           username: {get_input: rabbit_username}
           password: {get_input: rabbit_password}
-        live-update:
-          host: {get_input: live_update_host}
-          username: {get_input: live_update_username}
-          password: {get_input: live_update_password}
-          tenant-name: {get_input: live_update_tenant_name}
-          base_image_id: {get_input: nova_image}
-          live_update_image_id: {get_input: live_update_compute_image}
         ntp:
           servers:
-              - {server: {get_input: ntp_server}, fudge: "stratum 0"}
+              - {server: {get_input: ntp_server}}
 
   NovaComputeDeployment:
-    type: OS::Heat::StructuredDeployment
+    type: OS::TripleO::SoftwareDeployment
     properties:
       signal_transport: NO_SIGNAL
       config: {get_resource: NovaComputeConfig}
       server: {get_resource: NovaCompute}
       input_values:
+        debug: {get_param: Debug}
         nova_compute_driver: {get_param: NovaComputeDriver}
         nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
-        nova_dsn: {get_param: NovaDSN}
         nova_public_ip: {get_param: NovaPublicIP}
         nova_api_host: {get_param: NovaApiHost}
         nova_password: {get_param: NovaPassword}
-        ceilometer_dsn: {get_param: CeilometerDSN}
         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
         ceilometer_password: {get_param: CeilometerPassword}
         ceilometer_compute_agent: {get_param: CeilometerComputeAgent}
@@ -325,7 +390,6 @@ resources:
         keystone_host: {get_param: KeystoneHost}
         neutron_flat_networks: {get_param: NeutronFlatNetworks}
         neutron_host: {get_param: NeutronHost}
-        neutron_dsn: {get_param: NeutronDSN}
         neutron_local_ip: {get_attr: [NovaCompute, networks, ctlplane, 0]}
         neutron_tenant_network_type: {get_param: NeutronNetworkType}
         neutron_tunnel_types: {get_param: NeutronTunnelTypes}
@@ -335,16 +399,17 @@ resources:
         neutron_physical_bridge: {get_param: NeutronPhysicalBridge}
         neutron_public_interface: {get_param: NeutronPublicInterface}
         neutron_password: {get_param: NeutronPassword}
+        neutron_agent_mode: {get_param: NeutronAgentMode}
+        neutron_router_distributed: {get_param: NeutronDVR}
+        neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
+        neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
+        neutron_allow_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
+        neutron_l3_ha: {get_param: NeutronL3HA}
+        neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
         admin_password: {get_param: AdminPassword}
         rabbit_host: {get_param: RabbitHost}
         rabbit_username: {get_param: RabbitUserName}
         rabbit_password: {get_param: RabbitPassword}
-        live_update_host: {get_param: LiveUpdateHost}
-        live_update_username: {get_param: LiveUpdateUserName}
-        live_update_password: {get_param: LiveUpdatePassword}
-        live_update_tenant_name: {get_param: LiveUpdateTenantName}
-        nova_image: {get_param: Image}
-        live_update_image_id: {get_param: LiveUpdateComputeImage}
         ntp_server: {get_param: NtpServer}
 
   NovaComputePassthrough:
@@ -383,6 +448,15 @@ outputs:
   ip_address:
     description: IP address of the server in the ctlplane network
     value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+  internal_api_ip_address:
+    description: IP address of the server in the internal_api network
+    value: {get_attr: [InternalApiPort, ip_address]}
+  storage_ip_address:
+    description: IP address of the server in the storage network
+    value: {get_attr: [StoragePort, ip_address]}
+  tenant_ip_address:
+    description: IP address of the server in the tenant network
+    value: {get_attr: [TenantPort, ip_address]}
   hostname:
     description: Hostname of the server
     value: {get_attr: [NovaCompute, name]}
@@ -391,7 +465,7 @@ outputs:
       Server's IP address and hostname in the /etc/hosts format
     value:
       str_replace:
-        template: "IP HOST HOST.novalocal"
+        template: "IP HOST"
         params:
           IP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
           HOST: {get_attr: [NovaCompute, name]}
@@ -399,3 +473,6 @@ outputs:
     description: Heat resource handle for the Nova compute server
     value:
       {get_resource: NovaCompute}
+  config_identifier:
+    description: identifier which changes if the node configuration may need re-applying
+    value: "None - NO_SIGNAL"