blob: 919a0533171547889fa8f0e727cca03a7ee934da [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
Sean M. Collins09e550c2014-10-21 11:40:08 -040044
45The file is processed strictly in sequence; meta-sections may be
46specified more than once but if any settings are duplicated the last to
47appear in the file will be used.
48
49::
50
51 [[post-config|$NOVA_CONF]]
52 [DEFAULT]
53 use_syslog = True
54
55 [osapi_v3]
56 enabled = False
57
58A specific meta-section ``local|localrc`` is used to provide a default
59``localrc`` file (actually ``.localrc.auto``). This allows all custom
60settings for DevStack to be contained in a single file. If ``localrc``
Ian Wienand7cd16ce2016-04-08 09:40:56 +100061exists it will be used instead to preserve backward-compatibility.
Sean M. Collins09e550c2014-10-21 11:40:08 -040062
63::
64
65 [[local|localrc]]
Kevin Benton4bfbc292016-11-15 17:26:05 -080066 IPV4_ADDRS_SAFE_TO_USE=10.254.1.0/24
Sean M. Collins09e550c2014-10-21 11:40:08 -040067 ADMIN_PASSWORD=speciale
68 LOGFILE=$DEST/logs/stack.sh.log
69
70Note that ``Q_PLUGIN_CONF_FILE`` is unique in that it is assumed to
71*NOT* start with a ``/`` (slash) character. A slash will need to be
72added:
73
74::
75
76 [[post-config|/$Q_PLUGIN_CONF_FILE]]
77
78Also note that the ``localrc`` section is sourced as a shell script
Juan Antonio Osorio Roblesfe6dccb2014-11-28 13:12:14 +020079fragment and MUST conform to the shell requirements, specifically no
Sean M. Collins09e550c2014-10-21 11:40:08 -040080whitespace around ``=`` (equals).
81
Ian Wienand7cd16ce2016-04-08 09:40:56 +100082openrc
83======
84
85``openrc`` configures login credentials suitable for use with the
86OpenStack command-line tools. ``openrc`` sources ``stackrc`` at the
87beginning (which in turn sources the ``localrc`` section of
88``local.conf``) in order to pick up ``HOST_IP`` and/or ``SERVICE_HOST``
89to use in the endpoints. The values shown below are the default values.
90
91OS\_PROJECT\_NAME (OS\_TENANT\_NAME)
92 Keystone has
93 standardized the term *project* as the entity that owns resources. In
94 some places references still exist to the previous term
95 *tenant* for this use. Also, *project\_name* is preferred to
96 *project\_id*. OS\_TENANT\_NAME remains supported for compatibility
97 with older tools.
98
99 ::
100
101 OS_PROJECT_NAME=demo
102
103OS\_USERNAME
104 In addition to the owning entity (project), OpenStack calls the entity
105 performing the action *user*.
106
107 ::
108
109 OS_USERNAME=demo
110
111OS\_PASSWORD
112 Keystone's default authentication requires a password be provided.
113 The usual cautions about putting passwords in environment variables
114 apply, for most DevStack uses this may be an acceptable tradeoff.
115
116 ::
117
118 OS_PASSWORD=secret
119
120HOST\_IP, SERVICE\_HOST
121 Set API endpoint host using ``HOST_IP``. ``SERVICE_HOST`` may also
122 be used to specify the endpoint, which is convenient for some
123 ``local.conf`` configurations. Typically, ``HOST_IP`` is set in the
124 ``localrc`` section.
125
126 ::
127
128 HOST_IP=127.0.0.1
129 SERVICE_HOST=$HOST_IP
130
131OS\_AUTH\_URL
132 Authenticating against an OpenStack cloud using Keystone returns a
133 *Token* and *Service Catalog*. The catalog contains the endpoints
134 for all services the user/tenant has access to - including Nova,
135 Glance, Keystone and Swift.
136
137 ::
138
Le Houc09eaf82017-08-28 17:25:38 +0800139 OS_AUTH_URL=http://$SERVICE_HOST:5000/v3.0
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000140
141KEYSTONECLIENT\_DEBUG, NOVACLIENT\_DEBUG
142 Set command-line client log level to ``DEBUG``. These are commented
143 out by default.
144
145 ::
146
147 # export KEYSTONECLIENT_DEBUG=1
148 # export NOVACLIENT_DEBUG=1
149
150
151
James Polley5f2eb6d2015-03-30 17:36:26 +1100152.. _minimal-configuration:
153
Sean M. Collins09e550c2014-10-21 11:40:08 -0400154Minimal Configuration
Sean Dague07d7e5b2014-11-17 07:10:14 -0500155=====================
Sean M. Collins09e550c2014-10-21 11:40:08 -0400156
157While ``stack.sh`` is happy to run without a ``localrc`` section in
158``local.conf``, devlife is better when there are a few minimal variables
159set. This is an example of a minimal configuration that touches the
160values that most often need to be set.
161
162- no logging
163- pre-set the passwords to prevent interactive prompts
Kevin Benton4bfbc292016-11-15 17:26:05 -0800164- move network ranges away from the local network (``IPV4_ADDRS_SAFE_TO_USE``
165 and ``FLOATING_RANGE``, commented out below)
Sean M. Collins09e550c2014-10-21 11:40:08 -0400166- set the host IP if detection is unreliable (``HOST_IP``, commented
167 out below)
168
169::
170
171 [[local|localrc]]
Balagopal7ed812c2016-03-01 04:43:31 +0000172 ADMIN_PASSWORD=secret
Sean M. Collins09e550c2014-10-21 11:40:08 -0400173 DATABASE_PASSWORD=$ADMIN_PASSWORD
174 RABBIT_PASSWORD=$ADMIN_PASSWORD
175 SERVICE_PASSWORD=$ADMIN_PASSWORD
Kevin Benton4bfbc292016-11-15 17:26:05 -0800176 #IPV4_ADDRS_SAFE_TO_USE=172.31.1.0/24
Sean M. Collins09e550c2014-10-21 11:40:08 -0400177 #FLOATING_RANGE=192.168.20.0/25
178 #HOST_IP=10.3.4.5
179
180If the ``*_PASSWORD`` variables are not set here you will be prompted to
181enter values for them by ``stack.sh``.
182
183The network ranges must not overlap with any networks in use on the
184host. Overlap is not uncommon as RFC-1918 'private' ranges are commonly
185used for both the local networking and Nova's fixed and floating ranges.
186
187``HOST_IP`` is normally detected on the first run of ``stack.sh`` but
188often is indeterminate on later runs due to the IP being moved from an
Juan Antonio Osorio Roblesfe6dccb2014-11-28 13:12:14 +0200189Ethernet interface to a bridge on the host. Setting it here also makes it
Sean M. Collins09e550c2014-10-21 11:40:08 -0400190available for ``openrc`` to set ``OS_AUTH_URL``. ``HOST_IP`` is not set
191by default.
192
Brian Haley180f5eb2015-06-16 13:14:31 -0400193``HOST_IPV6`` is normally detected on the first run of ``stack.sh`` but
194will not be set if there is no IPv6 address on the default Ethernet interface.
195Setting it here also makes it available for ``openrc`` to set ``OS_AUTH_URL``.
196``HOST_IPV6`` is not set by default.
197
Markus Zoeller14728c72017-05-29 15:39:21 +0200198For architecture specific configurations which differ from the x86 default
199here, see `arch-configuration`_.
200
Ian Wienanda35391e2015-08-10 13:53:40 +1000201Historical Notes
202================
Ian Wienand7d5be292015-08-10 13:39:17 +1000203
Ian Wienanda35391e2015-08-10 13:53:40 +1000204Historically DevStack obtained all local configuration and
205customizations from a ``localrc`` file. In Oct 2013 the
206``local.conf`` configuration method was introduced (in `review 46768
207<https://review.openstack.org/#/c/46768/>`__) to simplify this
208process.
Ian Wienand7d5be292015-08-10 13:39:17 +1000209
Ian Wienand815db162015-08-06 10:25:45 +1000210Configuration Notes
211===================
212
213.. contents::
214 :local:
Sean M. Collins09e550c2014-10-21 11:40:08 -0400215
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000216Service Repos
217-------------
218
219The Git repositories used to check out the source for each service are
220controlled by a pair of variables set for each service. ``*_REPO``
221points to the repository and ``*_BRANCH`` selects which branch to
222check out. These may be overridden in ``local.conf`` to pull source
223from a different repo for testing, such as a Gerrit branch
224proposal. ``GIT_BASE`` points to the primary repository server.
225
226 ::
227
228 NOVA_REPO=$GIT_BASE/openstack/nova.git
229 NOVA_BRANCH=master
230
231To pull a branch directly from Gerrit, get the repo and branch from
232the Gerrit review page:
233
234 ::
235
236 git fetch https://review.openstack.org/p/openstack/nova refs/changes/50/5050/1 && git checkout FETCH_HEAD
237
238 The repo is the stanza following ``fetch`` and the branch is the
239 stanza following that:
240
241 ::
242
243 NOVA_REPO=https://review.openstack.org/p/openstack/nova
244 NOVA_BRANCH=refs/changes/50/5050/1
245
246
Sean Dague07d7e5b2014-11-17 07:10:14 -0500247Installation Directory
248----------------------
249
Ian Wienand815db162015-08-06 10:25:45 +1000250The DevStack install directory is set by the ``DEST`` variable. By
251default it is ``/opt/stack``.
252
253By setting it early in the ``localrc`` section you can reference it in
254later variables. It can be useful to set it even though it is not
255changed from the default value.
Sean M. Collins09e550c2014-10-21 11:40:08 -0400256
257 ::
258
259 DEST=/opt/stack
260
Ian Wienand815db162015-08-06 10:25:45 +1000261Logging
262-------
263
264Enable Logging
265~~~~~~~~~~~~~~
266
267By default ``stack.sh`` output is only written to the console where it
268runs. It can be sent to a file in addition to the console by setting
269``LOGFILE`` to the fully-qualified name of the destination log file. A
270timestamp will be appended to the given filename for each run of
271``stack.sh``.
272
273 ::
274
275 LOGFILE=$DEST/logs/stack.sh.log
276
277Old log files are cleaned automatically if ``LOGDAYS`` is set to the
278number of days of old log files to keep.
279
280 ::
281
282 LOGDAYS=1
283
Sean Dague8b8441f2017-05-02 06:14:11 -0400284Some coloring is used during the DevStack runs to make it easier to
285see what is going on. This can be disabled with::
Ian Wienand815db162015-08-06 10:25:45 +1000286
287 LOG_COLOR=False
288
289Logging the Service Output
290~~~~~~~~~~~~~~~~~~~~~~~~~~
291
Sean Dague8b8441f2017-05-02 06:14:11 -0400292By default, services run under ``systemd`` and are natively logging to
293the systemd journal.
Ian Wienand815db162015-08-06 10:25:45 +1000294
Sean Dague8b8441f2017-05-02 06:14:11 -0400295To query the logs use the ``journalctl`` command, such as::
Ian Wienand815db162015-08-06 10:25:45 +1000296
caowei32eccca2017-11-01 11:45:21 +0800297 sudo journalctl --unit devstack@*
Ian Wienand815db162015-08-06 10:25:45 +1000298
Sean Dague8b8441f2017-05-02 06:14:11 -0400299More examples can be found in :ref:`journalctl-examples`.
Ian Wienand7d5be292015-08-10 13:39:17 +1000300
Ian Wienanda35391e2015-08-10 13:53:40 +1000301Example Logging Configuration
302~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
303
304For example, non-interactive installs probably wish to save output to
305a file, keep service logs and disable color in the stored files.
306
307 ::
308
309 [[local|localrc]]
310 DEST=/opt/stack/
Ian Wienanda35391e2015-08-10 13:53:40 +1000311 LOGFILE=$LOGDIR/stack.sh.log
312 LOG_COLOR=False
313
Ian Wienand7d5be292015-08-10 13:39:17 +1000314Database Backend
315----------------
316
317Multiple database backends are available. The available databases are defined
318in the lib/databases directory.
Markus Zoellerc30657d2015-11-02 11:27:46 +0100319``mysql`` is the default database, choose a different one by putting the
320following in the ``localrc`` section:
Ian Wienand7d5be292015-08-10 13:39:17 +1000321
322 ::
323
324 disable_service mysql
325 enable_service postgresql
326
Markus Zoellerc30657d2015-11-02 11:27:46 +0100327``mysql`` is the default database.
Ian Wienand7d5be292015-08-10 13:39:17 +1000328
329RPC Backend
330-----------
331
332Support for a RabbitMQ RPC backend is included. Additional RPC
333backends may be available via external plugins. Enabling or disabling
334RabbitMQ is handled via the usual service functions and
335``ENABLED_SERVICES``.
336
337Example disabling RabbitMQ in ``local.conf``:
338
339::
Markus Zoellerc30657d2015-11-02 11:27:46 +0100340
Ian Wienand7d5be292015-08-10 13:39:17 +1000341 disable_service rabbit
342
343
344Apache Frontend
345---------------
346
347The Apache web server can be enabled for wsgi services that support
348being deployed under HTTPD + mod_wsgi. By default, services that
349recommend running under HTTPD + mod_wsgi are deployed under Apache. To
350use an alternative deployment strategy (e.g. eventlet) for services
351that support an alternative to HTTPD + mod_wsgi set
352``ENABLE_HTTPD_MOD_WSGI_SERVICES`` to ``False`` in your
353``local.conf``.
354
355Each service that can be run under HTTPD + mod_wsgi also has an
356override toggle available that can be set in your ``local.conf``.
357
358Keystone is run under Apache with ``mod_wsgi`` by default.
359
360Example (Keystone)
361
362::
363
364 KEYSTONE_USE_MOD_WSGI="True"
365
366Example (Nova):
367
368::
369
370 NOVA_USE_MOD_WSGI="True"
371
372Example (Swift):
373
374::
375
376 SWIFT_USE_MOD_WSGI="True"
377
Oleksii Chuprykova6928102015-06-11 08:56:58 -0400378Example (Heat):
379
380::
381
382 HEAT_USE_MOD_WSGI="True"
383
Ian Wienand7d5be292015-08-10 13:39:17 +1000384
Anton Arefiev651cb1a2015-09-01 10:55:20 +0300385Example (Cinder):
386
387::
388
389 CINDER_USE_MOD_WSGI="True"
390
Ian Wienand7d5be292015-08-10 13:39:17 +1000391
Sean Dague07d7e5b2014-11-17 07:10:14 -0500392Libraries from Git
393------------------
394
Ian Wienand815db162015-08-06 10:25:45 +1000395By default devstack installs OpenStack server components from git,
396however it installs client libraries from released versions on pypi.
397This is appropriate if you are working on server development, but if
398you want to see how an unreleased version of the client affects the
399system you can have devstack install it from upstream, or from local
400git trees by specifying it in ``LIBS_FROM_GIT``. Multiple libraries
401can be specified as a comma separated list.
Sean Dague07d7e5b2014-11-17 07:10:14 -0500402
403 ::
404
405 LIBS_FROM_GIT=python-keystoneclient,oslo.config
406
Marc Koderer46f8cb72016-05-13 09:08:16 +0200407Setting the variable to ``ALL`` will activate the download for all
408libraries.
409
Dean Troyer5686dbc2015-03-09 14:27:51 -0500410Virtual Environments
411--------------------
412
Ian Wienand815db162015-08-06 10:25:45 +1000413Enable the use of Python virtual environments by setting ``USE_VENV``
414to ``True``. This will enable the creation of venvs for each project
415that is defined in the ``PROJECT_VENV`` array.
Dean Troyer5686dbc2015-03-09 14:27:51 -0500416
Ian Wienand815db162015-08-06 10:25:45 +1000417Each entry in the ``PROJECT_VENV`` array contains the directory name
418of a venv to be used for the project. The array index is the project
419name. Multiple projects can use the same venv if desired.
Dean Troyer5686dbc2015-03-09 14:27:51 -0500420
421 ::
422
423 PROJECT_VENV["glance"]=${GLANCE_DIR}.venv
424
Ian Wienand815db162015-08-06 10:25:45 +1000425``ADDITIONAL_VENV_PACKAGES`` is a comma-separated list of additional
426packages to be installed into each venv. Often projects will not have
427certain packages listed in its ``requirements.txt`` file because they
428are 'optional' requirements, i.e. only needed for certain
429configurations. By default, the enabled databases will have their
430Python bindings added when they are enabled.
Dean Troyer5686dbc2015-03-09 14:27:51 -0500431
Ian Wienand815db162015-08-06 10:25:45 +1000432 ::
Sean Dague07d7e5b2014-11-17 07:10:14 -0500433
Ian Wienand815db162015-08-06 10:25:45 +1000434 ADDITIONAL_VENV_PACKAGES="python-foo, python-bar"
Sean M. Collins09e550c2014-10-21 11:40:08 -0400435
Sean M. Collins09e550c2014-10-21 11:40:08 -0400436
437A clean install every time
Sean Dague07d7e5b2014-11-17 07:10:14 -0500438--------------------------
439
Ian Wienand815db162015-08-06 10:25:45 +1000440By default ``stack.sh`` only clones the project repos if they do not
441exist in ``$DEST``. ``stack.sh`` will freshen each repo on each run if
442``RECLONE`` is set to ``yes``. This avoids having to manually remove
443repos in order to get the current branch from ``$GIT_BASE``.
Sean M. Collins09e550c2014-10-21 11:40:08 -0400444
445 ::
446
447 RECLONE=yes
448
Chris Dentebdd9ac2015-03-04 12:35:14 +0000449Upgrade packages installed by pip
450---------------------------------
451
Ian Wienand815db162015-08-06 10:25:45 +1000452By default ``stack.sh`` only installs Python packages if no version is
453currently installed or the current version does not match a specified
454requirement. If ``PIP_UPGRADE`` is set to ``True`` then existing
455required Python packages will be upgraded to the most recent version
456that matches requirements.
Chris Dentebdd9ac2015-03-04 12:35:14 +0000457
458 ::
459
460 PIP_UPGRADE=True
461
John Huaa4693b52015-08-06 13:53:35 +0100462Guest Images
463------------
464
465Images provided in URLS via the comma-separated ``IMAGE_URLS``
466variable will be downloaded and uploaded to glance by DevStack.
467
468Default guest-images are predefined for each type of hypervisor and
469their testing-requirements in ``stack.sh``. Setting
470``DOWNLOAD_DEFAULT_IMAGES=False`` will prevent DevStack downloading
471these default images; in that case, you will want to populate
472``IMAGE_URLS`` with sufficient images to satisfy testing-requirements.
473
474 ::
475
476 DOWNLOAD_DEFAULT_IMAGES=False
477 IMAGE_URLS="http://foo.bar.com/image.qcow,"
478 IMAGE_URLS+="http://foo.bar.com/image2.qcow"
479
Rafael Folcof0131e12015-09-23 12:55:02 -0500480
481Instance Type
482-------------
483
484``DEFAULT_INSTANCE_TYPE`` can be used to configure the default instance
485type. When this parameter is not specified, Devstack creates additional
486micro & nano flavors for really small instances to run Tempest tests.
487
488For guests with larger memory requirements, ``DEFAULT_INSTANCE_TYPE``
489should be specified in the configuration file so Tempest selects the
490default flavors instead.
491
492KVM on Power with QEMU 2.4 requires 512 MB to load the firmware -
493`QEMU 2.4 - PowerPC <http://wiki.qemu.org/ChangeLog/2.4>`__ so users
494running instances on ppc64/ppc64le can choose one of the default
495created flavors as follows:
496
497 ::
498
499 DEFAULT_INSTANCE_TYPE=m1.tiny
500
501
John Davidge21529a52014-06-30 09:55:11 -0400502IP Version
Brian Haley180f5eb2015-06-16 13:14:31 -0400503----------
504
Clay Gerrard148d0e62016-09-01 02:38:06 -0700505``IP_VERSION`` can be used to configure Neutron to create either an
506IPv4, IPv6, or dual-stack self-service project data-network by with
Sean Daguedb48db12016-04-06 08:09:31 -0400507either ``IP_VERSION=4``, ``IP_VERSION=6``, or ``IP_VERSION=4+6``
Clay Gerrard148d0e62016-09-01 02:38:06 -0700508respectively.
John Davidge21529a52014-06-30 09:55:11 -0400509
510 ::
511
Clay Gerrard148d0e62016-09-01 02:38:06 -0700512 IP_VERSION=4+6
John Davidge21529a52014-06-30 09:55:11 -0400513
Ian Wienand815db162015-08-06 10:25:45 +1000514The following optional variables can be used to alter the default IPv6
515behavior:
John Davidge21529a52014-06-30 09:55:11 -0400516
517 ::
518
519 IPV6_RA_MODE=slaac
520 IPV6_ADDRESS_MODE=slaac
Kevin Benton4bfbc292016-11-15 17:26:05 -0800521 IPV6_ADDRS_SAFE_TO_USE=fd$IPV6_GLOBAL_ID::/56
John Davidge21529a52014-06-30 09:55:11 -0400522 IPV6_PRIVATE_NETWORK_GATEWAY=fd$IPV6_GLOBAL_ID::1
523
Kevin Benton4bfbc292016-11-15 17:26:05 -0800524*Note*: ``IPV6_ADDRS_SAFE_TO_USE`` and ``IPV6_PRIVATE_NETWORK_GATEWAY``
525can be configured with any valid IPv6 prefix. The default values make
526use of an auto-generated ``IPV6_GLOBAL_ID`` to comply with RFC4193.
Brian Haley180f5eb2015-06-16 13:14:31 -0400527
Ian Wienand815db162015-08-06 10:25:45 +1000528Service Version
529~~~~~~~~~~~~~~~
530
531DevStack can enable service operation over either IPv4 or IPv6 by
532setting ``SERVICE_IP_VERSION`` to either ``SERVICE_IP_VERSION=4`` or
533``SERVICE_IP_VERSION=6`` respectively.
534
535When set to ``4`` devstack services will open listen sockets on
536``0.0.0.0`` and service endpoints will be registered using ``HOST_IP``
537as the address.
538
539When set to ``6`` devstack services will open listen sockets on ``::``
540and service endpoints will be registered using ``HOST_IPV6`` as the
541address.
542
543The default value for this setting is ``4``. Dual-mode support, for
544example ``4+6`` is not currently supported. ``HOST_IPV6`` can
545optionally be used to alter the default IPv6 address
Brian Haley180f5eb2015-06-16 13:14:31 -0400546
547 ::
548
549 HOST_IPV6=${some_local_ipv6_address}
John Davidge21529a52014-06-30 09:55:11 -0400550
Ian Wienand7d5be292015-08-10 13:39:17 +1000551Multi-node setup
552~~~~~~~~~~~~~~~~
Sean M. Collins09e550c2014-10-21 11:40:08 -0400553
Ian Wienand7d5be292015-08-10 13:39:17 +1000554See the :doc:`multi-node lab guide<guides/multinode-lab>`
Sean M. Collins09e550c2014-10-21 11:40:08 -0400555
Ian Wienand7d5be292015-08-10 13:39:17 +1000556Projects
557--------
Sean M. Collins09e550c2014-10-21 11:40:08 -0400558
Ian Wienand7d5be292015-08-10 13:39:17 +1000559Neutron
560~~~~~~~
Sean M. Collins09e550c2014-10-21 11:40:08 -0400561
Ian Wienand7d5be292015-08-10 13:39:17 +1000562See the :doc:`neutron configuration guide<guides/neutron>` for
563details on configuration of Neutron
Sean M. Collins09e550c2014-10-21 11:40:08 -0400564
Sean M. Collins09e550c2014-10-21 11:40:08 -0400565
Ian Wienand7d5be292015-08-10 13:39:17 +1000566Swift
567~~~~~
568
569Swift is disabled by default. When enabled, it is configured with
570only one replica to avoid being IO/memory intensive on a small
Sean Dague8b8441f2017-05-02 06:14:11 -0400571VM.
Ian Wienand7d5be292015-08-10 13:39:17 +1000572
Markus Zoellerc30657d2015-11-02 11:27:46 +0100573If you would like to enable Swift you can add this to your ``localrc``
Ian Wienand7d5be292015-08-10 13:39:17 +1000574section:
575
576::
577
578 enable_service s-proxy s-object s-container s-account
579
580If you want a minimal Swift install with only Swift and Keystone you
Markus Zoellerc30657d2015-11-02 11:27:46 +0100581can have this instead in your ``localrc`` section:
Ian Wienand7d5be292015-08-10 13:39:17 +1000582
583::
584
585 disable_all_services
586 enable_service key mysql s-proxy s-object s-container s-account
587
588If you only want to do some testing of a real normal swift cluster
589with multiple replicas you can do so by customizing the variable
Markus Zoellerc30657d2015-11-02 11:27:46 +0100590``SWIFT_REPLICAS`` in your ``localrc`` section (usually to 3).
Ian Wienand7d5be292015-08-10 13:39:17 +1000591
Christian Schwede91d22452016-04-12 10:53:46 +0200592You can manually override the ring building to use specific storage
593nodes, for example when you want to test a multinode environment. In
594this case you have to set a space-separated list of IPs in
595``SWIFT_STORAGE_IPS`` in your ``localrc`` section that should be used
596as Swift storage nodes.
597Please note that this does not create a multinode setup, it is only
598used when adding nodes to the Swift rings.
599
600::
601
602 SWIFT_STORAGE_IPS="192.168.1.10 192.168.1.11 192.168.1.12"
603
Ian Wienand7d5be292015-08-10 13:39:17 +1000604Swift S3
605++++++++
606
Markus Zoellerc30657d2015-11-02 11:27:46 +0100607If you are enabling ``swift3`` in ``ENABLED_SERVICES`` DevStack will
Ian Wienand7d5be292015-08-10 13:39:17 +1000608install the swift3 middleware emulation. Swift will be configured to
609act as a S3 endpoint for Keystone so effectively replacing the
Markus Zoellerc30657d2015-11-02 11:27:46 +0100610``nova-objectstore``.
Ian Wienand7d5be292015-08-10 13:39:17 +1000611
Sean Dague8b8441f2017-05-02 06:14:11 -0400612Only Swift proxy server is launched in the systemd system all other
Markus Zoellerc30657d2015-11-02 11:27:46 +0100613services are started in background and managed by ``swift-init`` tool.
Ian Wienand7d5be292015-08-10 13:39:17 +1000614
Ian Wienand7d5be292015-08-10 13:39:17 +1000615Tempest
616~~~~~~~
617
618If tempest has been successfully configured, a basic set of smoke
619tests can be run as follows:
620
621::
622
623 $ cd /opt/stack/tempest
624 $ tox -efull tempest.scenario.test_network_basic_ops
625
626By default tempest is downloaded and the config file is generated, but the
627tempest package is not installed in the system's global site-packages (the
628package install includes installing dependences). So tempest won't run
629outside of tox. If you would like to install it add the following to your
630``localrc`` section:
631
632::
633
634 INSTALL_TEMPEST=True
635
636
637Xenserver
638~~~~~~~~~
639
640If you would like to use Xenserver as the hypervisor, please refer to
Markus Zoellerc30657d2015-11-02 11:27:46 +0100641the instructions in ``./tools/xen/README.md``.
Ian Wienand7d5be292015-08-10 13:39:17 +1000642
643Cells
644~~~~~
645
chengebj523878930122018-01-18 15:53:27 +0800646`Cells <https://wiki.openstack.org/wiki/Blueprint-nova-compute-cells>`__ is
Ian Wienand7d5be292015-08-10 13:39:17 +1000647an alternative scaling option. To setup a cells environment add the
Markus Zoellerc30657d2015-11-02 11:27:46 +0100648following to your ``localrc`` section:
Ian Wienand7d5be292015-08-10 13:39:17 +1000649
650::
651
652 enable_service n-cell
653
654Be aware that there are some features currently missing in cells, one
655notable one being security groups. The exercises have been patched to
656disable functionality not supported by cells.
657
658Cinder
659~~~~~~
660
661The logical volume group used to hold the Cinder-managed volumes is
Jordan Pittierf5069f32016-11-08 12:10:12 +0100662set by ``VOLUME_GROUP_NAME``, the logical volume name prefix is set with
Ian Wienand7d5be292015-08-10 13:39:17 +1000663``VOLUME_NAME_PREFIX`` and the size of the volume backing file is set
664with ``VOLUME_BACKING_FILE_SIZE``.
665
666 ::
667
Jordan Pittierf5069f32016-11-08 12:10:12 +0100668 VOLUME_GROUP_NAME="stack-volumes"
Ian Wienand7d5be292015-08-10 13:39:17 +1000669 VOLUME_NAME_PREFIX="volume-"
670 VOLUME_BACKING_FILE_SIZE=10250M
671
672
673Keystone
674~~~~~~~~
675
676Multi-Region Setup
677++++++++++++++++++
678
679We want to setup two devstack (RegionOne and RegionTwo) with shared
680keystone (same users and services) and horizon. Keystone and Horizon
681will be located in RegionOne. Full spec is available at:
682`<https://wiki.openstack.org/wiki/Heat/Blueprints/Multi_Region_Support_for_Heat>`__.
683
684In RegionOne:
685
686::
687
688 REGION_NAME=RegionOne
689
690In RegionTwo:
691
692::
henriquetrutaf2126222016-01-05 13:43:18 -0300693
Ian Wienand7d5be292015-08-10 13:39:17 +1000694 disable_service horizon
695 KEYSTONE_SERVICE_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE>
696 KEYSTONE_AUTH_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE>
697 REGION_NAME=RegionTwo
zhiyuan_cai6f1781f2016-04-07 18:36:46 +0800698 KEYSTONE_REGION_NAME=RegionOne
699
700In the devstack for RegionOne, we set REGION_NAME as RegionOne, so region of
701the services started in this devstack are registered as RegionOne. In devstack
702for RegionTwo, similarly, we set REGION_NAME as RegionTwo since we want
703services started in this devstack to be registered in RegionTwo. But Keystone
704service is started and registered in RegionOne, not RegionTwo, so we use
705KEYSTONE_REGION_NAME to specify the region of Keystone service.
706KEYSTONE_REGION_NAME has a default value the same as REGION_NAME thus we omit
707it in the configuration of RegionOne.
henriquetrutaf2126222016-01-05 13:43:18 -0300708
709Disabling Identity API v2
710+++++++++++++++++++++++++
711
712The Identity API v2 is deprecated as of Mitaka and it is recommended to only
713use the v3 API. It is possible to setup keystone without v2 API, by doing:
714
715::
716
717 ENABLE_IDENTITY_V2=False
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000718
719Exercises
720~~~~~~~~~
721
722``exerciserc`` is used to configure settings for the exercise scripts.
723The values shown below are the default values. These can all be
724overridden by setting them in the ``localrc`` section.
725
726* Max time to wait while vm goes from build to active state
727
728 ::
729
730 ACTIVE_TIMEOUT==30
731
732* Max time to wait for proper IP association and dis-association.
733
734 ::
735
736 ASSOCIATE_TIMEOUT=15
737
738* Max time till the vm is bootable
739
740 ::
741
742 BOOT_TIMEOUT=30
743
744* Max time from run instance command until it is running
745
746 ::
747
748 RUNNING_TIMEOUT=$(($BOOT_TIMEOUT + $ACTIVE_TIMEOUT))
749
750* Max time to wait for a vm to terminate
751
752 ::
753
754 TERMINATE_TIMEOUT=30
Markus Zoeller14728c72017-05-29 15:39:21 +0200755
756
757.. _arch-configuration:
758
759Architectures
760-------------
761
762The upstream CI runs exclusively on nodes with x86 architectures, but
763OpenStack supports even more architectures. Some of them need to configure
764Devstack in a certain way.
765
766KVM on s390x (IBM z Systems)
767~~~~~~~~~~~~~~~~~~~~~~~~~~~~
768
769KVM on s390x (IBM z Systems) is supported since the *Kilo* release. For
770an all-in-one setup, these minimal settings in the ``local.conf`` file
771are needed::
772
773 [[local|localrc]]
774 ADMIN_PASSWORD=secret
775 DATABASE_PASSWORD=$ADMIN_PASSWORD
776 RABBIT_PASSWORD=$ADMIN_PASSWORD
777 SERVICE_PASSWORD=$ADMIN_PASSWORD
778
779 DOWNLOAD_DEFAULT_IMAGES=False
780 IMAGE_URLS="https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-s390x-disk1.img"
781
Andreas Scheuring941940a2017-09-13 00:24:02 +0200782 # Provide a custom etcd3 binary download URL and ints sha256.
783 # The binary must be located under '/<etcd version>/etcd-<etcd-version>-linux-s390x.tar.gz'
784 # on this URL.
785 # Build instructions for etcd3: https://github.com/linux-on-ibm-z/docs/wiki/Building-etcd
786 ETCD_DOWNLOAD_URL=<your-etcd-download-url>
787 ETCD_SHA256=<your-etcd3-sha256>
788
Markus Zoeller14728c72017-05-29 15:39:21 +0200789 enable_service n-sproxy
790 disable_service n-novnc
Markus Zoeller14728c72017-05-29 15:39:21 +0200791
792 [[post-config|$NOVA_CONF]]
793
794 [serial_console]
795 base_url=ws://$HOST_IP:6083/ # optional
796
797Reasoning:
798
799* The default image of Devstack is x86 only, so we deactivate the download
800 with ``DOWNLOAD_DEFAULT_IMAGES``. The referenced guest image
801 in the code above (``IMAGE_URLS``) serves as an example. The list of
802 possible s390x guest images is not limited to that.
803
804* This platform doesn't support a graphical console like VNC or SPICE.
805 The technical reason is the missing framebuffer on the platform. This
806 means we rely on the substitute feature *serial console* which needs the
807 proxy service ``n-sproxy``. We also disable VNC's proxy ``n-novnc`` for
808 that reason . The configuration in the ``post-config`` section is only
809 needed if you want to use the *serial console* outside of the all-in-one
810 setup.
811
Andreas Scheuring941940a2017-09-13 00:24:02 +0200812* A link to an etcd3 binary and its sha256 needs to be provided as the
813 binary for s390x is not hosted on github like it is for other
814 architectures. For more details see
815 https://bugs.launchpad.net/devstack/+bug/1693192. Etcd3 can easily be
816 built along https://github.com/linux-on-ibm-z/docs/wiki/Building-etcd.
Markus Zoeller14728c72017-05-29 15:39:21 +0200817
818.. note:: To run *Tempest* against this *Devstack* all-in-one, you'll need
819 to use a guest image which is smaller than 1GB when uncompressed.
820 The example image from above is bigger than that!