blob: fc0a6204414767d1b588bc9b92dd71544dbdd315 [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
Sean M. Collins09e550c2014-10-21 11:40:08 -0400449
450A clean install every time
Sean Dague07d7e5b2014-11-17 07:10:14 -0500451--------------------------
452
Ian Wienand815db162015-08-06 10:25:45 +1000453By default ``stack.sh`` only clones the project repos if they do not
454exist in ``$DEST``. ``stack.sh`` will freshen each repo on each run if
455``RECLONE`` is set to ``yes``. This avoids having to manually remove
456repos in order to get the current branch from ``$GIT_BASE``.
Sean M. Collins09e550c2014-10-21 11:40:08 -0400457
458 ::
459
460 RECLONE=yes
461
Chris Dentebdd9ac2015-03-04 12:35:14 +0000462Upgrade packages installed by pip
463---------------------------------
464
Ian Wienand815db162015-08-06 10:25:45 +1000465By default ``stack.sh`` only installs Python packages if no version is
466currently installed or the current version does not match a specified
467requirement. If ``PIP_UPGRADE`` is set to ``True`` then existing
468required Python packages will be upgraded to the most recent version
469that matches requirements.
Chris Dentebdd9ac2015-03-04 12:35:14 +0000470
471 ::
472
473 PIP_UPGRADE=True
474
John Huaa4693b52015-08-06 13:53:35 +0100475Guest Images
476------------
477
478Images provided in URLS via the comma-separated ``IMAGE_URLS``
479variable will be downloaded and uploaded to glance by DevStack.
480
481Default guest-images are predefined for each type of hypervisor and
482their testing-requirements in ``stack.sh``. Setting
483``DOWNLOAD_DEFAULT_IMAGES=False`` will prevent DevStack downloading
484these default images; in that case, you will want to populate
485``IMAGE_URLS`` with sufficient images to satisfy testing-requirements.
486
487 ::
488
489 DOWNLOAD_DEFAULT_IMAGES=False
490 IMAGE_URLS="http://foo.bar.com/image.qcow,"
491 IMAGE_URLS+="http://foo.bar.com/image2.qcow"
492
Rafael Folcof0131e12015-09-23 12:55:02 -0500493
494Instance Type
495-------------
496
497``DEFAULT_INSTANCE_TYPE`` can be used to configure the default instance
498type. When this parameter is not specified, Devstack creates additional
499micro & nano flavors for really small instances to run Tempest tests.
500
501For guests with larger memory requirements, ``DEFAULT_INSTANCE_TYPE``
502should be specified in the configuration file so Tempest selects the
503default flavors instead.
504
505KVM on Power with QEMU 2.4 requires 512 MB to load the firmware -
506`QEMU 2.4 - PowerPC <http://wiki.qemu.org/ChangeLog/2.4>`__ so users
507running instances on ppc64/ppc64le can choose one of the default
508created flavors as follows:
509
510 ::
511
512 DEFAULT_INSTANCE_TYPE=m1.tiny
513
514
John Davidge21529a52014-06-30 09:55:11 -0400515IP Version
Brian Haley180f5eb2015-06-16 13:14:31 -0400516----------
517
Clay Gerrard148d0e62016-09-01 02:38:06 -0700518``IP_VERSION`` can be used to configure Neutron to create either an
519IPv4, IPv6, or dual-stack self-service project data-network by with
Sean Daguedb48db12016-04-06 08:09:31 -0400520either ``IP_VERSION=4``, ``IP_VERSION=6``, or ``IP_VERSION=4+6``
Clay Gerrard148d0e62016-09-01 02:38:06 -0700521respectively.
John Davidge21529a52014-06-30 09:55:11 -0400522
523 ::
524
Clay Gerrard148d0e62016-09-01 02:38:06 -0700525 IP_VERSION=4+6
John Davidge21529a52014-06-30 09:55:11 -0400526
Ian Wienand815db162015-08-06 10:25:45 +1000527The following optional variables can be used to alter the default IPv6
528behavior:
John Davidge21529a52014-06-30 09:55:11 -0400529
530 ::
531
532 IPV6_RA_MODE=slaac
533 IPV6_ADDRESS_MODE=slaac
Kevin Benton4bfbc292016-11-15 17:26:05 -0800534 IPV6_ADDRS_SAFE_TO_USE=fd$IPV6_GLOBAL_ID::/56
John Davidge21529a52014-06-30 09:55:11 -0400535 IPV6_PRIVATE_NETWORK_GATEWAY=fd$IPV6_GLOBAL_ID::1
536
Kevin Benton4bfbc292016-11-15 17:26:05 -0800537*Note*: ``IPV6_ADDRS_SAFE_TO_USE`` and ``IPV6_PRIVATE_NETWORK_GATEWAY``
538can be configured with any valid IPv6 prefix. The default values make
539use of an auto-generated ``IPV6_GLOBAL_ID`` to comply with RFC4193.
Brian Haley180f5eb2015-06-16 13:14:31 -0400540
Ian Wienand815db162015-08-06 10:25:45 +1000541Service Version
542~~~~~~~~~~~~~~~
543
544DevStack can enable service operation over either IPv4 or IPv6 by
545setting ``SERVICE_IP_VERSION`` to either ``SERVICE_IP_VERSION=4`` or
546``SERVICE_IP_VERSION=6`` respectively.
547
548When set to ``4`` devstack services will open listen sockets on
549``0.0.0.0`` and service endpoints will be registered using ``HOST_IP``
550as the address.
551
552When set to ``6`` devstack services will open listen sockets on ``::``
553and service endpoints will be registered using ``HOST_IPV6`` as the
554address.
555
556The default value for this setting is ``4``. Dual-mode support, for
557example ``4+6`` is not currently supported. ``HOST_IPV6`` can
558optionally be used to alter the default IPv6 address
Brian Haley180f5eb2015-06-16 13:14:31 -0400559
560 ::
561
562 HOST_IPV6=${some_local_ipv6_address}
John Davidge21529a52014-06-30 09:55:11 -0400563
Ian Wienand7d5be292015-08-10 13:39:17 +1000564Multi-node setup
565~~~~~~~~~~~~~~~~
Sean M. Collins09e550c2014-10-21 11:40:08 -0400566
Ian Wienand7d5be292015-08-10 13:39:17 +1000567See the :doc:`multi-node lab guide<guides/multinode-lab>`
Sean M. Collins09e550c2014-10-21 11:40:08 -0400568
Ian Wienand7d5be292015-08-10 13:39:17 +1000569Projects
570--------
Sean M. Collins09e550c2014-10-21 11:40:08 -0400571
Ian Wienand7d5be292015-08-10 13:39:17 +1000572Neutron
573~~~~~~~
Sean M. Collins09e550c2014-10-21 11:40:08 -0400574
Ian Wienand7d5be292015-08-10 13:39:17 +1000575See the :doc:`neutron configuration guide<guides/neutron>` for
576details on configuration of Neutron
Sean M. Collins09e550c2014-10-21 11:40:08 -0400577
Sean M. Collins09e550c2014-10-21 11:40:08 -0400578
Ian Wienand7d5be292015-08-10 13:39:17 +1000579Swift
580~~~~~
581
582Swift is disabled by default. When enabled, it is configured with
583only one replica to avoid being IO/memory intensive on a small
Sean Dague8b8441f2017-05-02 06:14:11 -0400584VM.
Ian Wienand7d5be292015-08-10 13:39:17 +1000585
Markus Zoellerc30657d2015-11-02 11:27:46 +0100586If you would like to enable Swift you can add this to your ``localrc``
Ian Wienand7d5be292015-08-10 13:39:17 +1000587section:
588
589::
590
591 enable_service s-proxy s-object s-container s-account
592
593If you want a minimal Swift install with only Swift and Keystone you
Markus Zoellerc30657d2015-11-02 11:27:46 +0100594can have this instead in your ``localrc`` section:
Ian Wienand7d5be292015-08-10 13:39:17 +1000595
596::
597
598 disable_all_services
599 enable_service key mysql s-proxy s-object s-container s-account
600
601If you only want to do some testing of a real normal swift cluster
602with multiple replicas you can do so by customizing the variable
Markus Zoellerc30657d2015-11-02 11:27:46 +0100603``SWIFT_REPLICAS`` in your ``localrc`` section (usually to 3).
Ian Wienand7d5be292015-08-10 13:39:17 +1000604
Christian Schwede91d22452016-04-12 10:53:46 +0200605You can manually override the ring building to use specific storage
606nodes, for example when you want to test a multinode environment. In
607this case you have to set a space-separated list of IPs in
608``SWIFT_STORAGE_IPS`` in your ``localrc`` section that should be used
609as Swift storage nodes.
610Please note that this does not create a multinode setup, it is only
611used when adding nodes to the Swift rings.
612
613::
614
615 SWIFT_STORAGE_IPS="192.168.1.10 192.168.1.11 192.168.1.12"
616
Ian Wienand7d5be292015-08-10 13:39:17 +1000617Swift S3
618++++++++
619
Markus Zoellerc30657d2015-11-02 11:27:46 +0100620If you are enabling ``swift3`` in ``ENABLED_SERVICES`` DevStack will
Ian Wienand7d5be292015-08-10 13:39:17 +1000621install the swift3 middleware emulation. Swift will be configured to
622act as a S3 endpoint for Keystone so effectively replacing the
Markus Zoellerc30657d2015-11-02 11:27:46 +0100623``nova-objectstore``.
Ian Wienand7d5be292015-08-10 13:39:17 +1000624
Sean Dague8b8441f2017-05-02 06:14:11 -0400625Only Swift proxy server is launched in the systemd system all other
Markus Zoellerc30657d2015-11-02 11:27:46 +0100626services are started in background and managed by ``swift-init`` tool.
Ian Wienand7d5be292015-08-10 13:39:17 +1000627
Ian Wienand7d5be292015-08-10 13:39:17 +1000628Tempest
629~~~~~~~
630
631If tempest has been successfully configured, a basic set of smoke
632tests can be run as follows:
633
634::
635
636 $ cd /opt/stack/tempest
637 $ tox -efull tempest.scenario.test_network_basic_ops
638
639By default tempest is downloaded and the config file is generated, but the
640tempest package is not installed in the system's global site-packages (the
641package install includes installing dependences). So tempest won't run
642outside of tox. If you would like to install it add the following to your
643``localrc`` section:
644
645::
646
647 INSTALL_TEMPEST=True
648
649
650Xenserver
651~~~~~~~~~
652
653If you would like to use Xenserver as the hypervisor, please refer to
Markus Zoellerc30657d2015-11-02 11:27:46 +0100654the instructions in ``./tools/xen/README.md``.
Ian Wienand7d5be292015-08-10 13:39:17 +1000655
656Cells
657~~~~~
658
659`Cells <http://wiki.openstack.org/blueprint-nova-compute-cells>`__ is
660an alternative scaling option. To setup a cells environment add the
Markus Zoellerc30657d2015-11-02 11:27:46 +0100661following to your ``localrc`` section:
Ian Wienand7d5be292015-08-10 13:39:17 +1000662
663::
664
665 enable_service n-cell
666
667Be aware that there are some features currently missing in cells, one
668notable one being security groups. The exercises have been patched to
669disable functionality not supported by cells.
670
671Cinder
672~~~~~~
673
674The logical volume group used to hold the Cinder-managed volumes is
Jordan Pittierf5069f32016-11-08 12:10:12 +0100675set by ``VOLUME_GROUP_NAME``, the logical volume name prefix is set with
Ian Wienand7d5be292015-08-10 13:39:17 +1000676``VOLUME_NAME_PREFIX`` and the size of the volume backing file is set
677with ``VOLUME_BACKING_FILE_SIZE``.
678
679 ::
680
Jordan Pittierf5069f32016-11-08 12:10:12 +0100681 VOLUME_GROUP_NAME="stack-volumes"
Ian Wienand7d5be292015-08-10 13:39:17 +1000682 VOLUME_NAME_PREFIX="volume-"
Peter Penchev6bcd8ca2018-01-12 23:49:04 +0200683 VOLUME_BACKING_FILE_SIZE=24G
Ian Wienand7d5be292015-08-10 13:39:17 +1000684
685
686Keystone
687~~~~~~~~
688
689Multi-Region Setup
690++++++++++++++++++
691
692We want to setup two devstack (RegionOne and RegionTwo) with shared
693keystone (same users and services) and horizon. Keystone and Horizon
694will be located in RegionOne. Full spec is available at:
695`<https://wiki.openstack.org/wiki/Heat/Blueprints/Multi_Region_Support_for_Heat>`__.
696
697In RegionOne:
698
699::
700
701 REGION_NAME=RegionOne
702
703In RegionTwo:
704
705::
henriquetrutaf2126222016-01-05 13:43:18 -0300706
Ian Wienand7d5be292015-08-10 13:39:17 +1000707 disable_service horizon
708 KEYSTONE_SERVICE_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE>
709 KEYSTONE_AUTH_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE>
710 REGION_NAME=RegionTwo
zhiyuan_cai6f1781f2016-04-07 18:36:46 +0800711 KEYSTONE_REGION_NAME=RegionOne
712
713In the devstack for RegionOne, we set REGION_NAME as RegionOne, so region of
714the services started in this devstack are registered as RegionOne. In devstack
715for RegionTwo, similarly, we set REGION_NAME as RegionTwo since we want
716services started in this devstack to be registered in RegionTwo. But Keystone
717service is started and registered in RegionOne, not RegionTwo, so we use
718KEYSTONE_REGION_NAME to specify the region of Keystone service.
719KEYSTONE_REGION_NAME has a default value the same as REGION_NAME thus we omit
720it in the configuration of RegionOne.
henriquetrutaf2126222016-01-05 13:43:18 -0300721
722Disabling Identity API v2
723+++++++++++++++++++++++++
724
725The Identity API v2 is deprecated as of Mitaka and it is recommended to only
726use the v3 API. It is possible to setup keystone without v2 API, by doing:
727
728::
729
730 ENABLE_IDENTITY_V2=False
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000731
732Exercises
733~~~~~~~~~
734
735``exerciserc`` is used to configure settings for the exercise scripts.
736The values shown below are the default values. These can all be
737overridden by setting them in the ``localrc`` section.
738
739* Max time to wait while vm goes from build to active state
740
741 ::
742
743 ACTIVE_TIMEOUT==30
744
745* Max time to wait for proper IP association and dis-association.
746
747 ::
748
749 ASSOCIATE_TIMEOUT=15
750
751* Max time till the vm is bootable
752
753 ::
754
755 BOOT_TIMEOUT=30
756
757* Max time from run instance command until it is running
758
759 ::
760
761 RUNNING_TIMEOUT=$(($BOOT_TIMEOUT + $ACTIVE_TIMEOUT))
762
763* Max time to wait for a vm to terminate
764
765 ::
766
767 TERMINATE_TIMEOUT=30
Markus Zoeller14728c72017-05-29 15:39:21 +0200768
769
770.. _arch-configuration:
771
772Architectures
773-------------
774
775The upstream CI runs exclusively on nodes with x86 architectures, but
776OpenStack supports even more architectures. Some of them need to configure
777Devstack in a certain way.
778
779KVM on s390x (IBM z Systems)
780~~~~~~~~~~~~~~~~~~~~~~~~~~~~
781
782KVM on s390x (IBM z Systems) is supported since the *Kilo* release. For
783an all-in-one setup, these minimal settings in the ``local.conf`` file
784are needed::
785
786 [[local|localrc]]
787 ADMIN_PASSWORD=secret
788 DATABASE_PASSWORD=$ADMIN_PASSWORD
789 RABBIT_PASSWORD=$ADMIN_PASSWORD
790 SERVICE_PASSWORD=$ADMIN_PASSWORD
791
792 DOWNLOAD_DEFAULT_IMAGES=False
793 IMAGE_URLS="https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-s390x-disk1.img"
794
Andreas Scheuring941940a2017-09-13 00:24:02 +0200795 # Provide a custom etcd3 binary download URL and ints sha256.
796 # The binary must be located under '/<etcd version>/etcd-<etcd-version>-linux-s390x.tar.gz'
797 # on this URL.
798 # Build instructions for etcd3: https://github.com/linux-on-ibm-z/docs/wiki/Building-etcd
799 ETCD_DOWNLOAD_URL=<your-etcd-download-url>
800 ETCD_SHA256=<your-etcd3-sha256>
801
Markus Zoeller14728c72017-05-29 15:39:21 +0200802 enable_service n-sproxy
803 disable_service n-novnc
Markus Zoeller14728c72017-05-29 15:39:21 +0200804
805 [[post-config|$NOVA_CONF]]
806
807 [serial_console]
808 base_url=ws://$HOST_IP:6083/ # optional
809
810Reasoning:
811
812* The default image of Devstack is x86 only, so we deactivate the download
813 with ``DOWNLOAD_DEFAULT_IMAGES``. The referenced guest image
814 in the code above (``IMAGE_URLS``) serves as an example. The list of
815 possible s390x guest images is not limited to that.
816
817* This platform doesn't support a graphical console like VNC or SPICE.
818 The technical reason is the missing framebuffer on the platform. This
819 means we rely on the substitute feature *serial console* which needs the
820 proxy service ``n-sproxy``. We also disable VNC's proxy ``n-novnc`` for
821 that reason . The configuration in the ``post-config`` section is only
822 needed if you want to use the *serial console* outside of the all-in-one
823 setup.
824
Andreas Scheuring941940a2017-09-13 00:24:02 +0200825* A link to an etcd3 binary and its sha256 needs to be provided as the
826 binary for s390x is not hosted on github like it is for other
827 architectures. For more details see
828 https://bugs.launchpad.net/devstack/+bug/1693192. Etcd3 can easily be
829 built along https://github.com/linux-on-ibm-z/docs/wiki/Building-etcd.
Markus Zoeller14728c72017-05-29 15:39:21 +0200830
831.. note:: To run *Tempest* against this *Devstack* all-in-one, you'll need
832 to use a guest image which is smaller than 1GB when uncompressed.
833 The example image from above is bigger than that!