blob: d0f2b02419c09380f041c0c4e8a7e5843dda44c7 [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
Abhishek Kekanef8dbfd32020-07-06 18:42:30 +0000140 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
Matt Riedemann9b6d2f22019-06-18 10:43:16 -0400208<https://review.opendev.org/#/c/46768/>`__) to simplify this
Ian Wienanda35391e2015-08-10 13:53:40 +1000209process.
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
Sean McGinnisf7302e12019-06-19 11:49:40 -0500227::
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000228
Sean McGinnisf7302e12019-06-19 11:49:40 -0500229 NOVA_REPO=$GIT_BASE/openstack/nova.git
230 NOVA_BRANCH=master
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000231
232To pull a branch directly from Gerrit, get the repo and branch from
Sean McGinnisf7302e12019-06-19 11:49:40 -0500233the Gerrit review page::
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000234
Matt Riedemann9b6d2f22019-06-18 10:43:16 -0400235 git fetch https://review.opendev.org/openstack/nova \
Sean McGinnisf7302e12019-06-19 11:49:40 -0500236 refs/changes/50/5050/1 && git checkout FETCH_HEAD
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000237
Sean McGinnisf7302e12019-06-19 11:49:40 -0500238The repo is the stanza following ``fetch`` and the branch is the
239stanza following that::
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000240
Matt Riedemann9b6d2f22019-06-18 10:43:16 -0400241 NOVA_REPO=https://review.opendev.org/openstack/nova
Sean McGinnisf7302e12019-06-19 11:49:40 -0500242 NOVA_BRANCH=refs/changes/50/5050/1
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000243
244
Sean Dague07d7e5b2014-11-17 07:10:14 -0500245Installation Directory
246----------------------
247
Ian Wienand815db162015-08-06 10:25:45 +1000248The DevStack install directory is set by the ``DEST`` variable. By
249default it is ``/opt/stack``.
250
251By setting it early in the ``localrc`` section you can reference it in
252later variables. It can be useful to set it even though it is not
253changed from the default value.
Sean M. Collins09e550c2014-10-21 11:40:08 -0400254
Sean McGinnisf7302e12019-06-19 11:49:40 -0500255::
Sean M. Collins09e550c2014-10-21 11:40:08 -0400256
Sean McGinnisf7302e12019-06-19 11:49:40 -0500257 DEST=/opt/stack
Sean M. Collins09e550c2014-10-21 11:40:08 -0400258
Ian Wienand815db162015-08-06 10:25:45 +1000259Logging
260-------
261
Andreas Jaeger8dd89e52019-08-11 16:00:12 +0200262.. _enable_logging:
263
Ian Wienand815db162015-08-06 10:25:45 +1000264Enable 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
Sean McGinnisf7302e12019-06-19 11:49:40 -0500273::
Ian Wienand815db162015-08-06 10:25:45 +1000274
Sean McGinnisf7302e12019-06-19 11:49:40 -0500275 LOGFILE=$DEST/logs/stack.sh.log
Ian Wienand815db162015-08-06 10:25:45 +1000276
277Old log files are cleaned automatically if ``LOGDAYS`` is set to the
278number of days of old log files to keep.
279
Sean McGinnisf7302e12019-06-19 11:49:40 -0500280::
Ian Wienand815db162015-08-06 10:25:45 +1000281
Zhou Yanbing44234502022-04-21 15:00:41 +0800282 LOGDAYS=2
Ian Wienand815db162015-08-06 10:25:45 +1000283
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
Sean McGinnisf7302e12019-06-19 11:49:40 -0500287 LOG_COLOR=False
Ian Wienand815db162015-08-06 10:25:45 +1000288
Ian Wienand83ecb972018-02-06 10:03:34 +1100289When using the logfile, by default logs are sent to the console and
290the file. You can set ``VERBOSE`` to ``false`` if you only wish the
291logs to be sent to the file (this may avoid having double-logging in
292some cases where you are capturing the script output and the log
293files). If ``VERBOSE`` is ``true`` you can additionally set
294``VERBOSE_NO_TIMESTAMP`` to avoid timestamps being added to each
295output line sent to the console. This can be useful in some
296situations where the console output is being captured by a runner or
297framework (e.g. Ansible) that adds its own timestamps. Note that the
298log lines sent to the ``LOGFILE`` will still be prefixed with a
299timestamp.
300
Ian Wienand815db162015-08-06 10:25:45 +1000301Logging the Service Output
302~~~~~~~~~~~~~~~~~~~~~~~~~~
303
Sean Dague8b8441f2017-05-02 06:14:11 -0400304By default, services run under ``systemd`` and are natively logging to
305the systemd journal.
Ian Wienand815db162015-08-06 10:25:45 +1000306
Sean Dague8b8441f2017-05-02 06:14:11 -0400307To query the logs use the ``journalctl`` command, such as::
Ian Wienand815db162015-08-06 10:25:45 +1000308
caowei32eccca2017-11-01 11:45:21 +0800309 sudo journalctl --unit devstack@*
Ian Wienand815db162015-08-06 10:25:45 +1000310
Sean Dague8b8441f2017-05-02 06:14:11 -0400311More examples can be found in :ref:`journalctl-examples`.
Ian Wienand7d5be292015-08-10 13:39:17 +1000312
Ian Wienanda35391e2015-08-10 13:53:40 +1000313Example Logging Configuration
314~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
315
316For example, non-interactive installs probably wish to save output to
317a file, keep service logs and disable color in the stored files.
318
Sean McGinnisf7302e12019-06-19 11:49:40 -0500319::
Ian Wienanda35391e2015-08-10 13:53:40 +1000320
Sean McGinnisf7302e12019-06-19 11:49:40 -0500321 [[local|localrc]]
322 DEST=/opt/stack/
323 LOGFILE=$LOGDIR/stack.sh.log
324 LOG_COLOR=False
Ian Wienanda35391e2015-08-10 13:53:40 +1000325
Ian Wienand7d5be292015-08-10 13:39:17 +1000326Database Backend
327----------------
328
Matt Riedemannb14665f2019-10-17 19:34:05 +0000329Multiple database backends are available. The available databases are defined
330in the lib/databases directory.
331``mysql`` is the default database, choose a different one by putting the
332following in the ``localrc`` section::
Ian Wienand7d5be292015-08-10 13:39:17 +1000333
Sean McGinnisf7302e12019-06-19 11:49:40 -0500334 disable_service mysql
Matt Riedemannb14665f2019-10-17 19:34:05 +0000335 enable_service postgresql
336
337``mysql`` is the default database.
Ian Wienand7d5be292015-08-10 13:39:17 +1000338
339RPC Backend
340-----------
341
Matt Riedemannb14665f2019-10-17 19:34:05 +0000342Support for a RabbitMQ RPC backend is included. Additional RPC
343backends may be available via external plugins. Enabling or disabling
344RabbitMQ is handled via the usual service functions and
345``ENABLED_SERVICES``.
346
347Example disabling RabbitMQ in ``local.conf``::
Ian Wienand7d5be292015-08-10 13:39:17 +1000348
Sean McGinnisf7302e12019-06-19 11:49:40 -0500349 disable_service rabbit
Ian Wienand7d5be292015-08-10 13:39:17 +1000350
Matt Riedemannb14665f2019-10-17 19:34:05 +0000351
Ian Wienand7d5be292015-08-10 13:39:17 +1000352Apache Frontend
353---------------
354
355The Apache web server can be enabled for wsgi services that support
356being deployed under HTTPD + mod_wsgi. By default, services that
357recommend running under HTTPD + mod_wsgi are deployed under Apache. To
358use an alternative deployment strategy (e.g. eventlet) for services
359that support an alternative to HTTPD + mod_wsgi set
360``ENABLE_HTTPD_MOD_WSGI_SERVICES`` to ``False`` in your
361``local.conf``.
362
363Each service that can be run under HTTPD + mod_wsgi also has an
364override toggle available that can be set in your ``local.conf``.
365
366Keystone is run under Apache with ``mod_wsgi`` by default.
367
Sean McGinnisf7302e12019-06-19 11:49:40 -0500368Example (Keystone)::
Ian Wienand7d5be292015-08-10 13:39:17 +1000369
370 KEYSTONE_USE_MOD_WSGI="True"
371
Sean McGinnisf7302e12019-06-19 11:49:40 -0500372Example (Nova)::
Ian Wienand7d5be292015-08-10 13:39:17 +1000373
374 NOVA_USE_MOD_WSGI="True"
375
Sean McGinnisf7302e12019-06-19 11:49:40 -0500376Example (Swift)::
Ian Wienand7d5be292015-08-10 13:39:17 +1000377
378 SWIFT_USE_MOD_WSGI="True"
379
Sean McGinnisf7302e12019-06-19 11:49:40 -0500380Example (Heat)::
Oleksii Chuprykova6928102015-06-11 08:56:58 -0400381
382 HEAT_USE_MOD_WSGI="True"
383
Sean McGinnisf7302e12019-06-19 11:49:40 -0500384Example (Cinder)::
Anton Arefiev651cb1a2015-09-01 10:55:20 +0300385
386 CINDER_USE_MOD_WSGI="True"
387
Ian Wienand7d5be292015-08-10 13:39:17 +1000388
Sean Dague07d7e5b2014-11-17 07:10:14 -0500389Libraries from Git
390------------------
391
Ian Wienand815db162015-08-06 10:25:45 +1000392By default devstack installs OpenStack server components from git,
393however it installs client libraries from released versions on pypi.
394This is appropriate if you are working on server development, but if
395you want to see how an unreleased version of the client affects the
396system you can have devstack install it from upstream, or from local
397git trees by specifying it in ``LIBS_FROM_GIT``. Multiple libraries
398can be specified as a comma separated list.
Sean Dague07d7e5b2014-11-17 07:10:14 -0500399
Sean McGinnisf7302e12019-06-19 11:49:40 -0500400::
Sean Dague07d7e5b2014-11-17 07:10:14 -0500401
Sean McGinnisf7302e12019-06-19 11:49:40 -0500402 LIBS_FROM_GIT=python-keystoneclient,oslo.config
Sean Dague07d7e5b2014-11-17 07:10:14 -0500403
Marc Koderer46f8cb72016-05-13 09:08:16 +0200404Setting the variable to ``ALL`` will activate the download for all
405libraries.
406
Dean Troyer5686dbc2015-03-09 14:27:51 -0500407Virtual Environments
408--------------------
409
Ian Wienand815db162015-08-06 10:25:45 +1000410Enable the use of Python virtual environments by setting ``USE_VENV``
411to ``True``. This will enable the creation of venvs for each project
412that is defined in the ``PROJECT_VENV`` array.
Dean Troyer5686dbc2015-03-09 14:27:51 -0500413
Ian Wienand815db162015-08-06 10:25:45 +1000414Each entry in the ``PROJECT_VENV`` array contains the directory name
415of a venv to be used for the project. The array index is the project
416name. Multiple projects can use the same venv if desired.
Dean Troyer5686dbc2015-03-09 14:27:51 -0500417
Sean McGinnisf7302e12019-06-19 11:49:40 -0500418::
Dean Troyer5686dbc2015-03-09 14:27:51 -0500419
Sean McGinnisf7302e12019-06-19 11:49:40 -0500420 PROJECT_VENV["glance"]=${GLANCE_DIR}.venv
Dean Troyer5686dbc2015-03-09 14:27:51 -0500421
Ian Wienand815db162015-08-06 10:25:45 +1000422``ADDITIONAL_VENV_PACKAGES`` is a comma-separated list of additional
423packages to be installed into each venv. Often projects will not have
424certain packages listed in its ``requirements.txt`` file because they
425are 'optional' requirements, i.e. only needed for certain
426configurations. By default, the enabled databases will have their
427Python bindings added when they are enabled.
Dean Troyer5686dbc2015-03-09 14:27:51 -0500428
Sean McGinnisf7302e12019-06-19 11:49:40 -0500429::
Sean Dague07d7e5b2014-11-17 07:10:14 -0500430
Sean McGinnisf7302e12019-06-19 11:49:40 -0500431 ADDITIONAL_VENV_PACKAGES="python-foo, python-bar"
Sean M. Collins09e550c2014-10-21 11:40:08 -0400432
Sean M. Collins09e550c2014-10-21 11:40:08 -0400433A clean install every time
Sean Dague07d7e5b2014-11-17 07:10:14 -0500434--------------------------
435
Ian Wienand815db162015-08-06 10:25:45 +1000436By default ``stack.sh`` only clones the project repos if they do not
437exist in ``$DEST``. ``stack.sh`` will freshen each repo on each run if
438``RECLONE`` is set to ``yes``. This avoids having to manually remove
439repos in order to get the current branch from ``$GIT_BASE``.
Sean M. Collins09e550c2014-10-21 11:40:08 -0400440
Sean McGinnisf7302e12019-06-19 11:49:40 -0500441::
Sean M. Collins09e550c2014-10-21 11:40:08 -0400442
Sean McGinnisf7302e12019-06-19 11:49:40 -0500443 RECLONE=yes
Sean M. Collins09e550c2014-10-21 11:40:08 -0400444
Chris Dentebdd9ac2015-03-04 12:35:14 +0000445Upgrade packages installed by pip
446---------------------------------
447
Ian Wienand815db162015-08-06 10:25:45 +1000448By default ``stack.sh`` only installs Python packages if no version is
449currently installed or the current version does not match a specified
450requirement. If ``PIP_UPGRADE`` is set to ``True`` then existing
451required Python packages will be upgraded to the most recent version
452that matches requirements.
Chris Dentebdd9ac2015-03-04 12:35:14 +0000453
Sean McGinnisf7302e12019-06-19 11:49:40 -0500454::
Chris Dentebdd9ac2015-03-04 12:35:14 +0000455
Sean McGinnisf7302e12019-06-19 11:49:40 -0500456 PIP_UPGRADE=True
Chris Dentebdd9ac2015-03-04 12:35:14 +0000457
John Huaa4693b52015-08-06 13:53:35 +0100458Guest Images
459------------
460
461Images provided in URLS via the comma-separated ``IMAGE_URLS``
462variable will be downloaded and uploaded to glance by DevStack.
463
464Default guest-images are predefined for each type of hypervisor and
465their testing-requirements in ``stack.sh``. Setting
466``DOWNLOAD_DEFAULT_IMAGES=False`` will prevent DevStack downloading
467these default images; in that case, you will want to populate
468``IMAGE_URLS`` with sufficient images to satisfy testing-requirements.
469
Sean McGinnisf7302e12019-06-19 11:49:40 -0500470::
John Huaa4693b52015-08-06 13:53:35 +0100471
Sean McGinnisf7302e12019-06-19 11:49:40 -0500472 DOWNLOAD_DEFAULT_IMAGES=False
473 IMAGE_URLS="http://foo.bar.com/image.qcow,"
474 IMAGE_URLS+="http://foo.bar.com/image2.qcow"
John Huaa4693b52015-08-06 13:53:35 +0100475
Rafael Folcof0131e12015-09-23 12:55:02 -0500476
477Instance Type
478-------------
479
480``DEFAULT_INSTANCE_TYPE`` can be used to configure the default instance
481type. When this parameter is not specified, Devstack creates additional
482micro & nano flavors for really small instances to run Tempest tests.
483
484For guests with larger memory requirements, ``DEFAULT_INSTANCE_TYPE``
485should be specified in the configuration file so Tempest selects the
486default flavors instead.
487
488KVM on Power with QEMU 2.4 requires 512 MB to load the firmware -
Andreas Jaeger8dd89e52019-08-11 16:00:12 +0200489`QEMU 2.4 - PowerPC <https://wiki.qemu.org/ChangeLog/2.4>`__ so users
Rafael Folcof0131e12015-09-23 12:55:02 -0500490running instances on ppc64/ppc64le can choose one of the default
491created flavors as follows:
492
Sean McGinnisf7302e12019-06-19 11:49:40 -0500493::
Rafael Folcof0131e12015-09-23 12:55:02 -0500494
Sean McGinnisf7302e12019-06-19 11:49:40 -0500495 DEFAULT_INSTANCE_TYPE=m1.tiny
Rafael Folcof0131e12015-09-23 12:55:02 -0500496
497
John Davidge21529a52014-06-30 09:55:11 -0400498IP Version
Brian Haley180f5eb2015-06-16 13:14:31 -0400499----------
500
Clay Gerrard148d0e62016-09-01 02:38:06 -0700501``IP_VERSION`` can be used to configure Neutron to create either an
502IPv4, IPv6, or dual-stack self-service project data-network by with
Sean Daguedb48db12016-04-06 08:09:31 -0400503either ``IP_VERSION=4``, ``IP_VERSION=6``, or ``IP_VERSION=4+6``
Clay Gerrard148d0e62016-09-01 02:38:06 -0700504respectively.
John Davidge21529a52014-06-30 09:55:11 -0400505
Sean McGinnisf7302e12019-06-19 11:49:40 -0500506::
John Davidge21529a52014-06-30 09:55:11 -0400507
Sean McGinnisf7302e12019-06-19 11:49:40 -0500508 IP_VERSION=4+6
John Davidge21529a52014-06-30 09:55:11 -0400509
Ian Wienand815db162015-08-06 10:25:45 +1000510The following optional variables can be used to alter the default IPv6
511behavior:
John Davidge21529a52014-06-30 09:55:11 -0400512
Sean McGinnisf7302e12019-06-19 11:49:40 -0500513::
John Davidge21529a52014-06-30 09:55:11 -0400514
Sean McGinnisf7302e12019-06-19 11:49:40 -0500515 IPV6_RA_MODE=slaac
516 IPV6_ADDRESS_MODE=slaac
517 IPV6_ADDRS_SAFE_TO_USE=fd$IPV6_GLOBAL_ID::/56
518 IPV6_PRIVATE_NETWORK_GATEWAY=fd$IPV6_GLOBAL_ID::1
John Davidge21529a52014-06-30 09:55:11 -0400519
Kevin Benton4bfbc292016-11-15 17:26:05 -0800520*Note*: ``IPV6_ADDRS_SAFE_TO_USE`` and ``IPV6_PRIVATE_NETWORK_GATEWAY``
521can be configured with any valid IPv6 prefix. The default values make
522use of an auto-generated ``IPV6_GLOBAL_ID`` to comply with RFC4193.
Brian Haley180f5eb2015-06-16 13:14:31 -0400523
Brian Haleyc869d592020-02-28 14:55:08 -0500524Service IP Version
525~~~~~~~~~~~~~~~~~~
Ian Wienand815db162015-08-06 10:25:45 +1000526
527DevStack can enable service operation over either IPv4 or IPv6 by
528setting ``SERVICE_IP_VERSION`` to either ``SERVICE_IP_VERSION=4`` or
529``SERVICE_IP_VERSION=6`` respectively.
530
531When set to ``4`` devstack services will open listen sockets on
532``0.0.0.0`` and service endpoints will be registered using ``HOST_IP``
533as the address.
534
535When set to ``6`` devstack services will open listen sockets on ``::``
536and service endpoints will be registered using ``HOST_IPV6`` as the
537address.
538
539The default value for this setting is ``4``. Dual-mode support, for
540example ``4+6`` is not currently supported. ``HOST_IPV6`` can
Sean McGinnisf7302e12019-06-19 11:49:40 -0500541optionally be used to alter the default IPv6 address::
Brian Haley180f5eb2015-06-16 13:14:31 -0400542
Sean McGinnisf7302e12019-06-19 11:49:40 -0500543 HOST_IPV6=${some_local_ipv6_address}
John Davidge21529a52014-06-30 09:55:11 -0400544
Brian Haleyc869d592020-02-28 14:55:08 -0500545Tunnel IP Version
546~~~~~~~~~~~~~~~~~
547
548DevStack can enable tunnel operation over either IPv4 or IPv6 by
549setting ``TUNNEL_IP_VERSION`` to either ``TUNNEL_IP_VERSION=4`` or
550``TUNNEL_IP_VERSION=6`` respectively.
551
552When set to ``4`` Neutron will use an IPv4 address for tunnel endpoints,
553for example, ``HOST_IP``.
554
555When set to ``6`` Neutron will use an IPv6 address for tunnel endpoints,
556for example, ``HOST_IPV6``.
557
558The default value for this setting is ``4``. Dual-mode support, for
559example ``4+6`` is not supported, as this value must match the address
560family of the local tunnel endpoint IP(v6) address.
561
562The value of ``TUNNEL_IP_VERSION`` has a direct relationship to the
563setting of ``TUNNEL_ENDPOINT_IP``, which will default to ``HOST_IP``
564when set to ``4``, and ``HOST_IPV6`` when set to ``6``.
565
Ian Wienand7d5be292015-08-10 13:39:17 +1000566Multi-node setup
567~~~~~~~~~~~~~~~~
Sean M. Collins09e550c2014-10-21 11:40:08 -0400568
Ian Wienand7d5be292015-08-10 13:39:17 +1000569See the :doc:`multi-node lab guide<guides/multinode-lab>`
Sean M. Collins09e550c2014-10-21 11:40:08 -0400570
Ian Wienand7d5be292015-08-10 13:39:17 +1000571Projects
572--------
Sean M. Collins09e550c2014-10-21 11:40:08 -0400573
Ian Wienand7d5be292015-08-10 13:39:17 +1000574Neutron
575~~~~~~~
Sean M. Collins09e550c2014-10-21 11:40:08 -0400576
Ian Wienand7d5be292015-08-10 13:39:17 +1000577See the :doc:`neutron configuration guide<guides/neutron>` for
578details on configuration of Neutron
Sean M. Collins09e550c2014-10-21 11:40:08 -0400579
Sean M. Collins09e550c2014-10-21 11:40:08 -0400580
Ian Wienand7d5be292015-08-10 13:39:17 +1000581Swift
582~~~~~
583
584Swift is disabled by default. When enabled, it is configured with
585only one replica to avoid being IO/memory intensive on a small
Sean Dague8b8441f2017-05-02 06:14:11 -0400586VM.
Ian Wienand7d5be292015-08-10 13:39:17 +1000587
Markus Zoellerc30657d2015-11-02 11:27:46 +0100588If you would like to enable Swift you can add this to your ``localrc``
Ian Wienand7d5be292015-08-10 13:39:17 +1000589section:
590
591::
592
593 enable_service s-proxy s-object s-container s-account
594
595If you want a minimal Swift install with only Swift and Keystone you
Markus Zoellerc30657d2015-11-02 11:27:46 +0100596can have this instead in your ``localrc`` section:
Ian Wienand7d5be292015-08-10 13:39:17 +1000597
598::
599
600 disable_all_services
601 enable_service key mysql s-proxy s-object s-container s-account
602
603If you only want to do some testing of a real normal swift cluster
604with multiple replicas you can do so by customizing the variable
Markus Zoellerc30657d2015-11-02 11:27:46 +0100605``SWIFT_REPLICAS`` in your ``localrc`` section (usually to 3).
Ian Wienand7d5be292015-08-10 13:39:17 +1000606
Christian Schwede91d22452016-04-12 10:53:46 +0200607You can manually override the ring building to use specific storage
608nodes, for example when you want to test a multinode environment. In
609this case you have to set a space-separated list of IPs in
610``SWIFT_STORAGE_IPS`` in your ``localrc`` section that should be used
611as Swift storage nodes.
612Please note that this does not create a multinode setup, it is only
613used when adding nodes to the Swift rings.
614
615::
616
617 SWIFT_STORAGE_IPS="192.168.1.10 192.168.1.11 192.168.1.12"
618
Ian Wienand7d5be292015-08-10 13:39:17 +1000619Swift S3
620++++++++
621
Kota Tsuyuzaki070e4ee2018-09-13 03:08:19 +0900622If you are enabling ``s3api`` in ``ENABLED_SERVICES`` DevStack will
623install the s3api middleware emulation. Swift will be configured to
Ian Wienand7d5be292015-08-10 13:39:17 +1000624act as a S3 endpoint for Keystone so effectively replacing the
Markus Zoellerc30657d2015-11-02 11:27:46 +0100625``nova-objectstore``.
Ian Wienand7d5be292015-08-10 13:39:17 +1000626
Sean Dague8b8441f2017-05-02 06:14:11 -0400627Only Swift proxy server is launched in the systemd system all other
Markus Zoellerc30657d2015-11-02 11:27:46 +0100628services are started in background and managed by ``swift-init`` tool.
Ian Wienand7d5be292015-08-10 13:39:17 +1000629
Ian Wienand7d5be292015-08-10 13:39:17 +1000630Tempest
631~~~~~~~
632
633If tempest has been successfully configured, a basic set of smoke
634tests can be run as follows:
635
636::
637
638 $ cd /opt/stack/tempest
639 $ tox -efull tempest.scenario.test_network_basic_ops
640
641By default tempest is downloaded and the config file is generated, but the
642tempest package is not installed in the system's global site-packages (the
643package install includes installing dependences). So tempest won't run
644outside of tox. If you would like to install it add the following to your
645``localrc`` section:
646
647::
648
649 INSTALL_TEMPEST=True
650
651
Ian Wienand7d5be292015-08-10 13:39:17 +1000652Cinder
653~~~~~~
654
655The logical volume group used to hold the Cinder-managed volumes is
Jordan Pittierf5069f32016-11-08 12:10:12 +0100656set by ``VOLUME_GROUP_NAME``, the logical volume name prefix is set with
Ian Wienand7d5be292015-08-10 13:39:17 +1000657``VOLUME_NAME_PREFIX`` and the size of the volume backing file is set
658with ``VOLUME_BACKING_FILE_SIZE``.
659
Sean McGinnisf7302e12019-06-19 11:49:40 -0500660::
Ian Wienand7d5be292015-08-10 13:39:17 +1000661
Sean McGinnisf7302e12019-06-19 11:49:40 -0500662 VOLUME_GROUP_NAME="stack-volumes"
663 VOLUME_NAME_PREFIX="volume-"
664 VOLUME_BACKING_FILE_SIZE=24G
Ian Wienand7d5be292015-08-10 13:39:17 +1000665
Brian Rosmaitaf44aa0c2021-08-04 18:27:48 -0400666When running highly concurrent tests, the default per-project quotas
667for volumes, backups, or snapshots may be too small. These can be
668adjusted by setting ``CINDER_QUOTA_VOLUMES``, ``CINDER_QUOTA_BACKUPS``,
669or ``CINDER_QUOTA_SNAPSHOTS`` to the desired value. (The default for
670each is 10.)
671
Ian Wienand7d5be292015-08-10 13:39:17 +1000672
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>
Ian Wienand7d5be292015-08-10 13:39:17 +1000696 REGION_NAME=RegionTwo
zhiyuan_cai6f1781f2016-04-07 18:36:46 +0800697 KEYSTONE_REGION_NAME=RegionOne
698
699In the devstack for RegionOne, we set REGION_NAME as RegionOne, so region of
700the services started in this devstack are registered as RegionOne. In devstack
701for RegionTwo, similarly, we set REGION_NAME as RegionTwo since we want
702services started in this devstack to be registered in RegionTwo. But Keystone
703service is started and registered in RegionOne, not RegionTwo, so we use
704KEYSTONE_REGION_NAME to specify the region of Keystone service.
705KEYSTONE_REGION_NAME has a default value the same as REGION_NAME thus we omit
706it in the configuration of RegionOne.
henriquetrutaf2126222016-01-05 13:43:18 -0300707
Dan Smithc8b66ff2021-07-19 11:14:18 -0700708Glance
709++++++
710
711The default image size quota of 1GiB may be too small if larger images
712are to be used. Change the default at setup time with:
713
714::
715
716 GLANCE_LIMIT_IMAGE_SIZE_TOTAL=5000
717
718or at runtime via:
719
720::
721
Masayuki Igawaf49b4352022-09-22 11:22:21 +0900722 openstack --os-cloud devstack-system-admin registered limit set \
Dan Smithc8b66ff2021-07-19 11:14:18 -0700723 --service glance --default-limit 5000 --region RegionOne image_size_total
724
Markus Zoeller14728c72017-05-29 15:39:21 +0200725.. _arch-configuration:
726
727Architectures
728-------------
729
730The upstream CI runs exclusively on nodes with x86 architectures, but
731OpenStack supports even more architectures. Some of them need to configure
732Devstack in a certain way.
733
734KVM on s390x (IBM z Systems)
735~~~~~~~~~~~~~~~~~~~~~~~~~~~~
736
737KVM on s390x (IBM z Systems) is supported since the *Kilo* release. For
738an all-in-one setup, these minimal settings in the ``local.conf`` file
739are needed::
740
741 [[local|localrc]]
742 ADMIN_PASSWORD=secret
743 DATABASE_PASSWORD=$ADMIN_PASSWORD
744 RABBIT_PASSWORD=$ADMIN_PASSWORD
745 SERVICE_PASSWORD=$ADMIN_PASSWORD
746
747 DOWNLOAD_DEFAULT_IMAGES=False
748 IMAGE_URLS="https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-s390x-disk1.img"
749
Andreas Scheuring941940a2017-09-13 00:24:02 +0200750 # Provide a custom etcd3 binary download URL and ints sha256.
751 # The binary must be located under '/<etcd version>/etcd-<etcd-version>-linux-s390x.tar.gz'
752 # on this URL.
753 # Build instructions for etcd3: https://github.com/linux-on-ibm-z/docs/wiki/Building-etcd
754 ETCD_DOWNLOAD_URL=<your-etcd-download-url>
755 ETCD_SHA256=<your-etcd3-sha256>
756
Markus Zoeller14728c72017-05-29 15:39:21 +0200757 enable_service n-sproxy
758 disable_service n-novnc
Markus Zoeller14728c72017-05-29 15:39:21 +0200759
760 [[post-config|$NOVA_CONF]]
761
762 [serial_console]
763 base_url=ws://$HOST_IP:6083/ # optional
764
765Reasoning:
766
767* The default image of Devstack is x86 only, so we deactivate the download
768 with ``DOWNLOAD_DEFAULT_IMAGES``. The referenced guest image
769 in the code above (``IMAGE_URLS``) serves as an example. The list of
770 possible s390x guest images is not limited to that.
771
772* This platform doesn't support a graphical console like VNC or SPICE.
773 The technical reason is the missing framebuffer on the platform. This
774 means we rely on the substitute feature *serial console* which needs the
775 proxy service ``n-sproxy``. We also disable VNC's proxy ``n-novnc`` for
776 that reason . The configuration in the ``post-config`` section is only
777 needed if you want to use the *serial console* outside of the all-in-one
778 setup.
779
Andreas Scheuring941940a2017-09-13 00:24:02 +0200780* A link to an etcd3 binary and its sha256 needs to be provided as the
781 binary for s390x is not hosted on github like it is for other
782 architectures. For more details see
783 https://bugs.launchpad.net/devstack/+bug/1693192. Etcd3 can easily be
784 built along https://github.com/linux-on-ibm-z/docs/wiki/Building-etcd.
Markus Zoeller14728c72017-05-29 15:39:21 +0200785
786.. note:: To run *Tempest* against this *Devstack* all-in-one, you'll need
787 to use a guest image which is smaller than 1GB when uncompressed.
788 The example image from above is bigger than that!