Browse code

Move configuration notes into configuration guide

We have configuration information split between the README.md and
configuration documentation. A lot of it is duplicated and it shows
little organisation.

This clears the README.md of detailed configuration options and
consolidates it into the existing configuration guide. When someone
first hits the README they don't need details on changing the RPC
back-end; but more importantly this indicates clearly where we should
be adding or clarifying details.

Firstly, the detailed overview of local.conf is removed; it was
duplicated in the configuration guide. This is left as a first-level
section of that guide.

The configuration notes are divided into generic devstack things
(logging, database-backend, etc) and then the rest of the notes on
various projects' configuration options have been moved into a
dedicated sub-section "Projects".

Each project gets its own sub-sub-section. Duplicated swift guides is
consolidated into the single "Swift section". The neutron and
multi-node nodes, which were all duplicated in their more specific
dedicated guides are removed and replaced with links to those. Other
sections are moved directly.

Change-Id: Ib0bac56d82be870fe99c47c53fda674d8668b968

Ian Wienand authored on 2015/08/10 12:39:17
Showing 2 changed files
... ...
@@ -93,345 +93,14 @@ for example).
93 93
 
94 94
 # Customizing
95 95
 
96
-You can override environment variables used in `stack.sh` by creating file
97
-name `local.conf` with a ``localrc`` section as shown below.  It is likely
98
-that you will need to do this to tweak your networking configuration should
99
-you need to access your cloud from a different host.
96
+You can override environment variables used in `stack.sh` by creating
97
+file name `local.conf` with a ``localrc`` section as shown below.  It
98
+is likely that you will need to do this to tweak several settings for
99
+your environment.
100 100
 
101 101
     [[local|localrc]]
102 102
     VARIABLE=value
103 103
 
104
-See the **Local Configuration** section below for more details.
105
-
106
-# Database Backend
107
-
108
-Multiple database backends are available. The available databases are defined
109
-in the lib/databases directory.
110
-`mysql` is the default database, choose a different one by putting the
111
-following in the `localrc` section:
112
-
113
-    disable_service mysql
114
-    enable_service postgresql
115
-
116
-`mysql` is the default database.
117
-
118
-# RPC Backend
119
-
120
-Support for a RabbitMQ RPC backend is included. Additional RPC backends may
121
-be available via external plugins.  Enabling or disabling RabbitMQ is handled
122
-via the usual service functions and ``ENABLED_SERVICES``.
123
-
124
-Example disabling RabbitMQ in ``local.conf``:
125
-
126
-    disable_service rabbit
127
-
128
-# Apache Frontend
129
-
130
-Apache web server can be enabled for wsgi services that support being deployed
131
-under HTTPD + mod_wsgi. By default, services that recommend running under
132
-HTTPD + mod_wsgi are deployed under Apache. To use an alternative deployment
133
-strategy (e.g. eventlet) for services that support an alternative to HTTPD +
134
-mod_wsgi set ``ENABLE_HTTPD_MOD_WSGI_SERVICES`` to ``False`` in your
135
-``local.conf``.
136
-
137
-Each service that can be run under HTTPD + mod_wsgi also has an override
138
-toggle available that can be set in your ``local.conf``.
139
-
140
-Keystone is run under HTTPD + mod_wsgi by default.
141
-
142
-Example (Keystone):
143
-
144
-    KEYSTONE_USE_MOD_WSGI="True"
145
-
146
-Example (Nova):
147
-
148
-    NOVA_USE_MOD_WSGI="True"
149
-
150
-Example (Swift):
151
-
152
-    SWIFT_USE_MOD_WSGI="True"
153
-
154
-# Swift
155
-
156
-Swift is disabled by default.  When enabled, it is configured with
157
-only one replica to avoid being IO/memory intensive on a small
158
-vm. When running with only one replica the account, container and
159
-object services will run directly in screen. The others services like
160
-replicator, updaters or auditor runs in background.
161
-
162
-If you would like to enable Swift you can add this to your `localrc` section:
163
-
164
-    enable_service s-proxy s-object s-container s-account
165
-
166
-If you want a minimal Swift install with only Swift and Keystone you
167
-can have this instead in your `localrc` section:
168
-
169
-    disable_all_services
170
-    enable_service key mysql s-proxy s-object s-container s-account
171
-
172
-If you only want to do some testing of a real normal swift cluster
173
-with multiple replicas you can do so by customizing the variable
174
-`SWIFT_REPLICAS` in your `localrc` section (usually to 3).
175
-
176
-# Swift S3
177
-
178
-If you are enabling `swift3` in `ENABLED_SERVICES` DevStack will
179
-install the swift3 middleware emulation. Swift will be configured to
180
-act as a S3 endpoint for Keystone so effectively replacing the
181
-`nova-objectstore`.
182
-
183
-Only Swift proxy server is launched in the screen session all other
184
-services are started in background and managed by `swift-init` tool.
185
-
186
-# Neutron
187
-
188
-Basic Setup
189
-
190
-In order to enable Neutron in a single node setup, you'll need the
191
-following settings in your `local.conf`:
192
-
193
-    disable_service n-net
194
-    enable_service q-svc
195
-    enable_service q-agt
196
-    enable_service q-dhcp
197
-    enable_service q-l3
198
-    enable_service q-meta
199
-    enable_service q-metering
200
-
201
-Then run `stack.sh` as normal.
202
-
203
-DevStack supports setting specific Neutron configuration flags to the
204
-service, ML2 plugin, DHCP and L3 configuration files:
205
-
206
-    [[post-config|/$Q_PLUGIN_CONF_FILE]]
207
-    [ml2]
208
-    mechanism_drivers=openvswitch,l2population
209
-
210
-    [[post-config|$NEUTRON_CONF]]
211
-    [DEFAULT]
212
-    quota_port=42
213
-
214
-    [[post-config|$Q_L3_CONF_FILE]]
215
-    [DEFAULT]
216
-    agent_mode=legacy
217
-
218
-    [[post-config|$Q_DHCP_CONF_FILE]]
219
-    [DEFAULT]
220
-    dnsmasq_dns_servers = 8.8.8.8,8.8.4.4
221
-
222
-The ML2 plugin can run with the OVS, LinuxBridge, or Hyper-V agents on compute
223
-hosts. This is a simple way to configure the ml2 plugin:
224
-
225
-    # VLAN configuration
226
-    ENABLE_TENANT_VLANS=True
227
-
228
-    # GRE tunnel configuration
229
-    ENABLE_TENANT_TUNNELS=True
230
-
231
-    # VXLAN tunnel configuration
232
-    Q_ML2_TENANT_NETWORK_TYPE=vxlan
233
-
234
-The above will default in DevStack to using the OVS on each compute host.
235
-To change this, set the `Q_AGENT` variable to the agent you want to run
236
-(e.g. linuxbridge).
237
-
238
-    Variable Name                    Notes
239
-    ----------------------------------------------------------------------------
240
-    Q_AGENT                          This specifies which agent to run with the
241
-                                     ML2 Plugin (Typically either `openvswitch`
242
-                                     or `linuxbridge`).
243
-                                     Defaults to `openvswitch`.
244
-    Q_ML2_PLUGIN_MECHANISM_DRIVERS   The ML2 MechanismDrivers to load. The default
245
-                                     is `openvswitch,linuxbridge`.
246
-    Q_ML2_PLUGIN_TYPE_DRIVERS        The ML2 TypeDrivers to load. Defaults to
247
-                                     all available TypeDrivers.
248
-    Q_ML2_PLUGIN_GRE_TYPE_OPTIONS    GRE TypeDriver options. Defaults to
249
-                                     `tunnel_id_ranges=1:1000'.
250
-    Q_ML2_PLUGIN_VXLAN_TYPE_OPTIONS  VXLAN TypeDriver options. Defaults to
251
-                                     `vni_ranges=1001:2000`
252
-    Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS   VLAN TypeDriver options. Defaults to none.
253
-
254
-# Heat
255
-
256
-Heat is disabled by default (see `stackrc` file). To enable it explicitly
257
-you'll need the following settings in your `localrc` section:
258
-
259
-    enable_service heat h-api h-api-cfn h-api-cw h-eng
260
-
261
-Heat can also run in standalone mode, and be configured to orchestrate
262
-on an external OpenStack cloud. To launch only Heat in standalone mode
263
-you'll need the following settings in your `localrc` section:
264
-
265
-    disable_all_services
266
-    enable_service rabbit mysql heat h-api h-api-cfn h-api-cw h-eng
267
-    HEAT_STANDALONE=True
268
-    KEYSTONE_SERVICE_HOST=...
269
-    KEYSTONE_AUTH_HOST=...
270
-
271
-# Tempest
272
-
273
-If tempest has been successfully configured, a basic set of smoke
274
-tests can be run as follows:
275
-
276
-    $ cd /opt/stack/tempest
277
-    $ tox -efull  tempest.scenario.test_network_basic_ops
278
-
279
-By default tempest is downloaded and the config file is generated, but the
280
-tempest package is not installed in the system's global site-packages (the
281
-package install includes installing dependences). So tempest won't run
282
-outside of tox. If you would like to install it add the following to your
283
-``localrc`` section:
284
-
285
-    INSTALL_TEMPEST=True
286
-
287
-# DevStack on Xenserver
288
-
289
-If you would like to use Xenserver as the hypervisor, please refer
290
-to the instructions in `./tools/xen/README.md`.
291
-
292
-# Additional Projects
293
-
294
-DevStack has a hook mechanism to call out to a dispatch script at specific
295
-points in the execution of `stack.sh`, `unstack.sh` and `clean.sh`.  This
296
-allows upper-layer projects, especially those that the lower layer projects
297
-have no dependency on, to be added to DevStack without modifying the core
298
-scripts.  Tempest is built this way as an example of how to structure the
299
-dispatch script, see `extras.d/80-tempest.sh`.  See `extras.d/README.md`
300
-for more information.
301
-
302
-# Multi-Node Setup
303
-
304
-A more interesting setup involves running multiple compute nodes, with Neutron
305
-networks connecting VMs on different compute nodes.
306
-You should run at least one "controller node", which should have a `stackrc`
307
-that includes at least:
308
-
309
-    disable_service n-net
310
-    enable_service q-svc
311
-    enable_service q-agt
312
-    enable_service q-dhcp
313
-    enable_service q-l3
314
-    enable_service q-meta
315
-    enable_service neutron
316
-
317
-You likely want to change your `localrc` section to run a scheduler that
318
-will balance VMs across hosts:
319
-
320
-    SCHEDULER=nova.scheduler.filter_scheduler.FilterScheduler
321
-
322
-You can then run many compute nodes, each of which should have a `stackrc`
323
-which includes the following, with the IP address of the above controller node:
324
-
325
-    ENABLED_SERVICES=n-cpu,rabbit,neutron,q-agt
326
-    SERVICE_HOST=[IP of controller node]
327
-    MYSQL_HOST=$SERVICE_HOST
328
-    RABBIT_HOST=$SERVICE_HOST
329
-    Q_HOST=$SERVICE_HOST
330
-    MATCHMAKER_REDIS_HOST=$SERVICE_HOST
331
-
332
-# Multi-Region Setup
333
-
334
-We want to setup two devstack (RegionOne and RegionTwo) with shared keystone
335
-(same users and services) and horizon.
336
-Keystone and Horizon will be located in RegionOne.
337
-Full spec is available at:
338
-https://wiki.openstack.org/wiki/Heat/Blueprints/Multi_Region_Support_for_Heat.
339
-
340
-In RegionOne:
341
-
342
-    REGION_NAME=RegionOne
343
-
344
-In RegionTwo:
345
-
346
-    disable_service horizon
347
-    KEYSTONE_SERVICE_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE>
348
-    KEYSTONE_AUTH_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE>
349
-    REGION_NAME=RegionTwo
350
-
351
-# Cells
352
-
353
-Cells is a new scaling option with a full spec at:
354
-http://wiki.openstack.org/blueprint-nova-compute-cells.
355
-
356
-To setup a cells environment add the following to your `localrc` section:
357
-
358
-    enable_service n-cell
359
-
360
-Be aware that there are some features currently missing in cells, one notable
361
-one being security groups.  The exercises have been patched to disable
362
-functionality not supported by cells.
363
-
364
-# IPv6
365
-
366
-By default, most Openstack services are bound to 0.0.0.0
367
-and service endpoints are registered as IPv4 addresses.
368
-A new variable was created to control this behavior, and to
369
-allow for operation over IPv6 instead of IPv4.
370
-
371
-For this, add the following to `local.conf`:
372
-
373
-    SERVICE_IP_VERSION=6
374
-
375
-When set to "6" devstack services will open listen sockets on ::
376
-and service endpoints will be registered using HOST_IPV6 as the
377
-address.  The default value for this setting is `4`.  Dual-mode
378
-support, for example `4+6` is not currently supported.
379
-
380
-
381
-# Local Configuration
382
-
383
-Historically DevStack has used ``localrc`` to contain all local configuration
384
-and customizations. More and more of the configuration variables available for
385
-DevStack are passed-through to the individual project configuration files.
386
-The old mechanism for this required specific code for each file and did not
387
-scale well.  This is handled now by a master local configuration file.
388
-
389
-# local.conf
390
-
391
-The new config file ``local.conf`` is an extended-INI format that introduces
392
-a new meta-section header that provides some additional information such
393
-as a phase name and destination config filename:
394
-
395
-    [[ <phase> | <config-file-name> ]]
396
-
397
-where ``<phase>`` is one of a set of phase names defined by ``stack.sh``
398
-and ``<config-file-name>`` is the configuration filename.  The filename is
399
-eval'ed in the ``stack.sh`` context so all environment variables are
400
-available and may be used.  Using the project config file variables in
401
-the header is strongly suggested (see the ``NOVA_CONF`` example below).
402
-If the path of the config file does not exist it is skipped.
403
-
404
-The defined phases are:
405
-
406
-* **local** - extracts ``localrc`` from ``local.conf`` before ``stackrc`` is sourced
407
-* **post-config** - runs after the layer 2 services are configured
408
-                    and before they are started
409
-* **extra** - runs after services are started and before any files
410
-              in ``extra.d`` are executed
411
-* **post-extra** - runs after files in ``extra.d`` are executed
412
-
413
-The file is processed strictly in sequence; meta-sections may be specified more
414
-than once but if any settings are duplicated the last to appear in the file
415
-will be used.
416
-
417
-    [[post-config|$NOVA_CONF]]
418
-    [DEFAULT]
419
-    use_syslog = True
420
-
421
-    [osapi_v3]
422
-    enabled = False
423
-
424
-A specific meta-section ``local|localrc`` is used to provide a default
425
-``localrc`` file (actually ``.localrc.auto``).  This allows all custom
426
-settings for DevStack to be contained in a single file.  If ``localrc``
427
-exists it will be used instead to preserve backward-compatibility.
428
-
429
-    [[local|localrc]]
430
-    FIXED_RANGE=10.254.1.0/24
431
-    ADMIN_PASSWORD=speciale
432
-    LOGFILE=$DEST/logs/stack.sh.log
433
-
434
-Note that ``Q_PLUGIN_CONF_FILE`` is unique in that it is assumed to *NOT*
435
-start with a ``/`` (slash) character.  A slash will need to be added:
436
-
437
-    [[post-config|/$Q_PLUGIN_CONF_FILE]]
104
+Start by reading the [configuration
105
+guide](doc/source/configuration.rst) for details of the many available
106
+options.
438 107
\ No newline at end of file
... ...
@@ -148,6 +148,34 @@ will not be set if there is no IPv6 address on the default Ethernet interface.
148 148
 Setting it here also makes it available for ``openrc`` to set ``OS_AUTH_URL``.
149 149
 ``HOST_IPV6`` is not set by default.
150 150
 
151
+Examples
152
+========
153
+
154
+-  Eliminate a Cinder pass-through (``CINDER_PERIODIC_INTERVAL``):
155
+
156
+   ::
157
+
158
+       [[post-config|$CINDER_CONF]]
159
+       [DEFAULT]
160
+       periodic_interval = 60
161
+
162
+-  Sample ``local.conf`` with screen logging enabled:
163
+
164
+   ::
165
+
166
+       [[local|localrc]]
167
+       FIXED_RANGE=10.254.1.0/24
168
+       NETWORK_GATEWAY=10.254.1.1
169
+       LOGDAYS=1
170
+       LOGDIR=$DEST/logs
171
+       LOGFILE=$LOGDIR/stack.sh.log
172
+       ADMIN_PASSWORD=quiet
173
+       DATABASE_PASSWORD=$ADMIN_PASSWORD
174
+       RABBIT_PASSWORD=$ADMIN_PASSWORD
175
+       SERVICE_PASSWORD=$ADMIN_PASSWORD
176
+       SERVICE_TOKEN=a682f596-76f3-11e3-b3b2-e716f9080d50
177
+
178
+
151 179
 Configuration Notes
152 180
 ===================
153 181
 
... ...
@@ -228,6 +256,72 @@ to direct the message stream to the log host.  |
228 228
         SYSLOG_HOST=$HOST_IP
229 229
         SYSLOG_PORT=516
230 230
 
231
+
232
+Database Backend
233
+----------------
234
+
235
+Multiple database backends are available. The available databases are defined
236
+in the lib/databases directory.
237
+`mysql` is the default database, choose a different one by putting the
238
+following in the `localrc` section:
239
+
240
+   ::
241
+
242
+      disable_service mysql
243
+      enable_service postgresql
244
+
245
+`mysql` is the default database.
246
+
247
+RPC Backend
248
+-----------
249
+
250
+Support for a RabbitMQ RPC backend is included. Additional RPC
251
+backends may be available via external plugins.  Enabling or disabling
252
+RabbitMQ is handled via the usual service functions and
253
+``ENABLED_SERVICES``.
254
+
255
+Example disabling RabbitMQ in ``local.conf``:
256
+
257
+::
258
+    disable_service rabbit
259
+
260
+
261
+Apache Frontend
262
+---------------
263
+
264
+The Apache web server can be enabled for wsgi services that support
265
+being deployed under HTTPD + mod_wsgi. By default, services that
266
+recommend running under HTTPD + mod_wsgi are deployed under Apache. To
267
+use an alternative deployment strategy (e.g. eventlet) for services
268
+that support an alternative to HTTPD + mod_wsgi set
269
+``ENABLE_HTTPD_MOD_WSGI_SERVICES`` to ``False`` in your
270
+``local.conf``.
271
+
272
+Each service that can be run under HTTPD + mod_wsgi also has an
273
+override toggle available that can be set in your ``local.conf``.
274
+
275
+Keystone is run under Apache with ``mod_wsgi`` by default.
276
+
277
+Example (Keystone)
278
+
279
+::
280
+
281
+    KEYSTONE_USE_MOD_WSGI="True"
282
+
283
+Example (Nova):
284
+
285
+::
286
+
287
+    NOVA_USE_MOD_WSGI="True"
288
+
289
+Example (Swift):
290
+
291
+::
292
+
293
+    SWIFT_USE_MOD_WSGI="True"
294
+
295
+
296
+
231 297
 Libraries from Git
232 298
 ------------------
233 299
 
... ...
@@ -295,48 +389,6 @@ that matches requirements.
295 295
 
296 296
         PIP_UPGRADE=True
297 297
 
298
-Swift
299
-
300
-Swift is now used as the back-end for the S3-like object store.  When
301
-enabled Nova's objectstore (``n-obj`` in ``ENABLED_SERVICES``) is
302
-automatically disabled. Enable Swift by adding it services to
303
-``ENABLED_SERVICES``
304
-
305
-    ::
306
-
307
-       enable_service s-proxy s-object s-container s-account
308
-
309
-Setting Swift's hash value is required and you will be prompted for it
310
-if Swift is enabled so just set it to something already:
311
-
312
-    ::
313
-
314
-        SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5
315
-
316
-For development purposes the default number of replicas is set to
317
-``1`` to reduce the overhead required. To better simulate a production
318
-deployment set this to ``3`` or more.
319
-
320
-    ::
321
-
322
-        SWIFT_REPLICAS=3
323
-
324
-The data for Swift is stored in the source tree by default (in
325
-``$DEST/swift/data``) and can be moved by setting
326
-``SWIFT_DATA_DIR``. The specified directory will be created if it does
327
-not exist.
328
-
329
-    ::
330
-
331
-        SWIFT_DATA_DIR=$DEST/data/swift
332
-
333
-*Note*: Previously just enabling ``swift`` was sufficient to start the
334
-Swift services. That does not provide proper service granularity,
335
-particularly in multi-host configurations, and is considered
336
-deprecated. Some service combination tests now check for specific
337
-Swift services and the old blanket acceptance will longer work
338
-correctly.
339 298
 
340 299
 Service Catalog Backend
341 300
 -----------------------
... ...
@@ -354,47 +406,6 @@ with ``KEYSTONE_CATALOG_BACKEND``:
354 354
 DevStack's default configuration in ``sql`` mode is set in
355 355
 ``files/keystone_data.sh``
356 356
 
357
-Cinder
358
-
359
-The logical volume group used to hold the Cinder-managed volumes is
360
-set by ``VOLUME_GROUP``, the logical volume name prefix is set with
361
-``VOLUME_NAME_PREFIX`` and the size of the volume backing file is set
362
-with ``VOLUME_BACKING_FILE_SIZE``.
363
-
364
-    ::
365
-
366
-        VOLUME_GROUP="stack-volumes"
367
-        VOLUME_NAME_PREFIX="volume-"
368
-        VOLUME_BACKING_FILE_SIZE=10250M
369
-
370
-Multi-host DevStack
371
-
372
-Running DevStack with multiple hosts requires a custom ``local.conf``
373
-section for each host. The master is the same as a single host
374
-installation with ``MULTI_HOST=True``. The slaves have fewer services
375
-enabled and a couple of host variables pointing to the master.
376
-
377
-Master
378
-~~~~~~
379
-
380
-Set ``MULTI_HOST`` to true
381
-    ::
382
-
383
-        MULTI_HOST=True
384
-
385
-Slave
386
-~~~~~
387
-
388
-Set the following options to point to the master
389
-
390
-    ::
391
-
392
-        MYSQL_HOST=w.x.y.z
393
-        RABBIT_HOST=w.x.y.z
394
-        GLANCE_HOSTPORT=w.x.y.z:9292
395
-        ENABLED_SERVICES=n-vol,n-cpu,n-net,n-api
396 357
 
397 358
 IP Version
398 359
 ----------
... ...
@@ -447,29 +458,163 @@ optionally be used to alter the default IPv6 address
447 447
 
448 448
         HOST_IPV6=${some_local_ipv6_address}
449 449
 
450
-Examples
451
-========
450
+Multi-node setup
451
+~~~~~~~~~~~~~~~~
452 452
 
453
--  Eliminate a Cinder pass-through (``CINDER_PERIODIC_INTERVAL``):
453
+See the :doc:`multi-node lab guide<guides/multinode-lab>`
454 454
 
455
-   ::
455
+Projects
456
+--------
456 457
 
457
-       [[post-config|$CINDER_CONF]]
458
-       [DEFAULT]
459
-       periodic_interval = 60
458
+Neutron
459
+~~~~~~~
460 460
 
461
--  Sample ``local.conf`` with screen logging enabled:
461
+See the :doc:`neutron configuration guide<guides/neutron>` for
462
+details on configuration of Neutron
462 463
 
463
-   ::
464 464
 
465
-       [[local|localrc]]
466
-       FIXED_RANGE=10.254.1.0/24
467
-       NETWORK_GATEWAY=10.254.1.1
468
-       LOGDAYS=1
469
-       LOGDIR=$DEST/logs
470
-       LOGFILE=$LOGDIR/stack.sh.log
471
-       ADMIN_PASSWORD=quiet
472
-       DATABASE_PASSWORD=$ADMIN_PASSWORD
473
-       RABBIT_PASSWORD=$ADMIN_PASSWORD
474
-       SERVICE_PASSWORD=$ADMIN_PASSWORD
475
-       SERVICE_TOKEN=a682f596-76f3-11e3-b3b2-e716f9080d50
465
+Swift
466
+~~~~~
467
+
468
+Swift is disabled by default.  When enabled, it is configured with
469
+only one replica to avoid being IO/memory intensive on a small
470
+VM. When running with only one replica the account, container and
471
+object services will run directly in screen. The others services like
472
+replicator, updaters or auditor runs in background.
473
+
474
+If you would like to enable Swift you can add this to your `localrc`
475
+section:
476
+
477
+::
478
+
479
+    enable_service s-proxy s-object s-container s-account
480
+
481
+If you want a minimal Swift install with only Swift and Keystone you
482
+can have this instead in your `localrc` section:
483
+
484
+::
485
+
486
+    disable_all_services
487
+    enable_service key mysql s-proxy s-object s-container s-account
488
+
489
+If you only want to do some testing of a real normal swift cluster
490
+with multiple replicas you can do so by customizing the variable
491
+`SWIFT_REPLICAS` in your `localrc` section (usually to 3).
492
+
493
+Swift S3
494
+
495
+If you are enabling `swift3` in `ENABLED_SERVICES` DevStack will
496
+install the swift3 middleware emulation. Swift will be configured to
497
+act as a S3 endpoint for Keystone so effectively replacing the
498
+`nova-objectstore`.
499
+
500
+Only Swift proxy server is launched in the screen session all other
501
+services are started in background and managed by `swift-init` tool.
502
+
503
+Heat
504
+~~~~
505
+
506
+Heat is disabled by default (see `stackrc` file). To enable it
507
+explicitly you'll need the following settings in your `localrc`
508
+section
509
+
510
+::
511
+
512
+    enable_service heat h-api h-api-cfn h-api-cw h-eng
513
+
514
+Heat can also run in standalone mode, and be configured to orchestrate
515
+on an external OpenStack cloud. To launch only Heat in standalone mode
516
+you'll need the following settings in your `localrc` section
517
+
518
+::
519
+
520
+    disable_all_services
521
+    enable_service rabbit mysql heat h-api h-api-cfn h-api-cw h-eng
522
+    HEAT_STANDALONE=True
523
+    KEYSTONE_SERVICE_HOST=...
524
+    KEYSTONE_AUTH_HOST=...
525
+
526
+Tempest
527
+~~~~~~~
528
+
529
+If tempest has been successfully configured, a basic set of smoke
530
+tests can be run as follows:
531
+
532
+::
533
+
534
+    $ cd /opt/stack/tempest
535
+    $ tox -efull  tempest.scenario.test_network_basic_ops
536
+
537
+By default tempest is downloaded and the config file is generated, but the
538
+tempest package is not installed in the system's global site-packages (the
539
+package install includes installing dependences). So tempest won't run
540
+outside of tox. If you would like to install it add the following to your
541
+``localrc`` section:
542
+
543
+::
544
+
545
+    INSTALL_TEMPEST=True
546
+
547
+
548
+Xenserver
549
+~~~~~~~~~
550
+
551
+If you would like to use Xenserver as the hypervisor, please refer to
552
+the instructions in `./tools/xen/README.md`.
553
+
554
+Cells
555
+~~~~~
556
+
557
+`Cells <http://wiki.openstack.org/blueprint-nova-compute-cells>`__ is
558
+an alternative scaling option.  To setup a cells environment add the
559
+following to your `localrc` section:
560
+
561
+::
562
+
563
+    enable_service n-cell
564
+
565
+Be aware that there are some features currently missing in cells, one
566
+notable one being security groups.  The exercises have been patched to
567
+disable functionality not supported by cells.
568
+
569
+Cinder
570
+~~~~~~
571
+
572
+The logical volume group used to hold the Cinder-managed volumes is
573
+set by ``VOLUME_GROUP``, the logical volume name prefix is set with
574
+``VOLUME_NAME_PREFIX`` and the size of the volume backing file is set
575
+with ``VOLUME_BACKING_FILE_SIZE``.
576
+
577
+    ::
578
+
579
+        VOLUME_GROUP="stack-volumes"
580
+        VOLUME_NAME_PREFIX="volume-"
581
+        VOLUME_BACKING_FILE_SIZE=10250M
582
+
583
+
584
+Keystone
585
+~~~~~~~~
586
+
587
+Multi-Region Setup
588
+
589
+We want to setup two devstack (RegionOne and RegionTwo) with shared
590
+keystone (same users and services) and horizon.  Keystone and Horizon
591
+will be located in RegionOne.  Full spec is available at:
592
+`<https://wiki.openstack.org/wiki/Heat/Blueprints/Multi_Region_Support_for_Heat>`__.
593
+
594
+In RegionOne:
595
+
596
+::
597
+
598
+    REGION_NAME=RegionOne
599
+
600
+In RegionTwo:
601
+
602
+::
603
+   
604
+    disable_service horizon
605
+    KEYSTONE_SERVICE_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE>
606
+    KEYSTONE_AUTH_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE>
607
+    REGION_NAME=RegionTwo