blob: 5e8004dc440d757e9625adf548407d4e93be3666 [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
Ian Wienand7d5be292015-08-10 13:39:17 +1000666Cinder
667~~~~~~
668
669The logical volume group used to hold the Cinder-managed volumes is
Jordan Pittierf5069f32016-11-08 12:10:12 +0100670set by ``VOLUME_GROUP_NAME``, the logical volume name prefix is set with
Ian Wienand7d5be292015-08-10 13:39:17 +1000671``VOLUME_NAME_PREFIX`` and the size of the volume backing file is set
672with ``VOLUME_BACKING_FILE_SIZE``.
673
674 ::
675
Jordan Pittierf5069f32016-11-08 12:10:12 +0100676 VOLUME_GROUP_NAME="stack-volumes"
Ian Wienand7d5be292015-08-10 13:39:17 +1000677 VOLUME_NAME_PREFIX="volume-"
Peter Penchev6bcd8ca2018-01-12 23:49:04 +0200678 VOLUME_BACKING_FILE_SIZE=24G
Ian Wienand7d5be292015-08-10 13:39:17 +1000679
680
681Keystone
682~~~~~~~~
683
684Multi-Region Setup
685++++++++++++++++++
686
687We want to setup two devstack (RegionOne and RegionTwo) with shared
688keystone (same users and services) and horizon. Keystone and Horizon
689will be located in RegionOne. Full spec is available at:
690`<https://wiki.openstack.org/wiki/Heat/Blueprints/Multi_Region_Support_for_Heat>`__.
691
692In RegionOne:
693
694::
695
696 REGION_NAME=RegionOne
697
698In RegionTwo:
699
700::
henriquetrutaf2126222016-01-05 13:43:18 -0300701
Ian Wienand7d5be292015-08-10 13:39:17 +1000702 disable_service horizon
703 KEYSTONE_SERVICE_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE>
704 KEYSTONE_AUTH_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE>
705 REGION_NAME=RegionTwo
zhiyuan_cai6f1781f2016-04-07 18:36:46 +0800706 KEYSTONE_REGION_NAME=RegionOne
707
708In the devstack for RegionOne, we set REGION_NAME as RegionOne, so region of
709the services started in this devstack are registered as RegionOne. In devstack
710for RegionTwo, similarly, we set REGION_NAME as RegionTwo since we want
711services started in this devstack to be registered in RegionTwo. But Keystone
712service is started and registered in RegionOne, not RegionTwo, so we use
713KEYSTONE_REGION_NAME to specify the region of Keystone service.
714KEYSTONE_REGION_NAME has a default value the same as REGION_NAME thus we omit
715it in the configuration of RegionOne.
henriquetrutaf2126222016-01-05 13:43:18 -0300716
717Disabling Identity API v2
718+++++++++++++++++++++++++
719
720The Identity API v2 is deprecated as of Mitaka and it is recommended to only
721use the v3 API. It is possible to setup keystone without v2 API, by doing:
722
723::
724
725 ENABLE_IDENTITY_V2=False
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000726
Markus Zoeller14728c72017-05-29 15:39:21 +0200727.. _arch-configuration:
728
729Architectures
730-------------
731
732The upstream CI runs exclusively on nodes with x86 architectures, but
733OpenStack supports even more architectures. Some of them need to configure
734Devstack in a certain way.
735
736KVM on s390x (IBM z Systems)
737~~~~~~~~~~~~~~~~~~~~~~~~~~~~
738
739KVM on s390x (IBM z Systems) is supported since the *Kilo* release. For
740an all-in-one setup, these minimal settings in the ``local.conf`` file
741are needed::
742
743 [[local|localrc]]
744 ADMIN_PASSWORD=secret
745 DATABASE_PASSWORD=$ADMIN_PASSWORD
746 RABBIT_PASSWORD=$ADMIN_PASSWORD
747 SERVICE_PASSWORD=$ADMIN_PASSWORD
748
749 DOWNLOAD_DEFAULT_IMAGES=False
750 IMAGE_URLS="https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-s390x-disk1.img"
751
Andreas Scheuring941940a2017-09-13 00:24:02 +0200752 # Provide a custom etcd3 binary download URL and ints sha256.
753 # The binary must be located under '/<etcd version>/etcd-<etcd-version>-linux-s390x.tar.gz'
754 # on this URL.
755 # Build instructions for etcd3: https://github.com/linux-on-ibm-z/docs/wiki/Building-etcd
756 ETCD_DOWNLOAD_URL=<your-etcd-download-url>
757 ETCD_SHA256=<your-etcd3-sha256>
758
Markus Zoeller14728c72017-05-29 15:39:21 +0200759 enable_service n-sproxy
760 disable_service n-novnc
Markus Zoeller14728c72017-05-29 15:39:21 +0200761
762 [[post-config|$NOVA_CONF]]
763
764 [serial_console]
765 base_url=ws://$HOST_IP:6083/ # optional
766
767Reasoning:
768
769* The default image of Devstack is x86 only, so we deactivate the download
770 with ``DOWNLOAD_DEFAULT_IMAGES``. The referenced guest image
771 in the code above (``IMAGE_URLS``) serves as an example. The list of
772 possible s390x guest images is not limited to that.
773
774* This platform doesn't support a graphical console like VNC or SPICE.
775 The technical reason is the missing framebuffer on the platform. This
776 means we rely on the substitute feature *serial console* which needs the
777 proxy service ``n-sproxy``. We also disable VNC's proxy ``n-novnc`` for
778 that reason . The configuration in the ``post-config`` section is only
779 needed if you want to use the *serial console* outside of the all-in-one
780 setup.
781
Andreas Scheuring941940a2017-09-13 00:24:02 +0200782* A link to an etcd3 binary and its sha256 needs to be provided as the
783 binary for s390x is not hosted on github like it is for other
784 architectures. For more details see
785 https://bugs.launchpad.net/devstack/+bug/1693192. Etcd3 can easily be
786 built along https://github.com/linux-on-ibm-z/docs/wiki/Building-etcd.
Markus Zoeller14728c72017-05-29 15:39:21 +0200787
788.. note:: To run *Tempest* against this *Devstack* all-in-one, you'll need
789 to use a guest image which is smaller than 1GB when uncompressed.
790 The example image from above is bigger than that!