Add TimeZone parameter for all node types
[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'
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:1000", ]
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:1000", ]
137     type: comma_delimited_list
138   NeutronPublicInterfaceRawDevice:
139     default: ''
140     type: string
141   NeutronDVR:
142     default: 'False'
143     type: string
144   NeutronMetadataProxySharedSecret:
145     description: Shared secret to prevent spoofing
146     type: string
147     hidden: true
148   NeutronCorePlugin:
149     default: 'ml2'
150     description: |
151         The core plugin for Neutron. The value should be the entrypoint to be loaded
152         from neutron.core_plugins namespace.
153     type: string
154   NeutronServicePlugins:
155     default: "router"
156     description: |
157         Comma-separated list of service plugin entrypoints to be loaded from the
158         neutron.service_plugins namespace.
159     type: comma_delimited_list
160   NeutronTypeDrivers:
161     default: "vxlan,vlan,flat,gre"
162     description: |
163         Comma-separated list of network type driver entrypoints to be loaded.
164     type: comma_delimited_list
165   NeutronMechanismDrivers:
166     default: 'openvswitch'
167     description: |
168         The mechanism drivers for the Neutron tenant network.
169     type: comma_delimited_list
170   # Not relevant for Computes, should be removed
171   NeutronAllowL3AgentFailover:
172     default: 'True'
173     description: Allow automatic l3-agent failover
174     type: string
175   # Not relevant for Computes, should be removed
176   NeutronL3HA:
177     default: 'False'
178     description: Whether to enable l3-agent HA
179     type: string
180   NeutronAgentMode:
181     default: 'dvr_snat'
182     description: Agent mode for the neutron-l3-agent on the controller hosts
183     type: string
184   NovaApiHost:
185     type: string
186     default: ''  # Has to be here because of the ignored empty value bug
187   NovaComputeDriver:
188     type: string
189     default: libvirt.LibvirtDriver
190   NovaComputeExtraConfig:
191     default: {}
192     description: |
193       NovaCompute specific configuration to inject into the cluster. Same
194       structure as ExtraConfig.
195     type: json
196   NovaComputeLibvirtType:
197     type: string
198     default: ''
199   NovaComputeLibvirtVifDriver:
200     default: ''
201     description: Libvirt VIF driver configuration for the network
202     type: string
203   NovaEnableRbdBackend:
204     default: false
205     description: Whether to enable or not the Rbd backend for Nova
206     type: boolean
207   NovaPassword:
208     description: The password for the nova service account, used by nova-api.
209     type: string
210     hidden: true
211   NovaPublicIP:
212     type: string
213     default: ''  # Has to be here because of the ignored empty value bug
214   NovaOVSBridge:
215     default: 'br-int'
216     description: Name of integration bridge used by Open vSwitch
217     type: string
218   NovaSecurityGroupAPI:
219     default: 'neutron'
220     description: The full class name of the security API class
221     type: string
222   NtpServer:
223     default: ''
224     description: Comma-separated list of ntp servers
225     type: comma_delimited_list
226   RabbitHost:
227     type: string
228     default: ''  # Has to be here because of the ignored empty value bug
229   RabbitPassword:
230     default: guest
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   SnmpdReadonlyUserName:
249     default: ro_snmp_user
250     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
251     type: string
252   SnmpdReadonlyUserPassword:
253     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
254     type: string
255     hidden: true
256   EnablePackageInstall:
257     default: 'false'
258     description: Set to true to enable package installation via Puppet
259     type: boolean
260   ServiceNetMap:
261     default: {}
262     description: Mapping of service_name -> network name. Typically set
263                  via parameter_defaults in the resource registry.
264     type: json
265   EndpointMap:
266     default: {}
267     description: Mapping of service endpoint -> protocol. Typically set
268                  via parameter_defaults in the resource registry.
269     type: json
270   TimeZone:
271     default: 'UTC'
272     description: The timezone to be set on compute nodes.
273     type: string
274   UpdateIdentifier:
275     default: ''
276     type: string
277     description: >
278       Setting to a previously unused value during stack-update will trigger
279       package update on all nodes
280   Hostname:
281     type: string
282     default: '' # Defaults to Heat created hostname
283   NetworkDeploymentActions:
284     type: comma_delimited_list
285     description: >
286       Heat action when to apply network configuration changes
287     default: ['CREATE']
288   SoftwareConfigTransport:
289     default: POLL_SERVER_CFN
290     description: |
291       How the server should receive the metadata required for software configuration.
292     type: string
293     constraints:
294     - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
295   CloudDomain:
296     default: ''
297     type: string
298     description: >
299       The DNS domain used for the hosts. This should match the dhcp_domain
300       configured in the Undercloud neutron. Defaults to localdomain.
301   ServerMetadata:
302     default: {}
303     description: >
304       Extra properties or metadata passed to Nova for the created nodes in
305       the overcloud. It's accessible via the Nova metadata API.
306     type: json
307   SchedulerHints:
308     type: json
309     description: Optional scheduler hints to pass to nova
310     default: {}
311
312 resources:
313
314   NovaCompute:
315     type: OS::Nova::Server
316     properties:
317       image:
318         {get_param: Image}
319       image_update_policy:
320         get_param: ImageUpdatePolicy
321       flavor: {get_param: Flavor}
322       key_name: {get_param: KeyName}
323       networks:
324         - network: ctlplane
325       user_data_format: SOFTWARE_CONFIG
326       user_data: {get_resource: UserData}
327       name: {get_param: Hostname}
328       software_config_transport: {get_param: SoftwareConfigTransport}
329       metadata: {get_param: ServerMetadata}
330       scheduler_hints: {get_param: SchedulerHints}
331
332   # Combine the NodeAdminUserData and NodeUserData mime archives
333   UserData:
334     type: OS::Heat::MultipartMime
335     properties:
336       parts:
337       - config: {get_resource: NodeAdminUserData}
338         type: multipart
339       - config: {get_resource: NodeUserData}
340         type: multipart
341
342   # Creates the "heat-admin" user if configured via the environment
343   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
344   NodeAdminUserData:
345     type: OS::TripleO::NodeAdminUserData
346
347   # For optional operator additional userdata
348   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
349   NodeUserData:
350     type: OS::TripleO::NodeUserData
351
352   ExternalPort:
353     type: OS::TripleO::Compute::Ports::ExternalPort
354     properties:
355       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
356
357   InternalApiPort:
358     type: OS::TripleO::Compute::Ports::InternalApiPort
359     properties:
360       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
361
362   StoragePort:
363     type: OS::TripleO::Compute::Ports::StoragePort
364     properties:
365       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
366
367   StorageMgmtPort:
368     type: OS::TripleO::Compute::Ports::StorageMgmtPort
369     properties:
370       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
371
372   TenantPort:
373     type: OS::TripleO::Compute::Ports::TenantPort
374     properties:
375       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
376
377   ManagementPort:
378     type: OS::TripleO::Compute::Ports::ManagementPort
379     properties:
380       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
381
382   NetIpMap:
383     type: OS::TripleO::Network::Ports::NetIpMap
384     properties:
385       ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
386       ExternalIp: {get_attr: [ExternalPort, ip_address]}
387       InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
388       StorageIp: {get_attr: [StoragePort, ip_address]}
389       StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
390       TenantIp: {get_attr: [TenantPort, ip_address]}
391       ManagementIp: {get_attr: [ManagementPort, ip_address]}
392
393   NetworkConfig:
394     type: OS::TripleO::Compute::Net::SoftwareConfig
395     properties:
396       ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
397       ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
398       InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
399       StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
400       StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
401       TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
402       ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
403
404   NetworkDeployment:
405     type: OS::TripleO::SoftwareDeployment
406     properties:
407       config: {get_resource: NetworkConfig}
408       server: {get_resource: NovaCompute}
409       actions: {get_param: NetworkDeploymentActions}
410       input_values:
411         bridge_name: {get_param: NeutronPhysicalBridge}
412         interface_name: {get_param: NeutronPublicInterface}
413
414   NovaComputeConfig:
415     type: OS::Heat::StructuredConfig
416     properties:
417       group: os-apply-config
418       config:
419         hiera:
420           hierarchy:
421             - '"%{::uuid}"'
422             - heat_config_%{::deploy_config_name}
423             - compute_extraconfig
424             - extraconfig
425             - compute
426             - ceph_cluster # provided by CephClusterConfig
427             - ceph
428             - all_nodes # provided by allNodesConfig
429             - '"%{::osfamily}"'
430             - common
431             - cisco_n1kv_data  # Optionally provided by ComputeExtraConfigPre
432             - nova_nuage_data  # Optionally provided by ComputeExtraConfigPre
433             - midonet_data # Optionally provided by AllNodesExtraConfig
434           datafiles:
435             compute_extraconfig:
436               mapped_data: {get_param: NovaComputeExtraConfig}
437             extraconfig:
438               mapped_data: {get_param: ExtraConfig}
439             common:
440               raw_data: {get_file: hieradata/common.yaml}
441             ceph:
442               raw_data: {get_file: hieradata/ceph.yaml}
443             compute:
444               raw_data: {get_file: hieradata/compute.yaml}
445               mapped_data:
446                 cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
447                 nova::debug: {get_input: debug}
448                 nova::rabbit_userid: {get_input: rabbit_username}
449                 nova::rabbit_password: {get_input: rabbit_password}
450                 nova::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
451                 nova::rabbit_port: {get_input: rabbit_client_port}
452                 nova_compute_driver: {get_input: nova_compute_driver}
453                 nova::compute::libvirt::libvirt_virt_type: {get_input: nova_compute_libvirt_type}
454                 nova::compute::neutron::libvirt_vif_driver: {get_input: nova_compute_libvirt_vif_driver}
455                 nova_api_host: {get_input: nova_api_host}
456                 nova::compute::vncproxy_host: {get_input: nova_public_ip}
457                 nova::compute::rbd::ephemeral_storage: {get_input: nova_enable_rbd_backend}
458                 rbd_persistent_storage: {get_input: cinder_enable_rbd_backend}
459                 nova_password: {get_input: nova_password}
460                 nova::compute::vncserver_proxyclient_address: {get_input: nova_vnc_proxyclient_address}
461                 nova::network::neutron::neutron_ovs_bridge: {get_input: nova_ovs_bridge}
462                 nova::network::neutron::security_group_api: {get_input: nova_security_group_api}
463                 ceilometer::debug: {get_input: debug}
464                 ceilometer::rabbit_userid: {get_input: rabbit_username}
465                 ceilometer::rabbit_password: {get_input: rabbit_password}
466                 ceilometer::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
467                 ceilometer::rabbit_port: {get_input: rabbit_client_port}
468                 ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
469                 ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
470                 ceilometer::agent::auth::auth_url: {get_input: ceilometer_agent_auth_url}
471                 ceilometer_compute_agent: {get_input: ceilometer_compute_agent}
472                 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
473                 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
474                 nova::glance_api_servers: {get_input: glance_api_servers}
475                 neutron::debug: {get_input: debug}
476                 neutron::rabbit_password: {get_input: rabbit_password}
477                 neutron::rabbit_user: {get_input: rabbit_username}
478                 neutron::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
479                 neutron::rabbit_port: {get_input: rabbit_client_port}
480                 neutron::plugins::ml2::flat_networks: {get_input: neutron_flat_networks}
481                 neutron_host: {get_input: neutron_host}
482                 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
483
484                 neutron::plugins::ml2::tenant_network_types: {get_input: neutron_tenant_network_types}
485                 neutron::agents::ml2::ovs:tunnel_types: {get_input: neutron_tunnel_types}
486                 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
487                 neutron::plugins::ml2::tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
488                 neutron::plugins::ml2::vni_ranges: {get_input: neutron_vni_ranges}
489                 neutron::agents::ml2::ovs::bridge_mappings: {get_input: neutron_bridge_mappings}
490                 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
491                 neutron::agents::ml2::ovs::l2_population: {get_input: neutron_enable_l2pop}
492                 neutron_physical_bridge: {get_input: neutron_physical_bridge}
493                 neutron_public_interface: {get_input: neutron_public_interface}
494                 nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
495                 nova::network::neutron::neutron_url: {get_input: neutron_internal_url}
496                 nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
497                 neutron_router_distributed: {get_input: neutron_router_distributed}
498                 neutron_agent_mode: {get_input: neutron_agent_mode}
499                 neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
500                 neutron::core_plugin: {get_input: neutron_core_plugin}
501                 neutron::service_plugins: {get_input: neutron_service_plugins}
502                 neutron::plugins::ml2::type_drivers: {get_input: neutron_type_drivers}
503                 neutron::plugins::ml2::mechanism_drivers: {get_input: neutron_mechanism_drivers}
504                 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
505                 keystone_public_api_virtual_ip: {get_input: keystone_vip}
506                 admin_password: {get_input: admin_password}
507                 ntp::servers: {get_input: ntp_servers}
508                 timezone::timezone: {get_input: timezone}
509                 tripleo::packages::enable_install: {get_input: enable_package_install}
510                 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
511
512   NovaComputeDeployment:
513     type: OS::TripleO::SoftwareDeployment
514     depends_on: NetworkDeployment
515     properties:
516       config: {get_resource: NovaComputeConfig}
517       server: {get_resource: NovaCompute}
518       input_values:
519         cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
520         debug: {get_param: Debug}
521         nova_compute_driver: {get_param: NovaComputeDriver}
522         nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
523         nova_compute_libvirt_vif_driver: {get_param: NovaComputeLibvirtVifDriver}
524         nova_public_ip: {get_param: NovaPublicIP}
525         nova_api_host: {get_param: NovaApiHost}
526         nova_password: {get_param: NovaPassword}
527         nova_enable_rbd_backend: {get_param: NovaEnableRbdBackend}
528         cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
529         nova_vnc_proxyclient_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaVncProxyNetwork]}]}
530         nova_ovs_bridge: {get_param: NovaOVSBridge}
531         nova_security_group_api: {get_param: NovaSecurityGroupAPI}
532         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
533         ceilometer_password: {get_param: CeilometerPassword}
534         ceilometer_compute_agent: {get_param: CeilometerComputeAgent}
535         ceilometer_agent_auth_url: {get_param: [EndpointMap, KeystoneInternal, uri]}
536         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
537         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
538         glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
539         neutron_flat_networks:
540           str_replace:
541             template: NETWORKS
542             params:
543               NETWORKS: {get_param: NeutronFlatNetworks}
544         neutron_host: {get_param: NeutronHost}
545         neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
546         neutron_tunnel_id_ranges:
547           str_replace:
548             template: RANGES
549             params:
550               RANGES: {get_param: NeutronTunnelIdRanges}
551         neutron_vni_ranges:
552           str_replace:
553             template: RANGES
554             params:
555               RANGES: {get_param: NeutronVniRanges}
556         neutron_tenant_network_types:
557           str_replace:
558             template: TYPES
559             params:
560               TYPES: {get_param: NeutronNetworkType}
561         neutron_tunnel_types:
562           str_replace:
563             template: TYPES
564             params:
565               TYPES: {get_param: NeutronTunnelTypes}
566         neutron_network_vlan_ranges:
567           str_replace:
568             template: RANGES
569             params:
570               RANGES: {get_param: NeutronNetworkVLANRanges}
571         neutron_bridge_mappings:
572           str_replace:
573             template: MAPPINGS
574             params:
575               MAPPINGS: {get_param: NeutronBridgeMappings}
576         neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
577         neutron_enable_l2pop: {get_param: NeutronEnableL2Pop}
578         neutron_physical_bridge: {get_param: NeutronPhysicalBridge}
579         neutron_public_interface: {get_param: NeutronPublicInterface}
580         neutron_password: {get_param: NeutronPassword}
581         neutron_agent_mode: {get_param: NeutronAgentMode}
582         neutron_router_distributed: {get_param: NeutronDVR}
583         neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
584         neutron_core_plugin: {get_param: NeutronCorePlugin}
585         neutron_service_plugins:
586           str_replace:
587             template: PLUGINS
588             params:
589               PLUGINS: {get_param: NeutronServicePlugins}
590         neutron_type_drivers:
591           str_replace:
592             template: DRIVERS
593             params:
594               DRIVERS: {get_param: NeutronTypeDrivers}
595         neutron_mechanism_drivers:
596           str_replace:
597             template: MECHANISMS
598             params:
599               MECHANISMS: {get_param: NeutronMechanismDrivers}
600         neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
601         neutron_internal_url: {get_param: [EndpointMap, NeutronInternal, uri]}
602         neutron_admin_auth_url: {get_param: [EndpointMap, KeystoneAdmin, uri]}
603         keystone_vip: {get_param: KeystonePublicApiVirtualIP}
604         admin_password: {get_param: AdminPassword}
605         rabbit_username: {get_param: RabbitUserName}
606         rabbit_password: {get_param: RabbitPassword}
607         rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
608         rabbit_client_port: {get_param: RabbitClientPort}
609         ntp_servers: {get_param: NtpServer}
610         timezone: {get_param: TimeZone}
611         enable_package_install: {get_param: EnablePackageInstall}
612         enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
613
614   # Resource for site-specific injection of root certificate
615   NodeTLSCAData:
616     depends_on: NovaComputeDeployment
617     type: OS::TripleO::NodeTLSCAData
618     properties:
619       server: {get_resource: NovaCompute}
620
621   # Hook for site-specific additional pre-deployment config, e.g extra hieradata
622   ComputeExtraConfigPre:
623     depends_on: NovaComputeDeployment
624     type: OS::TripleO::ComputeExtraConfigPre
625     properties:
626         server: {get_resource: NovaCompute}
627
628   # Hook for site-specific additional pre-deployment config,
629   # applying to all nodes, e.g node registration/unregistration
630   NodeExtraConfig:
631     depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
632     type: OS::TripleO::NodeExtraConfig
633     properties:
634         server: {get_resource: NovaCompute}
635
636   UpdateConfig:
637     type: OS::TripleO::Tasks::PackageUpdate
638
639   UpdateDeployment:
640     type: OS::Heat::SoftwareDeployment
641     properties:
642       config: {get_resource: UpdateConfig}
643       server: {get_resource: NovaCompute}
644       input_values:
645         update_identifier:
646           get_param: UpdateIdentifier
647
648 outputs:
649   ip_address:
650     description: IP address of the server in the ctlplane network
651     value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
652   external_ip_address:
653     description: IP address of the server in the external network
654     value: {get_attr: [ExternalPort, ip_address]}
655   internal_api_ip_address:
656     description: IP address of the server in the internal_api network
657     value: {get_attr: [InternalApiPort, ip_address]}
658   storage_ip_address:
659     description: IP address of the server in the storage network
660     value: {get_attr: [StoragePort, ip_address]}
661   storage_mgmt_ip_address:
662     description: IP address of the server in the storage_mgmt network
663     value: {get_attr: [StorageMgmtPort, ip_address]}
664   tenant_ip_address:
665     description: IP address of the server in the tenant network
666     value: {get_attr: [TenantPort, ip_address]}
667   management_ip_address:
668     description: IP address of the server in the management network
669     value: {get_attr: [ManagementPort, ip_address]}
670   hostname:
671     description: Hostname of the server
672     value: {get_attr: [NovaCompute, name]}
673   hosts_entry:
674     description: >
675       Server's IP address and hostname in the /etc/hosts format
676     value:
677       str_replace:
678         template: "IP HOST.DOMAIN HOST"
679         params:
680           IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
681           DOMAIN: {get_param: CloudDomain}
682           HOST: {get_attr: [NovaCompute, name]}
683   nova_server_resource:
684     description: Heat resource handle for the Nova compute server
685     value:
686       {get_resource: NovaCompute}
687   config_identifier:
688     description: identifier which changes if the node configuration may need re-applying
689     value:
690       list_join:
691       - ','
692       - - {get_attr: [NovaComputeDeployment, deploy_stdout]}
693         - {get_attr: [NodeTLSCAData, deploy_stdout]}
694         - {get_attr: [ComputeExtraConfigPre, deploy_stdout]}
695         - {get_param: UpdateIdentifier}