neutron: remove tenant MTU configuration options
[apex-tripleo-heat-templates.git] / puppet / compute.yaml
1 heat_template_version: 2015-10-15
2
3 description: >
4   OpenStack hypervisor node configured via Puppet.
5
6 parameters:
7   AdminPassword:
8     description: The password for the keystone admin account, used for monitoring, querying neutron etc.
9     type: string
10     hidden: true
11   CeilometerComputeAgent:
12     description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
13     type: string
14     default: ''
15     constraints:
16     - allowed_values: ['', Present]
17   CeilometerMeteringSecret:
18     description: Secret shared by the ceilometer services.
19     type: string
20     hidden: true
21   CeilometerPassword:
22     description: The password for the ceilometer service account.
23     type: string
24     hidden: true
25   CinderEnableNfsBackend:
26     default: false
27     description: Whether to enable or not the NFS backend for Cinder
28     type: boolean
29   CinderEnableRbdBackend:
30     default: false
31     description: Whether to enable or not the Rbd backend for Cinder
32     type: boolean
33   Debug:
34     default: ''
35     description: Set to True to enable debugging on all services.
36     type: string
37   ExtraConfig:
38     default: {}
39     description: |
40       Additional hiera configuration to inject into the cluster. Note
41       that NovaComputeExtraConfig takes precedence over ExtraConfig.
42     type: json
43   Flavor:
44     description: Flavor for the nova compute node
45     type: string
46     constraints:
47       - custom_constraint: nova.flavor
48   GlanceHost:
49     type: string
50     default: ''  # Has to be here because of the ignored empty value bug
51   Image:
52     type: string
53     default: overcloud-compute
54     constraints:
55       - custom_constraint: glance.image
56   ImageUpdatePolicy:
57     default: 'REBUILD_PRESERVE_EPHEMERAL'
58     description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
59     type: string
60   KeyName:
61     description: Name of an existing Nova key pair to enable SSH access to the instances
62     type: string
63     default: default
64     constraints:
65       - custom_constraint: nova.keypair
66   KeystoneAdminApiVirtualIP:
67     type: string
68     default: ''
69   KeystonePublicApiVirtualIP:
70      type: string
71      default: ''
72   NeutronBridgeMappings:
73     description: >
74       The OVS logical->physical bridge mappings to use. See the Neutron
75       documentation for details. Defaults to mapping br-ex - the external
76       bridge on hosts - to a physical name 'datacentre' which can be used
77       to create provider networks (and we use this for the default floating
78       network) - if changing this either use different post-install network
79       scripts or be sure to keep 'datacentre' as a mapping network name.
80     type: comma_delimited_list
81     default: "datacentre:br-ex"
82   NeutronEnableTunnelling:
83     type: string
84     default: "True"
85   NeutronEnableL2Pop:
86     type: string
87     description: >
88         Enable/disable the L2 population feature in the Neutron agents.
89     default: "False"
90   NeutronFlatNetworks:
91     type: comma_delimited_list
92     default: 'datacentre'
93     description: >
94       If set, flat networks to configure in neutron plugins.
95   NeutronHost:
96     type: string
97     default: ''  # Has to be here because of the ignored empty value bug
98   NeutronNetworkType:
99     type: comma_delimited_list
100     description: The tenant network type for Neutron.
101     default: 'vxlan'
102   NeutronNetworkVLANRanges:
103     default: 'datacentre:1:1000'
104     description: >
105       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
106       Neutron documentation for permitted values. Defaults to permitting any
107       VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
108     type: comma_delimited_list
109   NeutronPassword:
110     description: The password for the neutron service account, used by neutron agents.
111     type: string
112     hidden: true
113   NeutronPhysicalBridge:
114     default: 'br-ex'
115     description: An OVS bridge to create for accessing external networks.
116     type: string
117   NeutronPublicInterface:
118     default: nic1
119     description: A port to add to the NeutronPhysicalBridge.
120     type: string
121   NeutronTunnelTypes:
122     type: comma_delimited_list
123     description: |
124         The tunnel types for the Neutron tenant network.
125     default: 'vxlan'
126   NeutronTunnelIdRanges:
127     description: |
128         Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges
129         of GRE tunnel IDs that are available for tenant network allocation
130     default: ["1:4094", ]
131     type: comma_delimited_list
132   NeutronVniRanges:
133     description: |
134         Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges
135         of VXLAN VNI IDs that are available for tenant network allocation
136     default: ["1:4094", ]
137     type: comma_delimited_list
138   NeutronMetadataProxySharedSecret:
139     description: Shared secret to prevent spoofing
140     type: string
141     hidden: true
142   NeutronCorePlugin:
143     default: 'ml2'
144     description: |
145         The core plugin for Neutron. The value should be the entrypoint to be loaded
146         from neutron.core_plugins namespace.
147     type: string
148   NeutronServicePlugins:
149     default: "router,qos"
150     description: |
151         Comma-separated list of service plugin entrypoints to be loaded from the
152         neutron.service_plugins namespace.
153     type: comma_delimited_list
154   NeutronTypeDrivers:
155     default: "vxlan,vlan,flat,gre"
156     description: |
157         Comma-separated list of network type driver entrypoints to be loaded.
158     type: comma_delimited_list
159   NeutronMechanismDrivers:
160     default: 'openvswitch'
161     description: |
162         The mechanism drivers for the Neutron tenant network.
163     type: comma_delimited_list
164   NeutronAgentExtensions:
165     default: "qos"
166     description: |
167         Comma-separated list of extensions enabled for the Neutron agents.
168     type: comma_delimited_list
169   # Not relevant for Computes, should be removed
170   NeutronAllowL3AgentFailover:
171     default: 'True'
172     description: Allow automatic l3-agent failover
173     type: string
174   # Not relevant for Computes, should be removed
175   NeutronL3HA:
176     default: 'False'
177     description: Whether to enable l3-agent HA
178     type: string
179   NodeIndex:
180     type: number
181     default: 0
182   NovaApiHost:
183     type: string
184     default: ''  # Has to be here because of the ignored empty value bug
185   NovaComputeDriver:
186     type: string
187     default: libvirt.LibvirtDriver
188   NovaComputeExtraConfig:
189     default: {}
190     description: |
191       NovaCompute specific configuration to inject into the cluster. Same
192       structure as ExtraConfig.
193     type: json
194   NovaComputeIPs:
195     default: {}
196     type: json
197   NovaComputeLibvirtType:
198     type: string
199     default: kvm
200   NovaComputeLibvirtVifDriver:
201     default: ''
202     description: Libvirt VIF driver configuration for the network
203     type: string
204   NovaEnableRbdBackend:
205     default: false
206     description: Whether to enable or not the Rbd backend for Nova
207     type: boolean
208   NovaIPv6:
209     default: false
210     description: Enable IPv6 features in Nova
211     type: boolean
212   NovaPassword:
213     description: The password for the nova service account, used by nova-api.
214     type: string
215     hidden: true
216   NovaPublicIP:
217     type: string
218     default: ''  # Has to be here because of the ignored empty value bug
219   NovaOVSBridge:
220     default: 'br-int'
221     description: Name of integration bridge used by Open vSwitch
222     type: string
223   NovaSecurityGroupAPI:
224     default: 'neutron'
225     description: The full class name of the security API class
226     type: string
227   RabbitHost:
228     type: string
229     default: ''  # Has to be here because of the ignored empty value bug
230   RabbitPassword:
231     description: The password for RabbitMQ
232     type: string
233     hidden: true
234   RabbitUserName:
235     default: guest
236     description: The username for RabbitMQ
237     type: string
238   RabbitClientUseSSL:
239     default: false
240     description: >
241         Rabbit client subscriber parameter to specify
242         an SSL connection to the RabbitMQ host.
243     type: string
244   RabbitClientPort:
245     default: 5672
246     description: Set rabbit subscriber port, change this if using SSL
247     type: number
248   UpgradeLevelNovaCompute:
249     type: string
250     description: Nova Compute upgrade level
251     default: ''
252   EnablePackageInstall:
253     default: 'false'
254     description: Set to true to enable package installation via Puppet
255     type: boolean
256   ServiceNetMap:
257     default: {}
258     description: Mapping of service_name -> network name. Typically set
259                  via parameter_defaults in the resource registry.
260     type: json
261   EndpointMap:
262     default: {}
263     description: Mapping of service endpoint -> protocol. Typically set
264                  via parameter_defaults in the resource registry.
265     type: json
266   UpdateIdentifier:
267     default: ''
268     type: string
269     description: >
270       Setting to a previously unused value during stack-update will trigger
271       package update on all nodes
272   Hostname:
273     type: string
274     default: '' # Defaults to Heat created hostname
275   HostnameMap:
276     type: json
277     default: {}
278     description: Optional mapping to override hostnames
279   NetworkDeploymentActions:
280     type: comma_delimited_list
281     description: >
282       Heat action when to apply network configuration changes
283     default: ['CREATE']
284   SoftwareConfigTransport:
285     default: POLL_SERVER_CFN
286     description: |
287       How the server should receive the metadata required for software configuration.
288     type: string
289     constraints:
290     - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
291   CloudDomain:
292     default: ''
293     type: string
294     description: >
295       The DNS domain used for the hosts. This should match the dhcp_domain
296       configured in the Undercloud neutron. Defaults to localdomain.
297   ServerMetadata:
298     default: {}
299     description: >
300       Extra properties or metadata passed to Nova for the created nodes in
301       the overcloud. It's accessible via the Nova metadata API.
302     type: json
303   SchedulerHints:
304     type: json
305     description: Optional scheduler hints to pass to nova
306     default: {}
307   ServiceConfigSettings:
308     type: json
309     default: {}
310
311 resources:
312
313   NovaCompute:
314     type: OS::Nova::Server
315     properties:
316       image:
317         {get_param: Image}
318       image_update_policy:
319         get_param: ImageUpdatePolicy
320       flavor: {get_param: Flavor}
321       key_name: {get_param: KeyName}
322       networks:
323         - network: ctlplane
324       user_data_format: SOFTWARE_CONFIG
325       user_data: {get_resource: UserData}
326       name:
327         str_replace:
328             template: {get_param: Hostname}
329             params: {get_param: HostnameMap}
330       software_config_transport: {get_param: SoftwareConfigTransport}
331       metadata: {get_param: ServerMetadata}
332       scheduler_hints: {get_param: SchedulerHints}
333
334   # Combine the NodeAdminUserData and NodeUserData mime archives
335   UserData:
336     type: OS::Heat::MultipartMime
337     properties:
338       parts:
339       - config: {get_resource: NodeAdminUserData}
340         type: multipart
341       - config: {get_resource: NodeUserData}
342         type: multipart
343
344   # Creates the "heat-admin" user if configured via the environment
345   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
346   NodeAdminUserData:
347     type: OS::TripleO::NodeAdminUserData
348
349   # For optional operator additional userdata
350   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
351   NodeUserData:
352     type: OS::TripleO::NodeUserData
353
354   ExternalPort:
355     type: OS::TripleO::Compute::Ports::ExternalPort
356     properties:
357       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
358       IPPool: {get_param: NovaComputeIPs}
359       NodeIndex: {get_param: NodeIndex}
360
361   InternalApiPort:
362     type: OS::TripleO::Compute::Ports::InternalApiPort
363     properties:
364       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
365       IPPool: {get_param: NovaComputeIPs}
366       NodeIndex: {get_param: NodeIndex}
367
368   StoragePort:
369     type: OS::TripleO::Compute::Ports::StoragePort
370     properties:
371       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
372       IPPool: {get_param: NovaComputeIPs}
373       NodeIndex: {get_param: NodeIndex}
374
375   StorageMgmtPort:
376     type: OS::TripleO::Compute::Ports::StorageMgmtPort
377     properties:
378       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
379       IPPool: {get_param: NovaComputeIPs}
380       NodeIndex: {get_param: NodeIndex}
381
382   TenantPort:
383     type: OS::TripleO::Compute::Ports::TenantPort
384     properties:
385       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
386       IPPool: {get_param: NovaComputeIPs}
387       NodeIndex: {get_param: NodeIndex}
388
389   ManagementPort:
390     type: OS::TripleO::Compute::Ports::ManagementPort
391     properties:
392       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
393       IPPool: {get_param: NovaComputeIPs}
394       NodeIndex: {get_param: NodeIndex}
395
396   NetIpMap:
397     type: OS::TripleO::Network::Ports::NetIpMap
398     properties:
399       ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
400       ExternalIp: {get_attr: [ExternalPort, ip_address]}
401       ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
402       ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
403       InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
404       InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
405       InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
406       StorageIp: {get_attr: [StoragePort, ip_address]}
407       StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
408       StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
409       StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
410       StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
411       StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
412       TenantIp: {get_attr: [TenantPort, ip_address]}
413       TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
414       TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
415       ManagementIp: {get_attr: [ManagementPort, ip_address]}
416       ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
417       ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
418
419   NetworkConfig:
420     type: OS::TripleO::Compute::Net::SoftwareConfig
421     properties:
422       ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
423       ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
424       InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
425       StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
426       StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
427       TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
428       ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
429
430   NetworkDeployment:
431     type: OS::TripleO::SoftwareDeployment
432     properties:
433       name: NetworkDeployment
434       config: {get_resource: NetworkConfig}
435       server: {get_resource: NovaCompute}
436       actions: {get_param: NetworkDeploymentActions}
437       input_values:
438         bridge_name: {get_param: NeutronPhysicalBridge}
439         interface_name: {get_param: NeutronPublicInterface}
440
441   NovaComputeConfig:
442     type: OS::Heat::StructuredConfig
443     properties:
444       group: os-apply-config
445       config:
446         hiera:
447           hierarchy:
448             - '"%{::uuid}"'
449             - heat_config_%{::deploy_config_name}
450             - compute_extraconfig
451             - extraconfig
452             - service_configs
453             - compute
454             - ceph_cluster # provided by CephClusterConfig
455             - ceph
456             - all_nodes # provided by allNodesConfig
457             - '"%{::osfamily}"'
458             - common
459             - network
460             - neutron_bigswitch_data # Optionally provided by ComputeExtraConfigPre
461             - cisco_n1kv_data  # Optionally provided by ComputeExtraConfigPre
462             - nova_nuage_data  # Optionally provided by ComputeExtraConfigPre
463             - midonet_data # Optionally provided by AllNodesExtraConfig
464             - neutron_opencontrail_data  # Optionally provided by ComputeExtraConfigPre
465           merge_behavior: deeper
466           datafiles:
467             service_configs:
468               mapped_data: {get_param: ServiceConfigSettings}
469             compute_extraconfig:
470               mapped_data: {get_param: NovaComputeExtraConfig}
471             extraconfig:
472               mapped_data: {get_param: ExtraConfig}
473             common:
474               raw_data: {get_file: hieradata/common.yaml}
475             network:
476               mapped_data:
477                 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
478                 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
479                 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
480             ceph:
481               raw_data: {get_file: hieradata/ceph.yaml}
482             compute:
483               raw_data: {get_file: hieradata/compute.yaml}
484               mapped_data:
485                 cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
486                 nova::use_ipv6: {get_input: nova_ipv6}
487                 nova::debug: {get_input: debug}
488                 nova::rabbit_userid: {get_input: rabbit_username}
489                 nova::rabbit_password: {get_input: rabbit_password}
490                 nova::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
491                 nova::rabbit_port: {get_input: rabbit_client_port}
492                 nova::upgrade_level_compute: {get_input: upgrade_level_nova_compute}
493                 nova_compute_driver: {get_input: nova_compute_driver}
494                 # TODO(emilien): move libvirt & migration parameters in libvirt profile
495                 # used to deploy libvirt/kvm dependencies:
496                 nova::compute::libvirt::services::libvirt_virt_type: {get_input: nova_compute_libvirt_type}
497                 # used to configured nova.conf:
498                 nova::compute::libvirt::libvirt_virt_type: {get_input: nova_compute_libvirt_type}
499                 nova::compute::neutron::libvirt_vif_driver: {get_input: nova_compute_libvirt_vif_driver}
500                 nova_api_host: {get_input: nova_api_host}
501                 nova::compute::vncproxy_host: {get_input: nova_public_ip}
502                 nova::compute::rbd::ephemeral_storage: {get_input: nova_enable_rbd_backend}
503                 # TUNNELLED mode provides a security enhancement when using shared storage but is not
504                 # supported when not using shared storage.
505                 # See https://bugzilla.redhat.com/show_bug.cgi?id=1301986#c12
506                 # In future versions of QEMU (2.6, mostly), Dan's native encryption
507                 # work will obsolete the need to use TUNNELLED transport mode.
508                 nova::migration::live_migration_tunnelled: {get_input: nova_enable_rbd_backend}
509                 rbd_persistent_storage: {get_input: cinder_enable_rbd_backend}
510                 nova_password: {get_input: nova_password}
511                 nova::compute::vncserver_proxyclient_address: {get_input: nova_vnc_proxyclient_address}
512                 nova::vncproxy::common::vncproxy_protocol: {get_input: nova_vncproxy_protocol}
513                 nova::vncproxy::common::vncproxy_host: {get_input: nova_vncproxy_host}
514                 nova::vncproxy::common::vncproxy_port: {get_input: nova_vncproxy_port}
515                 nova::network::neutron::neutron_ovs_bridge: {get_input: nova_ovs_bridge}
516                 nova::network::neutron::security_group_api: {get_input: nova_security_group_api}
517                 ceilometer::debug: {get_input: debug}
518                 ceilometer::rabbit_userid: {get_input: rabbit_username}
519                 ceilometer::rabbit_password: {get_input: rabbit_password}
520                 ceilometer::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
521                 ceilometer::rabbit_port: {get_input: rabbit_client_port}
522                 ceilometer::telemetry_secret: {get_input: ceilometer_metering_secret}
523                 ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
524                 ceilometer::agent::auth::auth_url: {get_input: ceilometer_agent_auth_url}
525                 ceilometer_compute_agent: {get_input: ceilometer_compute_agent}
526                 nova::glance_api_servers: {get_input: glance_api_servers}
527                 neutron::debug: {get_input: debug}
528                 neutron::rabbit_password: {get_input: rabbit_password}
529                 neutron::rabbit_user: {get_input: rabbit_username}
530                 neutron::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
531                 neutron::rabbit_port: {get_input: rabbit_client_port}
532                 neutron::plugins::ml2::flat_networks: {get_input: neutron_flat_networks}
533                 neutron_host: {get_input: neutron_host}
534                 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
535
536                 neutron::plugins::ml2::tenant_network_types: {get_input: neutron_tenant_network_types}
537                 neutron::agents::ml2::ovs::tunnel_types: {get_input: neutron_tunnel_types}
538                 neutron::agents::ml2::ovs::extensions: {get_input: neutron_agent_extensions}
539                 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
540                 neutron::plugins::ml2::tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
541                 neutron::plugins::ml2::vni_ranges: {get_input: neutron_vni_ranges}
542                 neutron::agents::ml2::ovs::bridge_mappings: {get_input: neutron_bridge_mappings}
543                 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
544                 neutron::agents::ml2::ovs::l2_population: {get_input: neutron_enable_l2pop}
545                 neutron_physical_bridge: {get_input: neutron_physical_bridge}
546                 neutron_public_interface: {get_input: neutron_public_interface}
547                 nova::network::neutron::neutron_password: {get_input: neutron_password}
548                 nova::network::neutron::neutron_url: {get_input: neutron_internal_url}
549                 nova::network::neutron::neutron_auth_url: {get_input: neutron_auth_url}
550                 neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
551                 neutron::core_plugin: {get_input: neutron_core_plugin}
552                 neutron::service_plugins: {get_input: neutron_service_plugins}
553                 neutron::plugins::ml2::type_drivers: {get_input: neutron_type_drivers}
554                 neutron::plugins::ml2::mechanism_drivers: {get_input: neutron_mechanism_drivers}
555                 keystone_public_api_virtual_ip: {get_input: keystone_vip}
556                 admin_password: {get_input: admin_password}
557                 tripleo::packages::enable_install: {get_input: enable_package_install}
558                 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
559
560   NovaComputeDeployment:
561     type: OS::TripleO::SoftwareDeployment
562     depends_on: NetworkDeployment
563     properties:
564       name: NovaComputeDeployment
565       config: {get_resource: NovaComputeConfig}
566       server: {get_resource: NovaCompute}
567       input_values:
568         cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
569         debug: {get_param: Debug}
570         nova_compute_driver: {get_param: NovaComputeDriver}
571         nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
572         nova_compute_libvirt_vif_driver: {get_param: NovaComputeLibvirtVifDriver}
573         nova_public_ip: {get_param: NovaPublicIP}
574         nova_api_host: {get_param: NovaApiHost}
575         nova_password: {get_param: NovaPassword}
576         nova_enable_rbd_backend: {get_param: NovaEnableRbdBackend}
577         nova_ipv6: {get_param: NovaIPv6}
578         cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
579         nova_vnc_proxyclient_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaVncProxyNetwork]}]}
580         nova_vncproxy_protocol: {get_param: [EndpointMap, NovaVNCProxyPublic, protocol]}
581         # Remove brackets that may come if the IP address is IPv6.
582         # For DNS names and IPv4, this will just get the NovaVNCProxyPublic value
583         nova_vncproxy_host:
584           str_replace:
585             template: {get_param: [EndpointMap, NovaVNCProxyPublic, host]}
586             params:
587               '[': ''
588               ']': ''
589         nova_vncproxy_port: {get_param: [EndpointMap, NovaVNCProxyPublic, port]}
590         nova_ovs_bridge: {get_param: NovaOVSBridge}
591         nova_security_group_api: {get_param: NovaSecurityGroupAPI}
592         upgrade_level_nova_compute: {get_param: UpgradeLevelNovaCompute}
593         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
594         ceilometer_password: {get_param: CeilometerPassword}
595         ceilometer_compute_agent: {get_param: CeilometerComputeAgent}
596         ceilometer_agent_auth_url: {get_param: [EndpointMap, KeystoneInternal, uri]}
597         glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
598         neutron_flat_networks:
599           str_replace:
600             template: NETWORKS
601             params:
602               NETWORKS: {get_param: NeutronFlatNetworks}
603         neutron_host: {get_param: NeutronHost}
604         neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
605         neutron_tunnel_id_ranges:
606           str_replace:
607             template: RANGES
608             params:
609               RANGES: {get_param: NeutronTunnelIdRanges}
610         neutron_vni_ranges:
611           str_replace:
612             template: RANGES
613             params:
614               RANGES: {get_param: NeutronVniRanges}
615         neutron_tenant_network_types:
616           str_replace:
617             template: TYPES
618             params:
619               TYPES: {get_param: NeutronNetworkType}
620         neutron_tunnel_types:
621           str_replace:
622             template: TYPES
623             params:
624               TYPES: {get_param: NeutronTunnelTypes}
625         neutron_network_vlan_ranges:
626           str_replace:
627             template: RANGES
628             params:
629               RANGES: {get_param: NeutronNetworkVLANRanges}
630         neutron_bridge_mappings:
631           str_replace:
632             template: MAPPINGS
633             params:
634               MAPPINGS: {get_param: NeutronBridgeMappings}
635         neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
636         neutron_enable_l2pop: {get_param: NeutronEnableL2Pop}
637         neutron_physical_bridge: {get_param: NeutronPhysicalBridge}
638         neutron_public_interface: {get_param: NeutronPublicInterface}
639         neutron_password: {get_param: NeutronPassword}
640         neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
641         neutron_core_plugin: {get_param: NeutronCorePlugin}
642         neutron_service_plugins:
643           str_replace:
644             template: PLUGINS
645             params:
646               PLUGINS: {get_param: NeutronServicePlugins}
647         neutron_type_drivers:
648           str_replace:
649             template: DRIVERS
650             params:
651               DRIVERS: {get_param: NeutronTypeDrivers}
652         neutron_mechanism_drivers:
653           str_replace:
654             template: MECHANISMS
655             params:
656               MECHANISMS: {get_param: NeutronMechanismDrivers}
657         neutron_agent_extensions:
658           str_replace:
659             template: AGENT_EXTENSIONS
660             params:
661               AGENT_EXTENSIONS: {get_param: NeutronAgentExtensions}
662         neutron_internal_url: {get_param: [EndpointMap, NeutronInternal, uri]}
663         neutron_auth_url: {get_param: [EndpointMap, KeystoneV3Admin, uri]}
664         keystone_vip: {get_param: KeystonePublicApiVirtualIP}
665         admin_password: {get_param: AdminPassword}
666         rabbit_username: {get_param: RabbitUserName}
667         rabbit_password: {get_param: RabbitPassword}
668         rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
669         rabbit_client_port: {get_param: RabbitClientPort}
670         enable_package_install: {get_param: EnablePackageInstall}
671         enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
672
673   # Resource for site-specific injection of root certificate
674   NodeTLSCAData:
675     depends_on: NovaComputeDeployment
676     type: OS::TripleO::NodeTLSCAData
677     properties:
678       server: {get_resource: NovaCompute}
679
680   # Hook for site-specific additional pre-deployment config, e.g extra hieradata
681   ComputeExtraConfigPre:
682     depends_on: NovaComputeDeployment
683     type: OS::TripleO::ComputeExtraConfigPre
684     properties:
685         server: {get_resource: NovaCompute}
686
687   # Hook for site-specific additional pre-deployment config,
688   # applying to all nodes, e.g node registration/unregistration
689   NodeExtraConfig:
690     depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
691     type: OS::TripleO::NodeExtraConfig
692     properties:
693         server: {get_resource: NovaCompute}
694
695   UpdateConfig:
696     type: OS::TripleO::Tasks::PackageUpdate
697
698   UpdateDeployment:
699     type: OS::Heat::SoftwareDeployment
700     properties:
701       name: UpdateDeployment
702       config: {get_resource: UpdateConfig}
703       server: {get_resource: NovaCompute}
704       input_values:
705         update_identifier:
706           get_param: UpdateIdentifier
707
708 outputs:
709   ip_address:
710     description: IP address of the server in the ctlplane network
711     value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
712   external_ip_address:
713     description: IP address of the server in the external network
714     value: {get_attr: [ExternalPort, ip_address]}
715   internal_api_ip_address:
716     description: IP address of the server in the internal_api network
717     value: {get_attr: [InternalApiPort, ip_address]}
718   storage_ip_address:
719     description: IP address of the server in the storage network
720     value: {get_attr: [StoragePort, ip_address]}
721   storage_mgmt_ip_address:
722     description: IP address of the server in the storage_mgmt network
723     value: {get_attr: [StorageMgmtPort, ip_address]}
724   tenant_ip_address:
725     description: IP address of the server in the tenant network
726     value: {get_attr: [TenantPort, ip_address]}
727   management_ip_address:
728     description: IP address of the server in the management network
729     value: {get_attr: [ManagementPort, ip_address]}
730   hostname:
731     description: Hostname of the server
732     value: {get_attr: [NovaCompute, name]}
733   hosts_entry:
734     description: >
735       Server's IP address and hostname in the /etc/hosts format
736     value:
737       str_replace:
738         template: |
739           PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
740           EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
741           INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
742           STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
743           STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
744           TENANTIP TENANTHOST.DOMAIN TENANTHOST
745           MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
746         params:
747           PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
748           DOMAIN: {get_param: CloudDomain}
749           PRIMARYHOST: {get_attr: [NovaCompute, name]}
750           EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
751           EXTERNALHOST:
752             list_join:
753             - '.'
754             - - {get_attr: [NovaCompute, name]}
755               - external
756           INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
757           INTERNAL_APIHOST:
758             list_join:
759             - '.'
760             - - {get_attr: [NovaCompute, name]}
761               - internalapi
762           STORAGEIP: {get_attr: [StoragePort, ip_address]}
763           STORAGEHOST:
764             list_join:
765             - '.'
766             - - {get_attr: [NovaCompute, name]}
767               - storage
768           STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
769           STORAGE_MGMTHOST:
770             list_join:
771             - '.'
772             - - {get_attr: [NovaCompute, name]}
773               - storagemgmt
774           TENANTIP: {get_attr: [TenantPort, ip_address]}
775           TENANTHOST:
776             list_join:
777             - '.'
778             - - {get_attr: [NovaCompute, name]}
779               - tenant
780           MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
781           MANAGEMENTHOST:
782             list_join:
783             - '.'
784             - - {get_attr: [NovaCompute, name]}
785               - management
786   nova_server_resource:
787     description: Heat resource handle for the Nova compute server
788     value:
789       {get_resource: NovaCompute}