blob: 9ca84412638be84fdd071590bafd1310d58a4589 [file] [log] [blame]
Dean Troyer0986a7b2014-10-29 22:08:13 -05001=============
2Configuration
3=============
Sean M. Collins09e550c2014-10-21 11:40:08 -04004
Ian Wienand815db162015-08-06 10:25:45 +10005.. contents::
6 :local:
7 :depth: 1
8
Sean M. Collins09e550c2014-10-21 11:40:08 -04009local.conf
Sean Dague07d7e5b2014-11-17 07:10:14 -050010==========
Sean M. Collins09e550c2014-10-21 11:40:08 -040011
Ian Wienanda35391e2015-08-10 13:53:40 +100012DevStack configuration is modified via the file ``local.conf``. It is
13a modified INI format file that introduces a meta-section header to
14carry additional information regarding the configuration files to be
15changed.
16
17A sample is provided in ``devstack/samples``
Sean M. Collins09e550c2014-10-21 11:40:08 -040018
19The new header is similar to a normal INI section header but with double
20brackets (``[[ ... ]]``) and two internal fields separated by a pipe
dieterly7c7679e2015-09-18 15:10:48 -060021(``|``). Note that there are no spaces between the double brackets and the
22internal fields. Likewise, there are no spaces between the pipe and the
23internal fields:
Sean M. Collins09e550c2014-10-21 11:40:08 -040024::
25
dieterly7c7679e2015-09-18 15:10:48 -060026 '[[' <phase> '|' <config-file-name> ']]'
Sean M. Collins09e550c2014-10-21 11:40:08 -040027
28where ``<phase>`` is one of a set of phase names defined by ``stack.sh``
29and ``<config-file-name>`` is the configuration filename. The filename
30is eval'ed in the ``stack.sh`` context so all environment variables are
31available and may be used. Using the project config file variables in
32the header is strongly suggested (see the ``NOVA_CONF`` example below).
33If the path of the config file does not exist it is skipped.
34
35The defined phases are:
36
37- **local** - extracts ``localrc`` from ``local.conf`` before
38 ``stackrc`` is sourced
Sean M. Collins09e550c2014-10-21 11:40:08 -040039- **post-config** - runs after the layer 2 services are configured and
40 before they are started
41- **extra** - runs after services are started and before any files in
42 ``extra.d`` are executed
YAMAMOTO Takashi961643e2015-07-31 13:45:27 +090043- **post-extra** - runs after files in ``extra.d`` are executed
Matt Riedemann18abffb2018-03-14 20:09:14 -040044- **test-config** - runs after tempest (and plugins) are configured
Sean M. Collins09e550c2014-10-21 11:40:08 -040045
46The file is processed strictly in sequence; meta-sections may be
47specified more than once but if any settings are duplicated the last to
48appear in the file will be used.
49
50::
51
52 [[post-config|$NOVA_CONF]]
53 [DEFAULT]
54 use_syslog = True
55
56 [osapi_v3]
57 enabled = False
58
59A specific meta-section ``local|localrc`` is used to provide a default
60``localrc`` file (actually ``.localrc.auto``). This allows all custom
61settings for DevStack to be contained in a single file. If ``localrc``
Ian Wienand7cd16ce2016-04-08 09:40:56 +100062exists it will be used instead to preserve backward-compatibility.
Sean M. Collins09e550c2014-10-21 11:40:08 -040063
64::
65
66 [[local|localrc]]
Kevin Benton4bfbc292016-11-15 17:26:05 -080067 IPV4_ADDRS_SAFE_TO_USE=10.254.1.0/24
Sean M. Collins09e550c2014-10-21 11:40:08 -040068 ADMIN_PASSWORD=speciale
69 LOGFILE=$DEST/logs/stack.sh.log
70
71Note that ``Q_PLUGIN_CONF_FILE`` is unique in that it is assumed to
72*NOT* start with a ``/`` (slash) character. A slash will need to be
73added:
74
75::
76
77 [[post-config|/$Q_PLUGIN_CONF_FILE]]
78
79Also note that the ``localrc`` section is sourced as a shell script
Juan Antonio Osorio Roblesfe6dccb2014-11-28 13:12:14 +020080fragment and MUST conform to the shell requirements, specifically no
Sean M. Collins09e550c2014-10-21 11:40:08 -040081whitespace around ``=`` (equals).
82
Ian Wienand7cd16ce2016-04-08 09:40:56 +100083openrc
84======
85
86``openrc`` configures login credentials suitable for use with the
87OpenStack command-line tools. ``openrc`` sources ``stackrc`` at the
88beginning (which in turn sources the ``localrc`` section of
89``local.conf``) in order to pick up ``HOST_IP`` and/or ``SERVICE_HOST``
90to use in the endpoints. The values shown below are the default values.
91
92OS\_PROJECT\_NAME (OS\_TENANT\_NAME)
93 Keystone has
94 standardized the term *project* as the entity that owns resources. In
95 some places references still exist to the previous term
96 *tenant* for this use. Also, *project\_name* is preferred to
97 *project\_id*. OS\_TENANT\_NAME remains supported for compatibility
98 with older tools.
99
100 ::
101
102 OS_PROJECT_NAME=demo
103
104OS\_USERNAME
105 In addition to the owning entity (project), OpenStack calls the entity
106 performing the action *user*.
107
108 ::
109
110 OS_USERNAME=demo
111
112OS\_PASSWORD
113 Keystone's default authentication requires a password be provided.
114 The usual cautions about putting passwords in environment variables
115 apply, for most DevStack uses this may be an acceptable tradeoff.
116
117 ::
118
119 OS_PASSWORD=secret
120
121HOST\_IP, SERVICE\_HOST
122 Set API endpoint host using ``HOST_IP``. ``SERVICE_HOST`` may also
123 be used to specify the endpoint, which is convenient for some
124 ``local.conf`` configurations. Typically, ``HOST_IP`` is set in the
125 ``localrc`` section.
126
127 ::
128
129 HOST_IP=127.0.0.1
130 SERVICE_HOST=$HOST_IP
131
132OS\_AUTH\_URL
133 Authenticating against an OpenStack cloud using Keystone returns a
134 *Token* and *Service Catalog*. The catalog contains the endpoints
135 for all services the user/tenant has access to - including Nova,
136 Glance, Keystone and Swift.
137
138 ::
139
Le Houc09eaf82017-08-28 17:25:38 +0800140 OS_AUTH_URL=http://$SERVICE_HOST:5000/v3.0
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000141
142KEYSTONECLIENT\_DEBUG, NOVACLIENT\_DEBUG
143 Set command-line client log level to ``DEBUG``. These are commented
144 out by default.
145
146 ::
147
148 # export KEYSTONECLIENT_DEBUG=1
149 # export NOVACLIENT_DEBUG=1
150
151
152
James Polley5f2eb6d2015-03-30 17:36:26 +1100153.. _minimal-configuration:
154
Sean M. Collins09e550c2014-10-21 11:40:08 -0400155Minimal Configuration
Sean Dague07d7e5b2014-11-17 07:10:14 -0500156=====================
Sean M. Collins09e550c2014-10-21 11:40:08 -0400157
158While ``stack.sh`` is happy to run without a ``localrc`` section in
159``local.conf``, devlife is better when there are a few minimal variables
160set. This is an example of a minimal configuration that touches the
161values that most often need to be set.
162
163- no logging
164- pre-set the passwords to prevent interactive prompts
Kevin Benton4bfbc292016-11-15 17:26:05 -0800165- move network ranges away from the local network (``IPV4_ADDRS_SAFE_TO_USE``
166 and ``FLOATING_RANGE``, commented out below)
Sean M. Collins09e550c2014-10-21 11:40:08 -0400167- set the host IP if detection is unreliable (``HOST_IP``, commented
168 out below)
169
170::
171
172 [[local|localrc]]
Balagopal7ed812c2016-03-01 04:43:31 +0000173 ADMIN_PASSWORD=secret
Sean M. Collins09e550c2014-10-21 11:40:08 -0400174 DATABASE_PASSWORD=$ADMIN_PASSWORD
175 RABBIT_PASSWORD=$ADMIN_PASSWORD
176 SERVICE_PASSWORD=$ADMIN_PASSWORD
Kevin Benton4bfbc292016-11-15 17:26:05 -0800177 #IPV4_ADDRS_SAFE_TO_USE=172.31.1.0/24
Sean M. Collins09e550c2014-10-21 11:40:08 -0400178 #FLOATING_RANGE=192.168.20.0/25
179 #HOST_IP=10.3.4.5
180
181If the ``*_PASSWORD`` variables are not set here you will be prompted to
182enter values for them by ``stack.sh``.
183
184The network ranges must not overlap with any networks in use on the
185host. Overlap is not uncommon as RFC-1918 'private' ranges are commonly
186used for both the local networking and Nova's fixed and floating ranges.
187
188``HOST_IP`` is normally detected on the first run of ``stack.sh`` but
189often is indeterminate on later runs due to the IP being moved from an
Juan Antonio Osorio Roblesfe6dccb2014-11-28 13:12:14 +0200190Ethernet interface to a bridge on the host. Setting it here also makes it
Sean M. Collins09e550c2014-10-21 11:40:08 -0400191available for ``openrc`` to set ``OS_AUTH_URL``. ``HOST_IP`` is not set
192by default.
193
Brian Haley180f5eb2015-06-16 13:14:31 -0400194``HOST_IPV6`` is normally detected on the first run of ``stack.sh`` but
195will not be set if there is no IPv6 address on the default Ethernet interface.
196Setting it here also makes it available for ``openrc`` to set ``OS_AUTH_URL``.
197``HOST_IPV6`` is not set by default.
198
Markus Zoeller14728c72017-05-29 15:39:21 +0200199For architecture specific configurations which differ from the x86 default
200here, see `arch-configuration`_.
201
Ian Wienanda35391e2015-08-10 13:53:40 +1000202Historical Notes
203================
Ian Wienand7d5be292015-08-10 13:39:17 +1000204
Ian Wienanda35391e2015-08-10 13:53:40 +1000205Historically DevStack obtained all local configuration and
206customizations from a ``localrc`` file. In Oct 2013 the
207``local.conf`` configuration method was introduced (in `review 46768
208<https://review.openstack.org/#/c/46768/>`__) to simplify this
209process.
Ian Wienand7d5be292015-08-10 13:39:17 +1000210
Ian Wienand815db162015-08-06 10:25:45 +1000211Configuration Notes
212===================
213
214.. contents::
215 :local:
Sean M. Collins09e550c2014-10-21 11:40:08 -0400216
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000217Service Repos
218-------------
219
220The Git repositories used to check out the source for each service are
221controlled by a pair of variables set for each service. ``*_REPO``
222points to the repository and ``*_BRANCH`` selects which branch to
223check out. These may be overridden in ``local.conf`` to pull source
224from a different repo for testing, such as a Gerrit branch
225proposal. ``GIT_BASE`` points to the primary repository server.
226
227 ::
228
229 NOVA_REPO=$GIT_BASE/openstack/nova.git
230 NOVA_BRANCH=master
231
232To pull a branch directly from Gerrit, get the repo and branch from
233the Gerrit review page:
234
235 ::
236
237 git fetch https://review.openstack.org/p/openstack/nova refs/changes/50/5050/1 && git checkout FETCH_HEAD
238
239 The repo is the stanza following ``fetch`` and the branch is the
240 stanza following that:
241
242 ::
243
244 NOVA_REPO=https://review.openstack.org/p/openstack/nova
245 NOVA_BRANCH=refs/changes/50/5050/1
246
247
Sean Dague07d7e5b2014-11-17 07:10:14 -0500248Installation Directory
249----------------------
250
Ian Wienand815db162015-08-06 10:25:45 +1000251The DevStack install directory is set by the ``DEST`` variable. By
252default it is ``/opt/stack``.
253
254By setting it early in the ``localrc`` section you can reference it in
255later variables. It can be useful to set it even though it is not
256changed from the default value.
Sean M. Collins09e550c2014-10-21 11:40:08 -0400257
258 ::
259
260 DEST=/opt/stack
261
Ian Wienand815db162015-08-06 10:25:45 +1000262Logging
263-------
264
265Enable Logging
266~~~~~~~~~~~~~~
267
268By default ``stack.sh`` output is only written to the console where it
269runs. It can be sent to a file in addition to the console by setting
270``LOGFILE`` to the fully-qualified name of the destination log file. A
271timestamp will be appended to the given filename for each run of
272``stack.sh``.
273
274 ::
275
276 LOGFILE=$DEST/logs/stack.sh.log
277
278Old log files are cleaned automatically if ``LOGDAYS`` is set to the
279number of days of old log files to keep.
280
281 ::
282
283 LOGDAYS=1
284
Sean Dague8b8441f2017-05-02 06:14:11 -0400285Some coloring is used during the DevStack runs to make it easier to
286see what is going on. This can be disabled with::
Ian Wienand815db162015-08-06 10:25:45 +1000287
288 LOG_COLOR=False
289
Ian Wienand83ecb972018-02-06 10:03:34 +1100290When using the logfile, by default logs are sent to the console and
291the file. You can set ``VERBOSE`` to ``false`` if you only wish the
292logs to be sent to the file (this may avoid having double-logging in
293some cases where you are capturing the script output and the log
294files). If ``VERBOSE`` is ``true`` you can additionally set
295``VERBOSE_NO_TIMESTAMP`` to avoid timestamps being added to each
296output line sent to the console. This can be useful in some
297situations where the console output is being captured by a runner or
298framework (e.g. Ansible) that adds its own timestamps. Note that the
299log lines sent to the ``LOGFILE`` will still be prefixed with a
300timestamp.
301
Ian Wienand815db162015-08-06 10:25:45 +1000302Logging the Service Output
303~~~~~~~~~~~~~~~~~~~~~~~~~~
304
Sean Dague8b8441f2017-05-02 06:14:11 -0400305By default, services run under ``systemd`` and are natively logging to
306the systemd journal.
Ian Wienand815db162015-08-06 10:25:45 +1000307
Sean Dague8b8441f2017-05-02 06:14:11 -0400308To query the logs use the ``journalctl`` command, such as::
Ian Wienand815db162015-08-06 10:25:45 +1000309
caowei32eccca2017-11-01 11:45:21 +0800310 sudo journalctl --unit devstack@*
Ian Wienand815db162015-08-06 10:25:45 +1000311
Sean Dague8b8441f2017-05-02 06:14:11 -0400312More examples can be found in :ref:`journalctl-examples`.
Ian Wienand7d5be292015-08-10 13:39:17 +1000313
Ian Wienanda35391e2015-08-10 13:53:40 +1000314Example Logging Configuration
315~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
316
317For example, non-interactive installs probably wish to save output to
318a file, keep service logs and disable color in the stored files.
319
320 ::
321
322 [[local|localrc]]
323 DEST=/opt/stack/
Ian Wienanda35391e2015-08-10 13:53:40 +1000324 LOGFILE=$LOGDIR/stack.sh.log
325 LOG_COLOR=False
326
Ian Wienand7d5be292015-08-10 13:39:17 +1000327Database Backend
328----------------
329
330Multiple database backends are available. The available databases are defined
331in the lib/databases directory.
Markus Zoellerc30657d2015-11-02 11:27:46 +0100332``mysql`` is the default database, choose a different one by putting the
333following in the ``localrc`` section:
Ian Wienand7d5be292015-08-10 13:39:17 +1000334
335 ::
336
337 disable_service mysql
338 enable_service postgresql
339
Markus Zoellerc30657d2015-11-02 11:27:46 +0100340``mysql`` is the default database.
Ian Wienand7d5be292015-08-10 13:39:17 +1000341
342RPC Backend
343-----------
344
345Support for a RabbitMQ RPC backend is included. Additional RPC
346backends may be available via external plugins. Enabling or disabling
347RabbitMQ is handled via the usual service functions and
348``ENABLED_SERVICES``.
349
350Example disabling RabbitMQ in ``local.conf``:
351
352::
Markus Zoellerc30657d2015-11-02 11:27:46 +0100353
Ian Wienand7d5be292015-08-10 13:39:17 +1000354 disable_service rabbit
355
356
357Apache Frontend
358---------------
359
360The Apache web server can be enabled for wsgi services that support
361being deployed under HTTPD + mod_wsgi. By default, services that
362recommend running under HTTPD + mod_wsgi are deployed under Apache. To
363use an alternative deployment strategy (e.g. eventlet) for services
364that support an alternative to HTTPD + mod_wsgi set
365``ENABLE_HTTPD_MOD_WSGI_SERVICES`` to ``False`` in your
366``local.conf``.
367
368Each service that can be run under HTTPD + mod_wsgi also has an
369override toggle available that can be set in your ``local.conf``.
370
371Keystone is run under Apache with ``mod_wsgi`` by default.
372
373Example (Keystone)
374
375::
376
377 KEYSTONE_USE_MOD_WSGI="True"
378
379Example (Nova):
380
381::
382
383 NOVA_USE_MOD_WSGI="True"
384
385Example (Swift):
386
387::
388
389 SWIFT_USE_MOD_WSGI="True"
390
Oleksii Chuprykova6928102015-06-11 08:56:58 -0400391Example (Heat):
392
393::
394
395 HEAT_USE_MOD_WSGI="True"
396
Ian Wienand7d5be292015-08-10 13:39:17 +1000397
Anton Arefiev651cb1a2015-09-01 10:55:20 +0300398Example (Cinder):
399
400::
401
402 CINDER_USE_MOD_WSGI="True"
403
Ian Wienand7d5be292015-08-10 13:39:17 +1000404
Sean Dague07d7e5b2014-11-17 07:10:14 -0500405Libraries from Git
406------------------
407
Ian Wienand815db162015-08-06 10:25:45 +1000408By default devstack installs OpenStack server components from git,
409however it installs client libraries from released versions on pypi.
410This is appropriate if you are working on server development, but if
411you want to see how an unreleased version of the client affects the
412system you can have devstack install it from upstream, or from local
413git trees by specifying it in ``LIBS_FROM_GIT``. Multiple libraries
414can be specified as a comma separated list.
Sean Dague07d7e5b2014-11-17 07:10:14 -0500415
416 ::
417
418 LIBS_FROM_GIT=python-keystoneclient,oslo.config
419
Marc Koderer46f8cb72016-05-13 09:08:16 +0200420Setting the variable to ``ALL`` will activate the download for all
421libraries.
422
Dean Troyer5686dbc2015-03-09 14:27:51 -0500423Virtual Environments
424--------------------
425
Ian Wienand815db162015-08-06 10:25:45 +1000426Enable the use of Python virtual environments by setting ``USE_VENV``
427to ``True``. This will enable the creation of venvs for each project
428that is defined in the ``PROJECT_VENV`` array.
Dean Troyer5686dbc2015-03-09 14:27:51 -0500429
Ian Wienand815db162015-08-06 10:25:45 +1000430Each entry in the ``PROJECT_VENV`` array contains the directory name
431of a venv to be used for the project. The array index is the project
432name. Multiple projects can use the same venv if desired.
Dean Troyer5686dbc2015-03-09 14:27:51 -0500433
434 ::
435
436 PROJECT_VENV["glance"]=${GLANCE_DIR}.venv
437
Ian Wienand815db162015-08-06 10:25:45 +1000438``ADDITIONAL_VENV_PACKAGES`` is a comma-separated list of additional
439packages to be installed into each venv. Often projects will not have
440certain packages listed in its ``requirements.txt`` file because they
441are 'optional' requirements, i.e. only needed for certain
442configurations. By default, the enabled databases will have their
443Python bindings added when they are enabled.
Dean Troyer5686dbc2015-03-09 14:27:51 -0500444
Ian Wienand815db162015-08-06 10:25:45 +1000445 ::
Sean Dague07d7e5b2014-11-17 07:10:14 -0500446
Ian Wienand815db162015-08-06 10:25:45 +1000447 ADDITIONAL_VENV_PACKAGES="python-foo, python-bar"
Sean M. Collins09e550c2014-10-21 11:40:08 -0400448
Lajos Katonadae10412018-09-21 10:51:47 +0200449Use python3
450------------
451
452By default ``stack.sh`` uses python2 (the exact version set by the
453``PYTHON2_VERSION``). This can be overriden so devstack will run
454python3 (the exact version set by ``PYTHON3_VERSION``).
455
456 ::
457
458 USE_PYTHON3=True
Sean M. Collins09e550c2014-10-21 11:40:08 -0400459
460A clean install every time
Sean Dague07d7e5b2014-11-17 07:10:14 -0500461--------------------------
462
Ian Wienand815db162015-08-06 10:25:45 +1000463By default ``stack.sh`` only clones the project repos if they do not
464exist in ``$DEST``. ``stack.sh`` will freshen each repo on each run if
465``RECLONE`` is set to ``yes``. This avoids having to manually remove
466repos in order to get the current branch from ``$GIT_BASE``.
Sean M. Collins09e550c2014-10-21 11:40:08 -0400467
468 ::
469
470 RECLONE=yes
471
Chris Dentebdd9ac2015-03-04 12:35:14 +0000472Upgrade packages installed by pip
473---------------------------------
474
Ian Wienand815db162015-08-06 10:25:45 +1000475By default ``stack.sh`` only installs Python packages if no version is
476currently installed or the current version does not match a specified
477requirement. If ``PIP_UPGRADE`` is set to ``True`` then existing
478required Python packages will be upgraded to the most recent version
479that matches requirements.
Chris Dentebdd9ac2015-03-04 12:35:14 +0000480
481 ::
482
483 PIP_UPGRADE=True
484
John Huaa4693b52015-08-06 13:53:35 +0100485Guest Images
486------------
487
488Images provided in URLS via the comma-separated ``IMAGE_URLS``
489variable will be downloaded and uploaded to glance by DevStack.
490
491Default guest-images are predefined for each type of hypervisor and
492their testing-requirements in ``stack.sh``. Setting
493``DOWNLOAD_DEFAULT_IMAGES=False`` will prevent DevStack downloading
494these default images; in that case, you will want to populate
495``IMAGE_URLS`` with sufficient images to satisfy testing-requirements.
496
497 ::
498
499 DOWNLOAD_DEFAULT_IMAGES=False
500 IMAGE_URLS="http://foo.bar.com/image.qcow,"
501 IMAGE_URLS+="http://foo.bar.com/image2.qcow"
502
Rafael Folcof0131e12015-09-23 12:55:02 -0500503
504Instance Type
505-------------
506
507``DEFAULT_INSTANCE_TYPE`` can be used to configure the default instance
508type. When this parameter is not specified, Devstack creates additional
509micro & nano flavors for really small instances to run Tempest tests.
510
511For guests with larger memory requirements, ``DEFAULT_INSTANCE_TYPE``
512should be specified in the configuration file so Tempest selects the
513default flavors instead.
514
515KVM on Power with QEMU 2.4 requires 512 MB to load the firmware -
516`QEMU 2.4 - PowerPC <http://wiki.qemu.org/ChangeLog/2.4>`__ so users
517running instances on ppc64/ppc64le can choose one of the default
518created flavors as follows:
519
520 ::
521
522 DEFAULT_INSTANCE_TYPE=m1.tiny
523
524
John Davidge21529a52014-06-30 09:55:11 -0400525IP Version
Brian Haley180f5eb2015-06-16 13:14:31 -0400526----------
527
Clay Gerrard148d0e62016-09-01 02:38:06 -0700528``IP_VERSION`` can be used to configure Neutron to create either an
529IPv4, IPv6, or dual-stack self-service project data-network by with
Sean Daguedb48db12016-04-06 08:09:31 -0400530either ``IP_VERSION=4``, ``IP_VERSION=6``, or ``IP_VERSION=4+6``
Clay Gerrard148d0e62016-09-01 02:38:06 -0700531respectively.
John Davidge21529a52014-06-30 09:55:11 -0400532
533 ::
534
Clay Gerrard148d0e62016-09-01 02:38:06 -0700535 IP_VERSION=4+6
John Davidge21529a52014-06-30 09:55:11 -0400536
Ian Wienand815db162015-08-06 10:25:45 +1000537The following optional variables can be used to alter the default IPv6
538behavior:
John Davidge21529a52014-06-30 09:55:11 -0400539
540 ::
541
542 IPV6_RA_MODE=slaac
543 IPV6_ADDRESS_MODE=slaac
Kevin Benton4bfbc292016-11-15 17:26:05 -0800544 IPV6_ADDRS_SAFE_TO_USE=fd$IPV6_GLOBAL_ID::/56
John Davidge21529a52014-06-30 09:55:11 -0400545 IPV6_PRIVATE_NETWORK_GATEWAY=fd$IPV6_GLOBAL_ID::1
546
Kevin Benton4bfbc292016-11-15 17:26:05 -0800547*Note*: ``IPV6_ADDRS_SAFE_TO_USE`` and ``IPV6_PRIVATE_NETWORK_GATEWAY``
548can be configured with any valid IPv6 prefix. The default values make
549use of an auto-generated ``IPV6_GLOBAL_ID`` to comply with RFC4193.
Brian Haley180f5eb2015-06-16 13:14:31 -0400550
Ian Wienand815db162015-08-06 10:25:45 +1000551Service Version
552~~~~~~~~~~~~~~~
553
554DevStack can enable service operation over either IPv4 or IPv6 by
555setting ``SERVICE_IP_VERSION`` to either ``SERVICE_IP_VERSION=4`` or
556``SERVICE_IP_VERSION=6`` respectively.
557
558When set to ``4`` devstack services will open listen sockets on
559``0.0.0.0`` and service endpoints will be registered using ``HOST_IP``
560as the address.
561
562When set to ``6`` devstack services will open listen sockets on ``::``
563and service endpoints will be registered using ``HOST_IPV6`` as the
564address.
565
566The default value for this setting is ``4``. Dual-mode support, for
567example ``4+6`` is not currently supported. ``HOST_IPV6`` can
568optionally be used to alter the default IPv6 address
Brian Haley180f5eb2015-06-16 13:14:31 -0400569
570 ::
571
572 HOST_IPV6=${some_local_ipv6_address}
John Davidge21529a52014-06-30 09:55:11 -0400573
Ian Wienand7d5be292015-08-10 13:39:17 +1000574Multi-node setup
575~~~~~~~~~~~~~~~~
Sean M. Collins09e550c2014-10-21 11:40:08 -0400576
Ian Wienand7d5be292015-08-10 13:39:17 +1000577See the :doc:`multi-node lab guide<guides/multinode-lab>`
Sean M. Collins09e550c2014-10-21 11:40:08 -0400578
Ian Wienand7d5be292015-08-10 13:39:17 +1000579Projects
580--------
Sean M. Collins09e550c2014-10-21 11:40:08 -0400581
Ian Wienand7d5be292015-08-10 13:39:17 +1000582Neutron
583~~~~~~~
Sean M. Collins09e550c2014-10-21 11:40:08 -0400584
Ian Wienand7d5be292015-08-10 13:39:17 +1000585See the :doc:`neutron configuration guide<guides/neutron>` for
586details on configuration of Neutron
Sean M. Collins09e550c2014-10-21 11:40:08 -0400587
Sean M. Collins09e550c2014-10-21 11:40:08 -0400588
Ian Wienand7d5be292015-08-10 13:39:17 +1000589Swift
590~~~~~
591
592Swift is disabled by default. When enabled, it is configured with
593only one replica to avoid being IO/memory intensive on a small
Sean Dague8b8441f2017-05-02 06:14:11 -0400594VM.
Ian Wienand7d5be292015-08-10 13:39:17 +1000595
Markus Zoellerc30657d2015-11-02 11:27:46 +0100596If you would like to enable Swift you can add this to your ``localrc``
Ian Wienand7d5be292015-08-10 13:39:17 +1000597section:
598
599::
600
601 enable_service s-proxy s-object s-container s-account
602
603If you want a minimal Swift install with only Swift and Keystone you
Markus Zoellerc30657d2015-11-02 11:27:46 +0100604can have this instead in your ``localrc`` section:
Ian Wienand7d5be292015-08-10 13:39:17 +1000605
606::
607
608 disable_all_services
609 enable_service key mysql s-proxy s-object s-container s-account
610
611If you only want to do some testing of a real normal swift cluster
612with multiple replicas you can do so by customizing the variable
Markus Zoellerc30657d2015-11-02 11:27:46 +0100613``SWIFT_REPLICAS`` in your ``localrc`` section (usually to 3).
Ian Wienand7d5be292015-08-10 13:39:17 +1000614
Christian Schwede91d22452016-04-12 10:53:46 +0200615You can manually override the ring building to use specific storage
616nodes, for example when you want to test a multinode environment. In
617this case you have to set a space-separated list of IPs in
618``SWIFT_STORAGE_IPS`` in your ``localrc`` section that should be used
619as Swift storage nodes.
620Please note that this does not create a multinode setup, it is only
621used when adding nodes to the Swift rings.
622
623::
624
625 SWIFT_STORAGE_IPS="192.168.1.10 192.168.1.11 192.168.1.12"
626
Ian Wienand7d5be292015-08-10 13:39:17 +1000627Swift S3
628++++++++
629
Kota Tsuyuzaki070e4ee2018-09-13 03:08:19 +0900630If you are enabling ``s3api`` in ``ENABLED_SERVICES`` DevStack will
631install the s3api middleware emulation. Swift will be configured to
Ian Wienand7d5be292015-08-10 13:39:17 +1000632act as a S3 endpoint for Keystone so effectively replacing the
Markus Zoellerc30657d2015-11-02 11:27:46 +0100633``nova-objectstore``.
Ian Wienand7d5be292015-08-10 13:39:17 +1000634
Sean Dague8b8441f2017-05-02 06:14:11 -0400635Only Swift proxy server is launched in the systemd system all other
Markus Zoellerc30657d2015-11-02 11:27:46 +0100636services are started in background and managed by ``swift-init`` tool.
Ian Wienand7d5be292015-08-10 13:39:17 +1000637
Ian Wienand7d5be292015-08-10 13:39:17 +1000638Tempest
639~~~~~~~
640
641If tempest has been successfully configured, a basic set of smoke
642tests can be run as follows:
643
644::
645
646 $ cd /opt/stack/tempest
647 $ tox -efull tempest.scenario.test_network_basic_ops
648
649By default tempest is downloaded and the config file is generated, but the
650tempest package is not installed in the system's global site-packages (the
651package install includes installing dependences). So tempest won't run
652outside of tox. If you would like to install it add the following to your
653``localrc`` section:
654
655::
656
657 INSTALL_TEMPEST=True
658
659
660Xenserver
661~~~~~~~~~
662
663If you would like to use Xenserver as the hypervisor, please refer to
Markus Zoellerc30657d2015-11-02 11:27:46 +0100664the instructions in ``./tools/xen/README.md``.
Ian Wienand7d5be292015-08-10 13:39:17 +1000665
666Cells
667~~~~~
668
chengebj523878930122018-01-18 15:53:27 +0800669`Cells <https://wiki.openstack.org/wiki/Blueprint-nova-compute-cells>`__ is
Ian Wienand7d5be292015-08-10 13:39:17 +1000670an alternative scaling option. To setup a cells environment add the
Markus Zoellerc30657d2015-11-02 11:27:46 +0100671following to your ``localrc`` section:
Ian Wienand7d5be292015-08-10 13:39:17 +1000672
673::
674
675 enable_service n-cell
676
677Be aware that there are some features currently missing in cells, one
Dirk Muellere484f3b2018-07-10 16:28:44 +0200678notable one being security groups.
Ian Wienand7d5be292015-08-10 13:39:17 +1000679
680Cinder
681~~~~~~
682
683The logical volume group used to hold the Cinder-managed volumes is
Jordan Pittierf5069f32016-11-08 12:10:12 +0100684set by ``VOLUME_GROUP_NAME``, the logical volume name prefix is set with
Ian Wienand7d5be292015-08-10 13:39:17 +1000685``VOLUME_NAME_PREFIX`` and the size of the volume backing file is set
686with ``VOLUME_BACKING_FILE_SIZE``.
687
688 ::
689
Jordan Pittierf5069f32016-11-08 12:10:12 +0100690 VOLUME_GROUP_NAME="stack-volumes"
Ian Wienand7d5be292015-08-10 13:39:17 +1000691 VOLUME_NAME_PREFIX="volume-"
Peter Penchev6bcd8ca2018-01-12 23:49:04 +0200692 VOLUME_BACKING_FILE_SIZE=24G
Ian Wienand7d5be292015-08-10 13:39:17 +1000693
694
695Keystone
696~~~~~~~~
697
698Multi-Region Setup
699++++++++++++++++++
700
701We want to setup two devstack (RegionOne and RegionTwo) with shared
702keystone (same users and services) and horizon. Keystone and Horizon
703will be located in RegionOne. Full spec is available at:
704`<https://wiki.openstack.org/wiki/Heat/Blueprints/Multi_Region_Support_for_Heat>`__.
705
706In RegionOne:
707
708::
709
710 REGION_NAME=RegionOne
711
712In RegionTwo:
713
714::
henriquetrutaf2126222016-01-05 13:43:18 -0300715
Ian Wienand7d5be292015-08-10 13:39:17 +1000716 disable_service horizon
717 KEYSTONE_SERVICE_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE>
718 KEYSTONE_AUTH_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE>
719 REGION_NAME=RegionTwo
zhiyuan_cai6f1781f2016-04-07 18:36:46 +0800720 KEYSTONE_REGION_NAME=RegionOne
721
722In the devstack for RegionOne, we set REGION_NAME as RegionOne, so region of
723the services started in this devstack are registered as RegionOne. In devstack
724for RegionTwo, similarly, we set REGION_NAME as RegionTwo since we want
725services started in this devstack to be registered in RegionTwo. But Keystone
726service is started and registered in RegionOne, not RegionTwo, so we use
727KEYSTONE_REGION_NAME to specify the region of Keystone service.
728KEYSTONE_REGION_NAME has a default value the same as REGION_NAME thus we omit
729it in the configuration of RegionOne.
henriquetrutaf2126222016-01-05 13:43:18 -0300730
731Disabling Identity API v2
732+++++++++++++++++++++++++
733
734The Identity API v2 is deprecated as of Mitaka and it is recommended to only
735use the v3 API. It is possible to setup keystone without v2 API, by doing:
736
737::
738
739 ENABLE_IDENTITY_V2=False
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000740
Markus Zoeller14728c72017-05-29 15:39:21 +0200741.. _arch-configuration:
742
743Architectures
744-------------
745
746The upstream CI runs exclusively on nodes with x86 architectures, but
747OpenStack supports even more architectures. Some of them need to configure
748Devstack in a certain way.
749
750KVM on s390x (IBM z Systems)
751~~~~~~~~~~~~~~~~~~~~~~~~~~~~
752
753KVM on s390x (IBM z Systems) is supported since the *Kilo* release. For
754an all-in-one setup, these minimal settings in the ``local.conf`` file
755are needed::
756
757 [[local|localrc]]
758 ADMIN_PASSWORD=secret
759 DATABASE_PASSWORD=$ADMIN_PASSWORD
760 RABBIT_PASSWORD=$ADMIN_PASSWORD
761 SERVICE_PASSWORD=$ADMIN_PASSWORD
762
763 DOWNLOAD_DEFAULT_IMAGES=False
764 IMAGE_URLS="https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-s390x-disk1.img"
765
Andreas Scheuring941940a2017-09-13 00:24:02 +0200766 # Provide a custom etcd3 binary download URL and ints sha256.
767 # The binary must be located under '/<etcd version>/etcd-<etcd-version>-linux-s390x.tar.gz'
768 # on this URL.
769 # Build instructions for etcd3: https://github.com/linux-on-ibm-z/docs/wiki/Building-etcd
770 ETCD_DOWNLOAD_URL=<your-etcd-download-url>
771 ETCD_SHA256=<your-etcd3-sha256>
772
Markus Zoeller14728c72017-05-29 15:39:21 +0200773 enable_service n-sproxy
774 disable_service n-novnc
Markus Zoeller14728c72017-05-29 15:39:21 +0200775
776 [[post-config|$NOVA_CONF]]
777
778 [serial_console]
779 base_url=ws://$HOST_IP:6083/ # optional
780
781Reasoning:
782
783* The default image of Devstack is x86 only, so we deactivate the download
784 with ``DOWNLOAD_DEFAULT_IMAGES``. The referenced guest image
785 in the code above (``IMAGE_URLS``) serves as an example. The list of
786 possible s390x guest images is not limited to that.
787
788* This platform doesn't support a graphical console like VNC or SPICE.
789 The technical reason is the missing framebuffer on the platform. This
790 means we rely on the substitute feature *serial console* which needs the
791 proxy service ``n-sproxy``. We also disable VNC's proxy ``n-novnc`` for
792 that reason . The configuration in the ``post-config`` section is only
793 needed if you want to use the *serial console* outside of the all-in-one
794 setup.
795
Andreas Scheuring941940a2017-09-13 00:24:02 +0200796* A link to an etcd3 binary and its sha256 needs to be provided as the
797 binary for s390x is not hosted on github like it is for other
798 architectures. For more details see
799 https://bugs.launchpad.net/devstack/+bug/1693192. Etcd3 can easily be
800 built along https://github.com/linux-on-ibm-z/docs/wiki/Building-etcd.
Markus Zoeller14728c72017-05-29 15:39:21 +0200801
802.. note:: To run *Tempest* against this *Devstack* all-in-one, you'll need
803 to use a guest image which is smaller than 1GB when uncompressed.
804 The example image from above is bigger than that!