blob: 252f84536ef4a44506a50e6421cb9283658368af [file] [log] [blame]
Filip Pytloun4a72d792015-10-06 16:28:32 +02001
Aleš Komárek72152852017-04-11 13:48:48 +02002============
3Nova Formula
4============
Filip Pytloun4a72d792015-10-06 16:28:32 +02005
Jakub Pavlikfcf34f82016-05-20 09:35:51 +02006OpenStack Nova provides a cloud computing fabric controller, supporting a wide
7variety of virtualization technologies, including KVM, Xen, LXC, VMware, and
8more. In addition to its native API, it includes compatibility with the
9commonly encountered Amazon EC2 and S3 APIs.
Filip Pytloun4a72d792015-10-06 16:28:32 +020010
Aleš Komárek72152852017-04-11 13:48:48 +020011Sample Pillars
Filip Pytloun4a72d792015-10-06 16:28:32 +020012==============
13
14Controller nodes
15----------------
16
17Nova services on the controller node
18
19.. code-block:: yaml
20
21 nova:
22 controller:
23 version: juno
24 enabled: true
25 security_group: true
Lachlan Evensonb72de502016-01-20 15:34:04 -080026 cpu_allocation_ratio: 8.0
27 ram_allocation_ratio: 1.0
Jiri Konecny9344a372016-03-21 19:25:48 +010028 disk_allocation_ratio: 1.0
Jiri Konecnyb5a80e42016-03-22 11:51:01 +010029 workers: 8
Jakub Pavlik617a8962016-09-04 18:50:06 +020030 report_interval: 60
Filip Pytloun4a72d792015-10-06 16:28:32 +020031 bind:
32 public_address: 10.0.0.122
33 public_name: openstack.domain.com
34 novncproxy_port: 6080
35 database:
36 engine: mysql
37 host: 127.0.0.1
38 port: 3306
39 name: nova
40 user: nova
41 password: pwd
42 identity:
43 engine: keystone
44 host: 127.0.0.1
45 port: 35357
46 user: nova
47 password: pwd
48 tenant: service
49 message_queue:
50 engine: rabbitmq
51 host: 127.0.0.1
52 port: 5672
53 user: openstack
54 password: pwd
55 virtual_host: '/openstack'
56 network:
57 engine: neutron
58 host: 127.0.0.1
59 port: 9696
Jakub Pavlik617a8962016-09-04 18:50:06 +020060 extension_sync_interval: 600
Filip Pytloun4a72d792015-10-06 16:28:32 +020061 identity:
62 engine: keystone
63 host: 127.0.0.1
64 port: 35357
65 user: neutron
66 password: pwd
67 tenant: service
68 metadata:
69 password: password
Petr Michalecaa23dc02016-11-29 16:30:25 +010070 audit:
71 enabled: false
Simon Pasquier8683b7a2017-02-03 16:00:16 +010072 osapi_max_limit: 500
Filip Pytloun4a72d792015-10-06 16:28:32 +020073
Jiri Konecnye31f2c52016-04-14 17:16:02 +020074
Filip Pytloun4a72d792015-10-06 16:28:32 +020075Nova services from custom package repository
76
77.. code-block:: yaml
78
79 nova:
80 controller:
81 version: juno
82 source:
83 engine: pkg
84 address: http://...
85 ....
86
Jiri Konecnye31f2c52016-04-14 17:16:02 +020087
88Client-side RabbitMQ HA setup
89
90.. code-block:: yaml
91
92 nova:
93 controller:
94 ....
95 message_queue:
96 engine: rabbitmq
97 members:
98 - host: 10.0.16.1
99 - host: 10.0.16.2
100 - host: 10.0.16.3
101 user: openstack
102 password: pwd
103 virtual_host: '/openstack'
104 ....
105
106
Petr Michalecaa23dc02016-11-29 16:30:25 +0100107Enable auditing filter, ie: CADF
108
109.. code-block:: yaml
110
111 nova:
112 controller:
Simon Pasquier6a3c8f72016-12-19 15:37:24 +0100113 audit:
Petr Michalecaa23dc02016-11-29 16:30:25 +0100114 enabled: true
115 ....
116 filter_factory: 'keystonemiddleware.audit:filter_factory'
117 map_file: '/etc/pycadf/nova_api_audit_map.conf'
118 ....
119
120
Ondrej Smola25b53cb2017-04-28 10:56:19 +0200121Enable CORS parameters
122
123.. code-block:: yaml
124
125 nova:
126 controller:
127 cors:
128 allowed_origin: https:localhost.local,http:localhost.local
129 expose_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
130 allow_methods: GET,PUT,POST,DELETE,PATCH
131 allow_headers: X-Auth-Token,X-Openstack-Request-Id,X-Subject-Token
132 allow_credentials: True
133 max_age: 86400
134
135
Filip Pytloun4a72d792015-10-06 16:28:32 +0200136Compute nodes
137-------------
138
139Nova controller services on compute node
140
141.. code-block:: yaml
142
143 nova:
144 compute:
145 version: juno
146 enabled: true
147 virtualization: kvm
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100148 availability_zone: availability_zone_01
Damian Szelugae1922412017-04-18 16:36:46 +0200149 aggregates:
150 - hosts_with_fc
151 - hosts_with_ssd
Filip Pytloun4a72d792015-10-06 16:28:32 +0200152 security_group: true
Petr Michalecf03e4882017-04-10 10:26:18 +0200153 resume_guests_state_on_host_boot: False
Filip Pytloun4a72d792015-10-06 16:28:32 +0200154 bind:
155 vnc_address: 172.20.0.100
156 vnc_port: 6080
157 vnc_name: openstack.domain.com
158 vnc_protocol: http
159 database:
160 engine: mysql
161 host: 127.0.0.1
162 port: 3306
163 name: nova
164 user: nova
165 password: pwd
166 identity:
167 engine: keystone
168 host: 127.0.0.1
169 port: 35357
170 user: nova
171 password: pwd
172 tenant: service
173 message_queue:
174 engine: rabbitmq
175 host: 127.0.0.1
176 port: 5672
177 user: openstack
178 password: pwd
179 virtual_host: '/openstack'
180 image:
181 engine: glance
182 host: 127.0.0.1
183 port: 9292
184 network:
185 engine: neutron
186 host: 127.0.0.1
187 port: 9696
188 identity:
189 engine: keystone
190 host: 127.0.0.1
191 port: 35357
192 user: neutron
193 password: pwd
194 tenant: service
195 qemu:
196 max_files: 4096
197 max_processes: 4096
198
199Nova services on compute node with OpenContrail
200
201.. code-block:: yaml
202
203 nova:
204 compute:
205 enabled: true
206 ...
207 networking: contrail
208
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200209
Filip Pytloun4a72d792015-10-06 16:28:32 +0200210Nova services on compute node with memcached caching
211
212.. code-block:: yaml
213
214 nova:
215 compute:
216 enabled: true
217 ...
218 cache:
219 engine: memcached
220 members:
221 - host: 127.0.0.1
222 port: 11211
223 - host: 127.0.0.1
224 port: 11211
225
Jiri Konecnye31f2c52016-04-14 17:16:02 +0200226
227Client-side RabbitMQ HA setup
228
229.. code-block:: yaml
230
231 nova:
232 controller:
233 ....
234 message_queue:
235 engine: rabbitmq
236 members:
237 - host: 10.0.16.1
238 - host: 10.0.16.2
239 - host: 10.0.16.3
240 user: openstack
241 password: pwd
242 virtual_host: '/openstack'
243 ....
244
maxstack39e6aca2016-05-04 13:50:13 +0000245
246Nova with ephemeral configured with Ceph
247
248.. code-block:: yaml
249
250 nova:
251 compute:
252 enabled: true
253 ...
254 ceph:
255 ephemeral: yes
256 rbd_pool: nova
257 rbd_user: nova
258 secret_uuid: 03006edd-d957-40a3-ac4c-26cd254b3731
259
260
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100261Client role
262-----------
263
264Nova flavors
265
266.. code-block:: yaml
267
268 nova:
269 client:
270 enabled: true
271 server:
272 identity:
273 flavor:
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100274 flavor1:
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100275 flavor_id: 10
276 ram: 4096
277 disk: 10
278 vcpus: 1
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100279 flavor2:
280 flavor_id: auto
281 ram: 4096
282 disk: 20
283 vcpus: 2
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100284 identity1:
285 flavor:
286 ...
287
Jiri Broulik70d9e3f2017-02-15 18:37:13 +0100288
289Availability zones
290
291.. code-block:: yaml
292
293 nova:
294 client:
295 enabled: true
296 server:
297 identity:
298 availability_zones:
299 - availability_zone_01
300 - availability_zone_02
301
Damian Szeluga5dca0f02017-04-13 17:27:15 +0200302
303
304Aggregates
305
306.. code-block:: yaml
307
308 nova:
309 client:
310 enabled: true
311 server:
312 identity:
313 aggregates:
314 - aggregate1
315 - aggregate2
316
Petr Jedinýd855ef22017-03-06 22:24:33 +0100317SR-IOV
Jakub Pavlik39a05942017-02-13 23:03:08 +0100318------
319
320Add PciPassthroughFilter into scheduler filters and NICs on specific compute nodes.
321
322.. code-block:: yaml
323
324 nova:
325 controller:
326 sriov: true
327 scheduler_default_filters: "DifferentHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter"
328
329 nova:
330 compute:
331 sriov:
332 nic_one:
333 devname: eth1
334 physical_network: physnet1
335
Jakub Pavlik26fb85c2017-02-16 22:29:22 +0100336CPU pinning & Hugepages
337-----------------------
338
339CPU pinning of virtual machine instances to dedicated physical CPU cores.
340Hugepages mount point for libvirt.
341
342.. code-block:: yaml
343
344 nova:
345 controller:
346 scheduler_default_filters: "DifferentHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,NUMATopologyFilter,AggregateInstanceExtraSpecsFilter"
347
348 nova:
349 compute:
350 vcpu_pin_set: 2,3,4,5
351 hugepages:
352 mount_points:
353 - path: /mnt/hugepages_1GB
354 - path: /mnt/hugepages_2MB
Jiri Broulik0ce9fc92017-02-01 23:10:40 +0100355
Michel Nederlof171c7ac2017-04-13 12:54:14 +0200356Custom Scheduler filters
357------------------------
358
359If you have a custom filter, that needs to be included in the scheduler, then you can include it like so:
360
361.. code-block:: yaml
362
363 nova:
364 controller:
365 scheduler_custom_filters:
366 - my_custom_driver.nova.scheduler.filters.my_custom_filter.MyCustomFilter
367
368 # Then add your custom filter on the end (make sure to include all other ones that you need as well)
369 scheduler_default_filters: "DifferentHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter,MyCustomFilter"
370
Michel Nederlofeb566f62017-04-21 15:37:47 +0200371Hardware Trip/Unmap Support
372---------------------------
373
374To enable TRIM support for ephemeral images (thru nova managed images), libvirt has this option.
375
376.. code-block:: yaml
377
378 nova:
379 compute:
380 libvirt:
381 hw_disk_discard: unmap
382
383In order to actually utilize this feature, the following metadata must be set on the image as well, so the SCSI unmap is supported.
384
385.. code-block:: bash
386
387 glance image-update --property hw_scsi_model=virtio-scsi <image>
388 glance image-update --property hw_disk_bus=scsi <image>
Filip Pytloun5bc9e9f2017-02-02 13:05:40 +0100389
390Documentation and Bugs
391======================
392
393To learn how to install and update salt-formulas, consult the documentation
394available online at:
395
396 http://salt-formulas.readthedocs.io/
397
398In the unfortunate event that bugs are discovered, they should be reported to
399the appropriate issue tracker. Use Github issue tracker for specific salt
400formula:
401
402 https://github.com/salt-formulas/salt-formula-nova/issues
403
404For feature requests, bug reports or blueprints affecting entire ecosystem,
405use Launchpad salt-formulas project:
406
407 https://launchpad.net/salt-formulas
408
409You can also join salt-formulas-users team and subscribe to mailing list:
410
411 https://launchpad.net/~salt-formulas-users
412
413Developers wishing to work on the salt-formulas projects should always base
414their work on master branch and submit pull request against specific formula.
415
416 https://github.com/salt-formulas/salt-formula-nova
417
418Any questions or feedback is always welcome so feel free to join our IRC
419channel:
420
421 #salt-formulas @ irc.freenode.net