Merge "Don't store Neutron DB credentials on compute node"
[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     constraints:
76       - custom_constraint: nova.flavor
77   GlanceHost:
78     type: string
79     default: ''  # Has to be here because of the ignored empty value bug
80   GlancePort:
81     default: "9292"
82     description: Glance port.
83     type: string
84   GlanceProtocol:
85     default: http
86     description: Protocol to use when connecting to glance, set to https for SSL.
87     type: string
88   Image:
89     type: string
90     default: overcloud-compute
91     constraints:
92       - custom_constraint: glance.image
93   ImageUpdatePolicy:
94     default: 'REBUILD_PRESERVE_EPHEMERAL'
95     description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
96     type: string
97   KeyName:
98     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
99     type: string
100     default: default
101     constraints:
102       - custom_constraint: nova.keypair
103   KeystoneHost:
104     type: string
105     default: ''
106   NeutronBridgeMappings:
107     description: >
108       The OVS logical->physical bridge mappings to use. See the Neutron
109       documentation for details. Defaults to mapping br-ex - the external
110       bridge on hosts - to a physical name 'datacentre' which can be used
111       to create provider networks (and we use this for the default floating
112       network) - if changing this either use different post-install network
113       scripts or be sure to keep 'datacentre' as a mapping network name.
114     type: string
115     default: ""
116   NeutronEnableTunnelling:
117     type: string
118     default: "True"
119   NeutronFlatNetworks:
120     type: string
121     default: ''
122     description: >
123       If set, flat networks to configure in neutron plugins.
124   NeutronHost:
125     type: string
126     default: ''  # Has to be here because of the ignored empty value bug
127   NeutronNetworkType:
128     type: string
129     description: The tenant network type for Neutron, either gre or vxlan.
130     default: 'gre'
131   NeutronNetworkVLANRanges:
132     default: 'datacentre'
133     description: >
134       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
135       Neutron documentation for permitted values. Defaults to permitting any
136       VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
137     type: string
138   NeutronPassword:
139     default: unset
140     description: The password for the neutron service account, used by neutron agents.
141     type: string
142     hidden: true
143   NeutronPhysicalBridge:
144     default: ''
145     description: An OVS bridge to create for accessing external networks.
146     type: string
147   NeutronPublicInterface:
148     default: nic1
149     description: A port to add to the NeutronPhysicalBridge.
150     type: string
151   NeutronTunnelTypes:
152     type: string
153     description: |
154         The tunnel types for the Neutron tenant network. To specify multiple
155         values, use a comma separated string, like so: 'gre,vxlan'
156     default: 'gre'
157   NeutronPublicInterfaceRawDevice:
158     default: ''
159     type: string
160   NeutronDVR:
161     default: 'False'
162     type: string
163   NeutronMetadataProxySharedSecret:
164     default: 'unset'
165     description: Shared secret to prevent spoofing
166     type: string
167   NeutronMechanismDrivers:
168     default: 'openvswitch'
169     description: |
170         The mechanism drivers for the Neutron tenant network. To specify multiple
171         values, use a comma separated string, like so: 'openvswitch,l2_population'
172     type: string
173   NeutronAllowL3AgentFailover:
174     default: 'True'
175     description: Allow automatic l3-agent failover
176     type: string
177   NeutronAgentMode:
178     default: 'dvr_snat'
179     description: Agent mode for the neutron-l3-agent on the controller hosts
180     type: string
181   NovaApiHost:
182     type: string
183     default: ''  # Has to be here because of the ignored empty value bug
184   NovaComputeDriver:
185     type: string
186     default: libvirt.LibvirtDriver
187   NovaComputeExtraConfig:
188     default: {}
189     description: |
190       NovaCompute specific configuration to inject into the cluster. Same
191       structure as ExtraConfig.
192     type: json
193   NovaComputeLibvirtType:
194     type: string
195     default: ''
196   NovaPassword:
197     default: unset
198     description: The password for the nova service account, used by nova-api.
199     type: string
200     hidden: true
201   NovaPublicIP:
202     type: string
203     default: ''  # Has to be here because of the ignored empty value bug
204   NtpServer:
205     type: string
206     default: ''
207   RabbitHost:
208     type: string
209     default: ''  # Has to be here because of the ignored empty value bug
210   RabbitPassword:
211     default: guest
212     description: The password for RabbitMQ
213     type: string
214     hidden: true
215   RabbitUserName:
216     default: guest
217     description: The username for RabbitMQ
218     type: string
219   SnmpdReadonlyUserName:
220     default: ro_snmp_user
221     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
222     type: string
223   SnmpdReadonlyUserPassword:
224     default: unset
225     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
226     type: string
227     hidden: true
228
229
230 resources:
231
232   NovaCompute:
233     type: OS::Nova::Server
234     properties:
235       image:
236         {get_param: Image}
237       image_update_policy:
238         get_param: ImageUpdatePolicy
239       flavor: {get_param: Flavor}
240       key_name: {get_param: KeyName}
241       networks:
242         - network: ctlplane
243       user_data_format: SOFTWARE_CONFIG
244
245   NetworkConfig:
246     type: OS::TripleO::Net::SoftwareConfig
247
248   NetworkDeployment:
249     type: OS::TripleO::SoftwareDeployment
250     properties:
251       signal_transport: NO_SIGNAL
252       config: {get_attr: [NetworkConfig, config_id]}
253       server: {get_resource: NovaCompute}
254       input_values:
255         bridge_name: {get_param: NeutronPhysicalBridge}
256         interface_name: {get_param: NeutronPublicInterface}
257
258   NovaComputeConfig:
259     type: OS::TripleO::Compute::SoftwareConfig
260
261   NovaComputeDeployment:
262     type: OS::TripleO::SoftwareDeployment
263     properties:
264       signal_transport: NO_SIGNAL
265       config: {get_attr: [NovaComputeConfig, config_id]}
266       server: {get_resource: NovaCompute}
267       input_values:
268         debug: {get_param: Debug}
269         nova_compute_driver: {get_param: NovaComputeDriver}
270         nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
271         nova_public_ip: {get_param: NovaPublicIP}
272         nova_api_host: {get_param: NovaApiHost}
273         nova_password: {get_param: NovaPassword}
274         ceilometer_dsn: {get_param: CeilometerDSN}
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}