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