Set default network interfaces to nic1
[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: nic1
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   NovaApiHost:
161     type: string
162     default: ''  # Has to be here because of the ignored empty value bug
163   NovaComputeDriver:
164     type: string
165     default: libvirt.LibvirtDriver
166   NovaComputeExtraConfig:
167     default: {}
168     description: |
169       NovaCompute specific configuration to inject into the cluster. Same
170       structure as ExtraConfig.
171     type: json
172   NovaComputeLibvirtType:
173     type: string
174     default: ''
175   NovaDSN:
176     type: string
177   NovaPassword:
178     default: unset
179     description: The password for the nova service account, used by nova-api.
180     type: string
181     hidden: true
182   NovaPublicIP:
183     type: string
184     default: ''  # Has to be here because of the ignored empty value bug
185   NtpServer:
186     type: string
187     default: ''
188   RabbitHost:
189     type: string
190     default: ''  # Has to be here because of the ignored empty value bug
191   RabbitPassword:
192     default: guest
193     description: The password for RabbitMQ
194     type: string
195     hidden: true
196   RabbitUserName:
197     default: guest
198     description: The username for RabbitMQ
199     type: string
200   SnmpdReadonlyUserName:
201     default: ro_snmp_user
202     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
203     type: string
204   SnmpdReadonlyUserPassword:
205     default: unset
206     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
207     type: string
208     hidden: true
209
210
211 resources:
212
213   NovaCompute:
214     type: OS::Nova::Server
215     properties:
216       image:
217         {get_param: Image}
218       image_update_policy:
219         get_param: ImageUpdatePolicy
220       flavor: {get_param: Flavor}
221       key_name: {get_param: KeyName}
222       networks:
223         - network: ctlplane
224       user_data_format: SOFTWARE_CONFIG
225
226   NovaComputeConfig:
227     type: OS::TripleO::Compute::SoftwareConfig
228
229   NovaComputeDeployment:
230     type: OS::TripleO::SoftwareDeployment
231     properties:
232       signal_transport: NO_SIGNAL
233       config: {get_attr: [NovaComputeConfig, config_id]}
234       server: {get_resource: NovaCompute}
235       input_values:
236         debug: {get_param: Debug}
237         nova_compute_driver: {get_param: NovaComputeDriver}
238         nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
239         nova_dsn: {get_param: NovaDSN}
240         nova_public_ip: {get_param: NovaPublicIP}
241         nova_api_host: {get_param: NovaApiHost}
242         nova_password: {get_param: NovaPassword}
243         ceilometer_dsn: {get_param: CeilometerDSN}
244         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
245         ceilometer_password: {get_param: CeilometerPassword}
246         ceilometer_compute_agent: {get_param: CeilometerComputeAgent}
247         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
248         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
249         glance_host: {get_param: GlanceHost}
250         glance_port: {get_param: GlancePort}
251         glance_protocol: {get_param: GlanceProtocol}
252         keystone_host: {get_param: KeystoneHost}
253         neutron_flat_networks: {get_param: NeutronFlatNetworks}
254         neutron_host: {get_param: NeutronHost}
255         neutron_dsn: {get_param: NeutronDSN}
256         neutron_local_ip: {get_attr: [NovaCompute, networks, ctlplane, 0]}
257         neutron_tenant_network_type: {get_param: NeutronNetworkType}
258         neutron_tunnel_types: {get_param: NeutronTunnelTypes}
259         neutron_network_vlan_ranges: {get_param: NeutronNetworkVLANRanges}
260         neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
261         neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
262         neutron_physical_bridge: {get_param: NeutronPhysicalBridge}
263         neutron_public_interface: {get_param: NeutronPublicInterface}
264         neutron_password: {get_param: NeutronPassword}
265         admin_password: {get_param: AdminPassword}
266         rabbit_host: {get_param: RabbitHost}
267         rabbit_username: {get_param: RabbitUserName}
268         rabbit_password: {get_param: RabbitPassword}
269         ntp_server: {get_param: NtpServer}
270
271   NovaComputePassthrough:
272     type: OS::Heat::StructuredConfig
273     properties:
274       group: os-apply-config
275       config: {get_input: passthrough_config}
276
277   NovaComputePassthroughSpecific:
278     type: OS::Heat::StructuredConfig
279     properties:
280       group: os-apply-config
281       config: {get_input: passthrough_config_specific}
282
283   NovaComputePassthroughDeployment:
284     depends_on: [NovaComputeDeployment]
285     type: OS::Heat::StructuredDeployment
286     properties:
287       config: {get_resource: NovaComputePassthrough}
288       server: {get_resource: NovaCompute}
289       signal_transport: NO_SIGNAL
290       input_values:
291         passthrough_config: {get_param: ExtraConfig}
292
293   NovaComputePassthroughDeploymentSpecific:
294     depends_on: [NovaComputePassthroughDeployment]
295     type: OS::Heat::StructuredDeployment
296     properties:
297       config: {get_resource: NovaComputePassthroughSpecific}
298       server: {get_resource: NovaCompute}
299       signal_transport: NO_SIGNAL
300       input_values:
301         passthrough_config_specific: {get_param: NovaComputeExtraConfig}
302
303 outputs:
304   ip_address:
305     description: IP address of the server in the ctlplane network
306     value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
307   hostname:
308     description: Hostname of the server
309     value: {get_attr: [NovaCompute, name]}
310   hosts_entry:
311     description: >
312       Server's IP address and hostname in the /etc/hosts format
313     value:
314       str_replace:
315         template: "IP HOST HOST.novalocal"
316         params:
317           IP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
318           HOST: {get_attr: [NovaCompute, name]}
319   nova_server_resource:
320     description: Heat resource handle for the Nova compute server
321     value:
322       {get_resource: NovaCompute}