Add missing Neutron DVR params to without-mergepy
[apex-tripleo-heat-templates.git] / compute.yaml
1 heat_template_version: 2014-10-16
2
3 description: >
4   OpenStack hypervisor node. Can be wrapped in a ResourceGroup for scaling.
5
6 parameters:
7   AdminPassword:
8     default: unset
9     description: The password for the keystone admin account, used for monitoring, querying neutron etc.
10     type: string
11     hidden: true
12   CeilometerComputeAgent:
13     description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
14     type: string
15     default: ''
16     constraints:
17     - allowed_values: ['', Present]
18   CeilometerDSN:
19     type: string
20   CeilometerMeteringSecret:
21     default: unset
22     description: Secret shared by the ceilometer services.
23     type: string
24     hidden: true
25   CeilometerPassword:
26     default: unset
27     description: The password for the ceilometer service account.
28     type: string
29     hidden: true
30   Debug:
31     default: ''
32     description: Set to True to enable debugging on all services.
33     type: string
34   ExtraConfig:
35     default: {}
36     description: |
37       Additional configuration to inject into the cluster. The JSON should have
38       the following structure:
39         {"FILEKEY":
40           {"config":
41             [{"section": "SECTIONNAME",
42               "values":
43                 [{"option": "OPTIONNAME",
44                   "value": "VALUENAME"
45                  }
46                 ]
47              }
48             ]
49           }
50         }
51       For instance:
52         {"nova":
53           {"config":
54             [{"section": "default",
55               "values":
56                 [{"option": "force_config_drive",
57                   "value": "always"
58                  }
59                 ]
60              },
61              {"section": "cells",
62               "values":
63                 [{"option": "driver",
64                   "value": "nova.cells.rpc_driver.CellsRPCDriver"
65                  }
66                 ]
67              }
68             ]
69           }
70         }
71     type: json
72   Flavor:
73     description: Flavor for the nova compute node
74     type: string
75     default: baremetal
76     constraints:
77       - custom_constraint: nova.flavor
78   GlanceHost:
79     type: string
80     default: ''  # Has to be here because of the ignored empty value bug
81   GlancePort:
82     default: "9292"
83     description: Glance port.
84     type: string
85   GlanceProtocol:
86     default: http
87     description: Protocol to use when connecting to glance, set to https for SSL.
88     type: string
89   Image:
90     type: string
91     default: overcloud-compute
92     constraints:
93       - custom_constraint: glance.image
94   ImageUpdatePolicy:
95     default: 'REBUILD_PRESERVE_EPHEMERAL'
96     description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
97     type: string
98   KeyName:
99     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
100     type: string
101     default: default
102     constraints:
103       - custom_constraint: nova.keypair
104   KeystoneHost:
105     type: string
106     default: ''
107   NeutronBridgeMappings:
108     description: >
109       The OVS logical->physical bridge mappings to use. See the Neutron
110       documentation for details. Defaults to mapping br-ex - the external
111       bridge on hosts - to a physical name 'datacentre' which can be used
112       to create provider networks (and we use this for the default floating
113       network) - if changing this either use different post-install network
114       scripts or be sure to keep 'datacentre' as a mapping network name.
115     type: string
116     default: ""
117   NeutronDSN:
118     type: string
119   NeutronEnableTunnelling:
120     type: string
121     default: "True"
122   NeutronFlatNetworks:
123     type: string
124     default: ''
125     description: >
126       If set, flat networks to configure in neutron plugins.
127   NeutronHost:
128     type: string
129     default: ''  # Has to be here because of the ignored empty value bug
130   NeutronNetworkType:
131     type: string
132     description: The tenant network type for Neutron, either gre or vxlan.
133     default: 'gre'
134   NeutronNetworkVLANRanges:
135     default: 'datacentre'
136     description: >
137       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
138       Neutron documentation for permitted values. Defaults to permitting any
139       VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
140     type: string
141   NeutronPassword:
142     default: unset
143     description: The password for the neutron service account, used by neutron agents.
144     type: string
145     hidden: true
146   NeutronPhysicalBridge:
147     default: ''
148     description: An OVS bridge to create for accessing external networks.
149     type: string
150   NeutronPublicInterface:
151     default: eth0
152     description: A port to add to the NeutronPhysicalBridge.
153     type: string
154   NeutronTunnelTypes:
155     type: string
156     description: |
157         The tunnel types for the Neutron tenant network. To specify multiple
158         values, use a comma separated string, like so: 'gre,vxlan'
159     default: 'gre'
160   NeutronPublicInterfaceRawDevice:
161     default: ''
162     type: string
163   NeutronDVR:
164     default: 'False'
165     type: string
166   NeutronMetadataProxySharedSecret:
167     default: 'unset'
168     description: Shared secret to prevent spoofing
169     type: string
170   NeutronMechanismDrivers:
171     default: 'openvswitch'
172     description: |
173         The mechanism drivers for the Neutron tenant network. To specify multiple
174         values, use a comma separated string, like so: 'openvswitch,l2_population'
175     type: string
176   NeutronAllowL3AgentFailover:
177     default: 'True'
178     description: Allow automatic l3-agent failover
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   NovaDSN:
200     type: string
201   NovaPassword:
202     default: unset
203     description: The password for the nova service account, used by nova-api.
204     type: string
205     hidden: true
206   NovaPublicIP:
207     type: string
208     default: ''  # Has to be here because of the ignored empty value bug
209   NtpServer:
210     type: string
211     default: ''
212   RabbitHost:
213     type: string
214     default: ''  # Has to be here because of the ignored empty value bug
215   RabbitPassword:
216     default: guest
217     description: The password for RabbitMQ
218     type: string
219     hidden: true
220   RabbitUserName:
221     default: guest
222     description: The username for RabbitMQ
223     type: string
224   SnmpdReadonlyUserName:
225     default: ro_snmp_user
226     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
227     type: string
228   SnmpdReadonlyUserPassword:
229     default: unset
230     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
231     type: string
232     hidden: true
233
234
235 resources:
236
237   NovaCompute:
238     type: OS::Nova::Server
239     properties:
240       image:
241         {get_param: Image}
242       image_update_policy:
243         get_param: ImageUpdatePolicy
244       flavor: {get_param: Flavor}
245       key_name: {get_param: KeyName}
246       networks:
247         - network: ctlplane
248       user_data_format: SOFTWARE_CONFIG
249
250   NovaComputeConfig:
251     type: OS::TripleO::Compute::SoftwareConfig
252
253   NovaComputeDeployment:
254     type: OS::TripleO::SoftwareDeployment
255     properties:
256       signal_transport: NO_SIGNAL
257       config: {get_attr: [NovaComputeConfig, config_id]}
258       server: {get_resource: NovaCompute}
259       input_values:
260         debug: {get_param: Debug}
261         nova_compute_driver: {get_param: NovaComputeDriver}
262         nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
263         nova_dsn: {get_param: NovaDSN}
264         nova_public_ip: {get_param: NovaPublicIP}
265         nova_api_host: {get_param: NovaApiHost}
266         nova_password: {get_param: NovaPassword}
267         ceilometer_dsn: {get_param: CeilometerDSN}
268         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
269         ceilometer_password: {get_param: CeilometerPassword}
270         ceilometer_compute_agent: {get_param: CeilometerComputeAgent}
271         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
272         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
273         glance_host: {get_param: GlanceHost}
274         glance_port: {get_param: GlancePort}
275         glance_protocol: {get_param: GlanceProtocol}
276         keystone_host: {get_param: KeystoneHost}
277         neutron_flat_networks: {get_param: NeutronFlatNetworks}
278         neutron_host: {get_param: NeutronHost}
279         neutron_dsn: {get_param: NeutronDSN}
280         neutron_local_ip: {get_attr: [NovaCompute, networks, ctlplane, 0]}
281         neutron_tenant_network_type: {get_param: NeutronNetworkType}
282         neutron_tunnel_types: {get_param: NeutronTunnelTypes}
283         neutron_network_vlan_ranges: {get_param: NeutronNetworkVLANRanges}
284         neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
285         neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
286         neutron_physical_bridge: {get_param: NeutronPhysicalBridge}
287         neutron_public_interface: {get_param: NeutronPublicInterface}
288         neutron_password: {get_param: NeutronPassword}
289         neutron_agent_mode: {get_param: NeutronAgentMode}
290         neutron_router_distributed: {get_param: NeutronDVR}
291         neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
292         neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
293         neutron_allow_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
294         neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
295         admin_password: {get_param: AdminPassword}
296         rabbit_host: {get_param: RabbitHost}
297         rabbit_username: {get_param: RabbitUserName}
298         rabbit_password: {get_param: RabbitPassword}
299         ntp_server: {get_param: NtpServer}
300
301   NovaComputePassthrough:
302     type: OS::Heat::StructuredConfig
303     properties:
304       group: os-apply-config
305       config: {get_input: passthrough_config}
306
307   NovaComputePassthroughSpecific:
308     type: OS::Heat::StructuredConfig
309     properties:
310       group: os-apply-config
311       config: {get_input: passthrough_config_specific}
312
313   NovaComputePassthroughDeployment:
314     depends_on: [NovaComputeDeployment]
315     type: OS::Heat::StructuredDeployment
316     properties:
317       config: {get_resource: NovaComputePassthrough}
318       server: {get_resource: NovaCompute}
319       signal_transport: NO_SIGNAL
320       input_values:
321         passthrough_config: {get_param: ExtraConfig}
322
323   NovaComputePassthroughDeploymentSpecific:
324     depends_on: [NovaComputePassthroughDeployment]
325     type: OS::Heat::StructuredDeployment
326     properties:
327       config: {get_resource: NovaComputePassthroughSpecific}
328       server: {get_resource: NovaCompute}
329       signal_transport: NO_SIGNAL
330       input_values:
331         passthrough_config_specific: {get_param: NovaComputeExtraConfig}
332
333 outputs:
334   ip_address:
335     description: IP address of the server in the ctlplane network
336     value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
337   hostname:
338     description: Hostname of the server
339     value: {get_attr: [NovaCompute, name]}
340   hosts_entry:
341     description: >
342       Server's IP address and hostname in the /etc/hosts format
343     value:
344       str_replace:
345         template: "IP HOST HOST.novalocal"
346         params:
347           IP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
348           HOST: {get_attr: [NovaCompute, name]}
349   nova_server_resource:
350     description: Heat resource handle for the Nova compute server
351     value:
352       {get_resource: NovaCompute}