Make puppet-applying *Post resources depend on hieradata
[apex-tripleo-heat-templates.git] / compute.yaml
index dbeeeb0..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.
 
 description: >
   OpenStack hypervisor node. Can be wrapped in a ResourceGroup for scaling.
@@ -110,13 +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
       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: ""
+    default: "datacentre:br-ex"
   NeutronEnableTunnelling:
     type: string
     default: "True"
   NeutronFlatNetworks:
     type: string
   NeutronEnableTunnelling:
     type: string
     default: "True"
   NeutronFlatNetworks:
     type: string
-    default: ''
+    default: 'datacentre'
     description: >
       If set, flat networks to configure in neutron plugins.
   NeutronHost:
     description: >
       If set, flat networks to configure in neutron plugins.
   NeutronHost:
@@ -132,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).
       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.
   NeutronPassword:
     default: unset
     description: The password for the neutron service account, used by neutron agents.
@@ -168,10 +168,12 @@ parameters:
         The mechanism drivers for the Neutron tenant network. To specify multiple
         values, use a comma separated string, like so: 'openvswitch,l2_population'
     type: string
         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
   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
   NeutronL3HA:
     default: 'False'
     description: Whether to enable l3-agent HA
@@ -195,6 +197,10 @@ parameters:
   NovaComputeLibvirtType:
     type: string
     default: ''
   NovaComputeLibvirtType:
     type: string
     default: ''
+  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.
   NovaPassword:
     default: unset
     description: The password for the nova service account, used by nova-api.
@@ -218,6 +224,16 @@ parameters:
     default: guest
     description: The username for RabbitMQ
     type: string
     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
   SnmpdReadonlyUserName:
     default: ro_snmp_user
     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
@@ -227,7 +243,17 @@ parameters:
     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
     type: string
     hidden: true
     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:
 
 
 resources:
 
@@ -243,31 +269,108 @@ resources:
       networks:
         - network: ctlplane
       user_data_format: SOFTWARE_CONFIG
       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:
 
   NetworkConfig:
-    type: OS::TripleO::Net::SoftwareConfig
+    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
 
   NetworkDeployment:
     type: OS::TripleO::SoftwareDeployment
     properties:
       signal_transport: NO_SIGNAL
-      config: {get_attr: [NetworkConfig, config_id]}
+      config: {get_resource: NetworkConfig}
       server: {get_resource: NovaCompute}
       input_values:
         bridge_name: {get_param: NeutronPhysicalBridge}
         interface_name: {get_param: NeutronPublicInterface}
 
   NovaComputeConfig:
       server: {get_resource: NovaCompute}
       input_values:
         bridge_name: {get_param: NeutronPhysicalBridge}
         interface_name: {get_param: NeutronPublicInterface}
 
   NovaComputeConfig:
-    type: OS::TripleO::Compute::SoftwareConfig
+    type: OS::Heat::StructuredConfig
     properties:
     properties:
-      # allow configs to create sub-resources attached to the server
-      server_id: {get_resource: NovaCompute}
+      group: os-apply-config
+      config:
+        nova:
+          compute_driver: { get_input: nova_compute_driver }
+          compute_libvirt_type: { get_input: nova_compute_libvirt_type }
+          debug: {get_input: debug}
+          host: {get_input: nova_api_host}
+          public_ip: {get_input: nova_public_ip}
+          service-password: {get_input: nova_password}
+        ceilometer:
+          debug: {get_input: debug}
+          metering_secret: {get_input: ceilometer_metering_secret}
+          service-password: {get_input: ceilometer_password}
+          compute_agent: {get_input: ceilometer_compute_agent}
+        snmpd:
+          export_MIB: UCD-SNMP-MIB
+          readonly_user_name: {get_input: snmpd_readonly_user_name}
+          readonly_user_password: {get_input: snmpd_readonly_user_password}
+        glance:
+          debug: {get_input: debug}
+          host: {get_input: glance_host}
+          port: {get_input: glance_port}
+          protocol: {get_input: glance_protocol}
+        keystone:
+          debug: {get_input: debug}
+          host: {get_input: keystone_host}
+        neutron:
+          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}
+            tunnel_types: {get_input: neutron_tunnel_types}
+            network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
+            bridge_mappings: {get_input: neutron_bridge_mappings}
+            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}
+        ntp:
+          servers:
+              - {server: {get_input: ntp_server}}
 
   NovaComputeDeployment:
     type: OS::TripleO::SoftwareDeployment
     properties:
       signal_transport: NO_SIGNAL
 
   NovaComputeDeployment:
     type: OS::TripleO::SoftwareDeployment
     properties:
       signal_transport: NO_SIGNAL
-      config: {get_attr: [NovaComputeConfig, config_id]}
+      config: {get_resource: NovaComputeConfig}
       server: {get_resource: NovaCompute}
       input_values:
         debug: {get_param: Debug}
       server: {get_resource: NovaCompute}
       input_values:
         debug: {get_param: Debug}
@@ -345,6 +448,15 @@ outputs:
   ip_address:
     description: IP address of the server in the ctlplane network
     value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
   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]}
   hostname:
     description: Hostname of the server
     value: {get_attr: [NovaCompute, name]}
@@ -353,7 +465,7 @@ outputs:
       Server's IP address and hostname in the /etc/hosts format
     value:
       str_replace:
       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]}
         params:
           IP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
           HOST: {get_attr: [NovaCompute, name]}
@@ -361,3 +473,6 @@ outputs:
     description: Heat resource handle for the Nova compute server
     value:
       {get_resource: NovaCompute}
     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"