blob: a83b2de0dfbcb0971298517d9f26f91fce552737 [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
Dr. Jens Harbott781fbf42022-10-11 15:41:02 +0200184.. warning:: Only use alphanumeric characters in your passwords, as some
185 services fail to work when using special characters.
186
Sean M. Collins09e550c2014-10-21 11:40:08 -0400187The network ranges must not overlap with any networks in use on the
188host. Overlap is not uncommon as RFC-1918 'private' ranges are commonly
189used for both the local networking and Nova's fixed and floating ranges.
190
191``HOST_IP`` is normally detected on the first run of ``stack.sh`` but
192often is indeterminate on later runs due to the IP being moved from an
Juan Antonio Osorio Roblesfe6dccb2014-11-28 13:12:14 +0200193Ethernet interface to a bridge on the host. Setting it here also makes it
Sean M. Collins09e550c2014-10-21 11:40:08 -0400194available for ``openrc`` to set ``OS_AUTH_URL``. ``HOST_IP`` is not set
195by default.
196
Brian Haley180f5eb2015-06-16 13:14:31 -0400197``HOST_IPV6`` is normally detected on the first run of ``stack.sh`` but
198will not be set if there is no IPv6 address on the default Ethernet interface.
199Setting it here also makes it available for ``openrc`` to set ``OS_AUTH_URL``.
200``HOST_IPV6`` is not set by default.
201
Markus Zoeller14728c72017-05-29 15:39:21 +0200202For architecture specific configurations which differ from the x86 default
203here, see `arch-configuration`_.
204
Ian Wienanda35391e2015-08-10 13:53:40 +1000205Historical Notes
206================
Ian Wienand7d5be292015-08-10 13:39:17 +1000207
Ian Wienanda35391e2015-08-10 13:53:40 +1000208Historically DevStack obtained all local configuration and
209customizations from a ``localrc`` file. In Oct 2013 the
210``local.conf`` configuration method was introduced (in `review 46768
Matt Riedemann9b6d2f22019-06-18 10:43:16 -0400211<https://review.opendev.org/#/c/46768/>`__) to simplify this
Ian Wienanda35391e2015-08-10 13:53:40 +1000212process.
Ian Wienand7d5be292015-08-10 13:39:17 +1000213
Ian Wienand815db162015-08-06 10:25:45 +1000214Configuration Notes
215===================
216
217.. contents::
218 :local:
Sean M. Collins09e550c2014-10-21 11:40:08 -0400219
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000220Service Repos
221-------------
222
223The Git repositories used to check out the source for each service are
224controlled by a pair of variables set for each service. ``*_REPO``
225points to the repository and ``*_BRANCH`` selects which branch to
226check out. These may be overridden in ``local.conf`` to pull source
227from a different repo for testing, such as a Gerrit branch
228proposal. ``GIT_BASE`` points to the primary repository server.
229
Sean McGinnisf7302e12019-06-19 11:49:40 -0500230::
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000231
Sean McGinnisf7302e12019-06-19 11:49:40 -0500232 NOVA_REPO=$GIT_BASE/openstack/nova.git
233 NOVA_BRANCH=master
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000234
235To pull a branch directly from Gerrit, get the repo and branch from
Sean McGinnisf7302e12019-06-19 11:49:40 -0500236the Gerrit review page::
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000237
Matt Riedemann9b6d2f22019-06-18 10:43:16 -0400238 git fetch https://review.opendev.org/openstack/nova \
Sean McGinnisf7302e12019-06-19 11:49:40 -0500239 refs/changes/50/5050/1 && git checkout FETCH_HEAD
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000240
Sean McGinnisf7302e12019-06-19 11:49:40 -0500241The repo is the stanza following ``fetch`` and the branch is the
242stanza following that::
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000243
Matt Riedemann9b6d2f22019-06-18 10:43:16 -0400244 NOVA_REPO=https://review.opendev.org/openstack/nova
Sean McGinnisf7302e12019-06-19 11:49:40 -0500245 NOVA_BRANCH=refs/changes/50/5050/1
Ian Wienand7cd16ce2016-04-08 09:40:56 +1000246
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
Sean McGinnisf7302e12019-06-19 11:49:40 -0500258::
Sean M. Collins09e550c2014-10-21 11:40:08 -0400259
Sean McGinnisf7302e12019-06-19 11:49:40 -0500260 DEST=/opt/stack
Sean M. Collins09e550c2014-10-21 11:40:08 -0400261
Ian Wienand815db162015-08-06 10:25:45 +1000262Logging
263-------
264
Andreas Jaeger8dd89e52019-08-11 16:00:12 +0200265.. _enable_logging:
266
Ian Wienand815db162015-08-06 10:25:45 +1000267Enable Logging
268~~~~~~~~~~~~~~
269
270By default ``stack.sh`` output is only written to the console where it
271runs. It can be sent to a file in addition to the console by setting
272``LOGFILE`` to the fully-qualified name of the destination log file. A
273timestamp will be appended to the given filename for each run of
274``stack.sh``.
275
Sean McGinnisf7302e12019-06-19 11:49:40 -0500276::
Ian Wienand815db162015-08-06 10:25:45 +1000277
Sean McGinnisf7302e12019-06-19 11:49:40 -0500278 LOGFILE=$DEST/logs/stack.sh.log
Ian Wienand815db162015-08-06 10:25:45 +1000279
280Old log files are cleaned automatically if ``LOGDAYS`` is set to the
281number of days of old log files to keep.
282
Sean McGinnisf7302e12019-06-19 11:49:40 -0500283::
Ian Wienand815db162015-08-06 10:25:45 +1000284
Zhou Yanbing44234502022-04-21 15:00:41 +0800285 LOGDAYS=2
Ian Wienand815db162015-08-06 10:25:45 +1000286
Sean Dague8b8441f2017-05-02 06:14:11 -0400287Some coloring is used during the DevStack runs to make it easier to
288see what is going on. This can be disabled with::
Ian Wienand815db162015-08-06 10:25:45 +1000289
Sean McGinnisf7302e12019-06-19 11:49:40 -0500290 LOG_COLOR=False
Ian Wienand815db162015-08-06 10:25:45 +1000291
Ian Wienand83ecb972018-02-06 10:03:34 +1100292When using the logfile, by default logs are sent to the console and
293the file. You can set ``VERBOSE`` to ``false`` if you only wish the
294logs to be sent to the file (this may avoid having double-logging in
295some cases where you are capturing the script output and the log
296files). If ``VERBOSE`` is ``true`` you can additionally set
297``VERBOSE_NO_TIMESTAMP`` to avoid timestamps being added to each
298output line sent to the console. This can be useful in some
299situations where the console output is being captured by a runner or
300framework (e.g. Ansible) that adds its own timestamps. Note that the
301log lines sent to the ``LOGFILE`` will still be prefixed with a
302timestamp.
303
Ian Wienand815db162015-08-06 10:25:45 +1000304Logging the Service Output
305~~~~~~~~~~~~~~~~~~~~~~~~~~
306
Sean Dague8b8441f2017-05-02 06:14:11 -0400307By default, services run under ``systemd`` and are natively logging to
308the systemd journal.
Ian Wienand815db162015-08-06 10:25:45 +1000309
Sean Dague8b8441f2017-05-02 06:14:11 -0400310To query the logs use the ``journalctl`` command, such as::
Ian Wienand815db162015-08-06 10:25:45 +1000311
caowei32eccca2017-11-01 11:45:21 +0800312 sudo journalctl --unit devstack@*
Ian Wienand815db162015-08-06 10:25:45 +1000313
Sean Dague8b8441f2017-05-02 06:14:11 -0400314More examples can be found in :ref:`journalctl-examples`.
Ian Wienand7d5be292015-08-10 13:39:17 +1000315
Ian Wienanda35391e2015-08-10 13:53:40 +1000316Example Logging Configuration
317~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
318
319For example, non-interactive installs probably wish to save output to
320a file, keep service logs and disable color in the stored files.
321
Sean McGinnisf7302e12019-06-19 11:49:40 -0500322::
Ian Wienanda35391e2015-08-10 13:53:40 +1000323
Sean McGinnisf7302e12019-06-19 11:49:40 -0500324 [[local|localrc]]
325 DEST=/opt/stack/
326 LOGFILE=$LOGDIR/stack.sh.log
327 LOG_COLOR=False
Ian Wienanda35391e2015-08-10 13:53:40 +1000328
Ian Wienand7d5be292015-08-10 13:39:17 +1000329Database Backend
330----------------
331
Matt Riedemannb14665f2019-10-17 19:34:05 +0000332Multiple database backends are available. The available databases are defined
333in the lib/databases directory.
334``mysql`` is the default database, choose a different one by putting the
335following in the ``localrc`` section::
Ian Wienand7d5be292015-08-10 13:39:17 +1000336
Sean McGinnisf7302e12019-06-19 11:49:40 -0500337 disable_service mysql
Matt Riedemannb14665f2019-10-17 19:34:05 +0000338 enable_service postgresql
339
340``mysql`` is the default database.
Ian Wienand7d5be292015-08-10 13:39:17 +1000341
342RPC Backend
343-----------
344
Matt Riedemannb14665f2019-10-17 19:34:05 +0000345Support 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``::
Ian Wienand7d5be292015-08-10 13:39:17 +1000351
Sean McGinnisf7302e12019-06-19 11:49:40 -0500352 disable_service rabbit
Ian Wienand7d5be292015-08-10 13:39:17 +1000353
Matt Riedemannb14665f2019-10-17 19:34:05 +0000354
Ian Wienand7d5be292015-08-10 13:39:17 +1000355Apache Frontend
356---------------
357
358The Apache web server can be enabled for wsgi services that support
359being deployed under HTTPD + mod_wsgi. By default, services that
360recommend running under HTTPD + mod_wsgi are deployed under Apache. To
361use an alternative deployment strategy (e.g. eventlet) for services
362that support an alternative to HTTPD + mod_wsgi set
363``ENABLE_HTTPD_MOD_WSGI_SERVICES`` to ``False`` in your
364``local.conf``.
365
366Each service that can be run under HTTPD + mod_wsgi also has an
367override toggle available that can be set in your ``local.conf``.
368
369Keystone is run under Apache with ``mod_wsgi`` by default.
370
Sean McGinnisf7302e12019-06-19 11:49:40 -0500371Example (Keystone)::
Ian Wienand7d5be292015-08-10 13:39:17 +1000372
373 KEYSTONE_USE_MOD_WSGI="True"
374
Sean McGinnisf7302e12019-06-19 11:49:40 -0500375Example (Nova)::
Ian Wienand7d5be292015-08-10 13:39:17 +1000376
377 NOVA_USE_MOD_WSGI="True"
378
Sean McGinnisf7302e12019-06-19 11:49:40 -0500379Example (Swift)::
Ian Wienand7d5be292015-08-10 13:39:17 +1000380
381 SWIFT_USE_MOD_WSGI="True"
382
Sean McGinnisf7302e12019-06-19 11:49:40 -0500383Example (Heat)::
Oleksii Chuprykova6928102015-06-11 08:56:58 -0400384
385 HEAT_USE_MOD_WSGI="True"
386
Sean McGinnisf7302e12019-06-19 11:49:40 -0500387Example (Cinder)::
Anton Arefiev651cb1a2015-09-01 10:55:20 +0300388
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
Sean McGinnisf7302e12019-06-19 11:49:40 -0500403::
Sean Dague07d7e5b2014-11-17 07:10:14 -0500404
Sean McGinnisf7302e12019-06-19 11:49:40 -0500405 LIBS_FROM_GIT=python-keystoneclient,oslo.config
Sean Dague07d7e5b2014-11-17 07:10:14 -0500406
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
Sean McGinnisf7302e12019-06-19 11:49:40 -0500421::
Dean Troyer5686dbc2015-03-09 14:27:51 -0500422
Sean McGinnisf7302e12019-06-19 11:49:40 -0500423 PROJECT_VENV["glance"]=${GLANCE_DIR}.venv
Dean Troyer5686dbc2015-03-09 14:27:51 -0500424
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
Sean McGinnisf7302e12019-06-19 11:49:40 -0500432::
Sean Dague07d7e5b2014-11-17 07:10:14 -0500433
Sean McGinnisf7302e12019-06-19 11:49:40 -0500434 ADDITIONAL_VENV_PACKAGES="python-foo, python-bar"
Sean M. Collins09e550c2014-10-21 11:40:08 -0400435
Sean M. Collins09e550c2014-10-21 11:40:08 -0400436A clean install every time
Sean Dague07d7e5b2014-11-17 07:10:14 -0500437--------------------------
438
Ian Wienand815db162015-08-06 10:25:45 +1000439By default ``stack.sh`` only clones the project repos if they do not
440exist in ``$DEST``. ``stack.sh`` will freshen each repo on each run if
441``RECLONE`` is set to ``yes``. This avoids having to manually remove
442repos in order to get the current branch from ``$GIT_BASE``.
Sean M. Collins09e550c2014-10-21 11:40:08 -0400443
Sean McGinnisf7302e12019-06-19 11:49:40 -0500444::
Sean M. Collins09e550c2014-10-21 11:40:08 -0400445
Sean McGinnisf7302e12019-06-19 11:49:40 -0500446 RECLONE=yes
Sean M. Collins09e550c2014-10-21 11:40:08 -0400447
Chris Dentebdd9ac2015-03-04 12:35:14 +0000448Upgrade packages installed by pip
449---------------------------------
450
Ian Wienand815db162015-08-06 10:25:45 +1000451By default ``stack.sh`` only installs Python packages if no version is
452currently installed or the current version does not match a specified
453requirement. If ``PIP_UPGRADE`` is set to ``True`` then existing
454required Python packages will be upgraded to the most recent version
455that matches requirements.
Chris Dentebdd9ac2015-03-04 12:35:14 +0000456
Sean McGinnisf7302e12019-06-19 11:49:40 -0500457::
Chris Dentebdd9ac2015-03-04 12:35:14 +0000458
Sean McGinnisf7302e12019-06-19 11:49:40 -0500459 PIP_UPGRADE=True
Chris Dentebdd9ac2015-03-04 12:35:14 +0000460
John Huaa4693b52015-08-06 13:53:35 +0100461Guest Images
462------------
463
464Images provided in URLS via the comma-separated ``IMAGE_URLS``
465variable will be downloaded and uploaded to glance by DevStack.
466
467Default guest-images are predefined for each type of hypervisor and
468their testing-requirements in ``stack.sh``. Setting
469``DOWNLOAD_DEFAULT_IMAGES=False`` will prevent DevStack downloading
470these default images; in that case, you will want to populate
471``IMAGE_URLS`` with sufficient images to satisfy testing-requirements.
472
Sean McGinnisf7302e12019-06-19 11:49:40 -0500473::
John Huaa4693b52015-08-06 13:53:35 +0100474
Sean McGinnisf7302e12019-06-19 11:49:40 -0500475 DOWNLOAD_DEFAULT_IMAGES=False
476 IMAGE_URLS="http://foo.bar.com/image.qcow,"
477 IMAGE_URLS+="http://foo.bar.com/image2.qcow"
John Huaa4693b52015-08-06 13:53:35 +0100478
Rafael Folcof0131e12015-09-23 12:55:02 -0500479
480Instance Type
481-------------
482
483``DEFAULT_INSTANCE_TYPE`` can be used to configure the default instance
484type. When this parameter is not specified, Devstack creates additional
485micro & nano flavors for really small instances to run Tempest tests.
486
487For guests with larger memory requirements, ``DEFAULT_INSTANCE_TYPE``
488should be specified in the configuration file so Tempest selects the
489default flavors instead.
490
491KVM on Power with QEMU 2.4 requires 512 MB to load the firmware -
Andreas Jaeger8dd89e52019-08-11 16:00:12 +0200492`QEMU 2.4 - PowerPC <https://wiki.qemu.org/ChangeLog/2.4>`__ so users
Rafael Folcof0131e12015-09-23 12:55:02 -0500493running instances on ppc64/ppc64le can choose one of the default
494created flavors as follows:
495
Sean McGinnisf7302e12019-06-19 11:49:40 -0500496::
Rafael Folcof0131e12015-09-23 12:55:02 -0500497
Sean McGinnisf7302e12019-06-19 11:49:40 -0500498 DEFAULT_INSTANCE_TYPE=m1.tiny
Rafael Folcof0131e12015-09-23 12:55:02 -0500499
500
John Davidge21529a52014-06-30 09:55:11 -0400501IP Version
Brian Haley180f5eb2015-06-16 13:14:31 -0400502----------
503
Clay Gerrard148d0e62016-09-01 02:38:06 -0700504``IP_VERSION`` can be used to configure Neutron to create either an
505IPv4, IPv6, or dual-stack self-service project data-network by with
Sean Daguedb48db12016-04-06 08:09:31 -0400506either ``IP_VERSION=4``, ``IP_VERSION=6``, or ``IP_VERSION=4+6``
Clay Gerrard148d0e62016-09-01 02:38:06 -0700507respectively.
John Davidge21529a52014-06-30 09:55:11 -0400508
Sean McGinnisf7302e12019-06-19 11:49:40 -0500509::
John Davidge21529a52014-06-30 09:55:11 -0400510
Sean McGinnisf7302e12019-06-19 11:49:40 -0500511 IP_VERSION=4+6
John Davidge21529a52014-06-30 09:55:11 -0400512
Ian Wienand815db162015-08-06 10:25:45 +1000513The following optional variables can be used to alter the default IPv6
514behavior:
John Davidge21529a52014-06-30 09:55:11 -0400515
Sean McGinnisf7302e12019-06-19 11:49:40 -0500516::
John Davidge21529a52014-06-30 09:55:11 -0400517
Sean McGinnisf7302e12019-06-19 11:49:40 -0500518 IPV6_RA_MODE=slaac
519 IPV6_ADDRESS_MODE=slaac
520 IPV6_ADDRS_SAFE_TO_USE=fd$IPV6_GLOBAL_ID::/56
521 IPV6_PRIVATE_NETWORK_GATEWAY=fd$IPV6_GLOBAL_ID::1
John Davidge21529a52014-06-30 09:55:11 -0400522
Kevin Benton4bfbc292016-11-15 17:26:05 -0800523*Note*: ``IPV6_ADDRS_SAFE_TO_USE`` and ``IPV6_PRIVATE_NETWORK_GATEWAY``
524can be configured with any valid IPv6 prefix. The default values make
525use of an auto-generated ``IPV6_GLOBAL_ID`` to comply with RFC4193.
Brian Haley180f5eb2015-06-16 13:14:31 -0400526
Brian Haleyc869d592020-02-28 14:55:08 -0500527Service IP Version
528~~~~~~~~~~~~~~~~~~
Ian Wienand815db162015-08-06 10:25:45 +1000529
530DevStack can enable service operation over either IPv4 or IPv6 by
531setting ``SERVICE_IP_VERSION`` to either ``SERVICE_IP_VERSION=4`` or
532``SERVICE_IP_VERSION=6`` respectively.
533
534When set to ``4`` devstack services will open listen sockets on
535``0.0.0.0`` and service endpoints will be registered using ``HOST_IP``
536as the address.
537
538When set to ``6`` devstack services will open listen sockets on ``::``
539and service endpoints will be registered using ``HOST_IPV6`` as the
540address.
541
542The default value for this setting is ``4``. Dual-mode support, for
543example ``4+6`` is not currently supported. ``HOST_IPV6`` can
Sean McGinnisf7302e12019-06-19 11:49:40 -0500544optionally be used to alter the default IPv6 address::
Brian Haley180f5eb2015-06-16 13:14:31 -0400545
Sean McGinnisf7302e12019-06-19 11:49:40 -0500546 HOST_IPV6=${some_local_ipv6_address}
John Davidge21529a52014-06-30 09:55:11 -0400547
Brian Haleyc869d592020-02-28 14:55:08 -0500548Tunnel IP Version
549~~~~~~~~~~~~~~~~~
550
551DevStack can enable tunnel operation over either IPv4 or IPv6 by
552setting ``TUNNEL_IP_VERSION`` to either ``TUNNEL_IP_VERSION=4`` or
553``TUNNEL_IP_VERSION=6`` respectively.
554
555When set to ``4`` Neutron will use an IPv4 address for tunnel endpoints,
556for example, ``HOST_IP``.
557
558When set to ``6`` Neutron will use an IPv6 address for tunnel endpoints,
559for example, ``HOST_IPV6``.
560
561The default value for this setting is ``4``. Dual-mode support, for
562example ``4+6`` is not supported, as this value must match the address
563family of the local tunnel endpoint IP(v6) address.
564
565The value of ``TUNNEL_IP_VERSION`` has a direct relationship to the
566setting of ``TUNNEL_ENDPOINT_IP``, which will default to ``HOST_IP``
567when set to ``4``, and ``HOST_IPV6`` when set to ``6``.
568
Ian Wienand7d5be292015-08-10 13:39:17 +1000569Multi-node setup
570~~~~~~~~~~~~~~~~
Sean M. Collins09e550c2014-10-21 11:40:08 -0400571
Ian Wienand7d5be292015-08-10 13:39:17 +1000572See the :doc:`multi-node lab guide<guides/multinode-lab>`
Sean M. Collins09e550c2014-10-21 11:40:08 -0400573
Ian Wienand7d5be292015-08-10 13:39:17 +1000574Projects
575--------
Sean M. Collins09e550c2014-10-21 11:40:08 -0400576
Ian Wienand7d5be292015-08-10 13:39:17 +1000577Neutron
578~~~~~~~
Sean M. Collins09e550c2014-10-21 11:40:08 -0400579
Ian Wienand7d5be292015-08-10 13:39:17 +1000580See the :doc:`neutron configuration guide<guides/neutron>` for
581details on configuration of Neutron
Sean M. Collins09e550c2014-10-21 11:40:08 -0400582
Sean M. Collins09e550c2014-10-21 11:40:08 -0400583
Ian Wienand7d5be292015-08-10 13:39:17 +1000584Swift
585~~~~~
586
587Swift is disabled by default. When enabled, it is configured with
588only one replica to avoid being IO/memory intensive on a small
Sean Dague8b8441f2017-05-02 06:14:11 -0400589VM.
Ian Wienand7d5be292015-08-10 13:39:17 +1000590
Markus Zoellerc30657d2015-11-02 11:27:46 +0100591If you would like to enable Swift you can add this to your ``localrc``
Ian Wienand7d5be292015-08-10 13:39:17 +1000592section:
593
594::
595
596 enable_service s-proxy s-object s-container s-account
597
598If you want a minimal Swift install with only Swift and Keystone you
Markus Zoellerc30657d2015-11-02 11:27:46 +0100599can have this instead in your ``localrc`` section:
Ian Wienand7d5be292015-08-10 13:39:17 +1000600
601::
602
603 disable_all_services
604 enable_service key mysql s-proxy s-object s-container s-account
605
606If you only want to do some testing of a real normal swift cluster
607with multiple replicas you can do so by customizing the variable
Markus Zoellerc30657d2015-11-02 11:27:46 +0100608``SWIFT_REPLICAS`` in your ``localrc`` section (usually to 3).
Ian Wienand7d5be292015-08-10 13:39:17 +1000609
Christian Schwede91d22452016-04-12 10:53:46 +0200610You can manually override the ring building to use specific storage
611nodes, for example when you want to test a multinode environment. In
612this case you have to set a space-separated list of IPs in
613``SWIFT_STORAGE_IPS`` in your ``localrc`` section that should be used
614as Swift storage nodes.
615Please note that this does not create a multinode setup, it is only
616used when adding nodes to the Swift rings.
617
618::
619
620 SWIFT_STORAGE_IPS="192.168.1.10 192.168.1.11 192.168.1.12"
621
Ian Wienand7d5be292015-08-10 13:39:17 +1000622Swift S3
623++++++++
624
Kota Tsuyuzaki070e4ee2018-09-13 03:08:19 +0900625If you are enabling ``s3api`` in ``ENABLED_SERVICES`` DevStack will
626install the s3api middleware emulation. Swift will be configured to
Ian Wienand7d5be292015-08-10 13:39:17 +1000627act as a S3 endpoint for Keystone so effectively replacing the
Markus Zoellerc30657d2015-11-02 11:27:46 +0100628``nova-objectstore``.
Ian Wienand7d5be292015-08-10 13:39:17 +1000629
Sean Dague8b8441f2017-05-02 06:14:11 -0400630Only Swift proxy server is launched in the systemd system all other
Markus Zoellerc30657d2015-11-02 11:27:46 +0100631services are started in background and managed by ``swift-init`` tool.
Ian Wienand7d5be292015-08-10 13:39:17 +1000632
Ian Wienand7d5be292015-08-10 13:39:17 +1000633Tempest
634~~~~~~~
635
636If tempest has been successfully configured, a basic set of smoke
637tests can be run as follows:
638
639::
640
641 $ cd /opt/stack/tempest
Masayuki Igawa7d1ba832022-10-11 12:35:18 +0900642 $ tox -e smoke
Ian Wienand7d5be292015-08-10 13:39:17 +1000643
644By default tempest is downloaded and the config file is generated, but the
645tempest package is not installed in the system's global site-packages (the
646package install includes installing dependences). So tempest won't run
647outside of tox. If you would like to install it add the following to your
648``localrc`` section:
649
650::
651
652 INSTALL_TEMPEST=True
653
654
Ian Wienand7d5be292015-08-10 13:39:17 +1000655Cinder
656~~~~~~
657
658The logical volume group used to hold the Cinder-managed volumes is
Jordan Pittierf5069f32016-11-08 12:10:12 +0100659set by ``VOLUME_GROUP_NAME``, the logical volume name prefix is set with
Ian Wienand7d5be292015-08-10 13:39:17 +1000660``VOLUME_NAME_PREFIX`` and the size of the volume backing file is set
661with ``VOLUME_BACKING_FILE_SIZE``.
662
Sean McGinnisf7302e12019-06-19 11:49:40 -0500663::
Ian Wienand7d5be292015-08-10 13:39:17 +1000664
Sean McGinnisf7302e12019-06-19 11:49:40 -0500665 VOLUME_GROUP_NAME="stack-volumes"
666 VOLUME_NAME_PREFIX="volume-"
667 VOLUME_BACKING_FILE_SIZE=24G
Ian Wienand7d5be292015-08-10 13:39:17 +1000668
Brian Rosmaitaf44aa0c2021-08-04 18:27:48 -0400669When running highly concurrent tests, the default per-project quotas
670for volumes, backups, or snapshots may be too small. These can be
671adjusted by setting ``CINDER_QUOTA_VOLUMES``, ``CINDER_QUOTA_BACKUPS``,
672or ``CINDER_QUOTA_SNAPSHOTS`` to the desired value. (The default for
673each is 10.)
674
Gorka Eguileor97061c92021-10-14 09:55:56 +0200675DevStack's Cinder LVM configuration module currently supports both iSCSI and
676NVMe connections, and we can choose which one to use with options
677``CINDER_TARGET_HELPER``, ``CINDER_TARGET_PROTOCOL``, ``CINDER_TARGET_PREFIX``,
678and ``CINDER_TARGET_PORT``.
679
680Defaults use iSCSI with the LIO target manager::
681
682 CINDER_TARGET_HELPER="lioadm"
683 CINDER_TARGET_PROTOCOL="iscsi"
684 CINDER_TARGET_PREFIX="iqn.2010-10.org.openstack:"
685 CINDER_TARGET_PORT=3260
686
687Additionally there are 3 supported transport protocols for NVMe,
688``nvmet_rdma``, ``nvmet_tcp``, and ``nvmet_fc``, and when the ``nvmet`` target
689is selected the protocol, prefix, and port defaults will change to more
690sensible defaults for NVMe::
691
692 CINDER_TARGET_HELPER="nvmet"
693 CINDER_TARGET_PROTOCOL="nvmet_rdma"
694 CINDER_TARGET_PREFIX="nvme-subsystem-1"
695 CINDER_TARGET_PORT=4420
696
697When selecting the RDMA transport protocol DevStack will create on Cinder nodes
698a Software RoCE device on top of the ``HOST_IP_IFACE`` and if it is not defined
699then on top of the interface with IP address ``HOST_IP`` or ``HOST_IPV6``.
700
701This Soft-RoCE device will always be created on the Nova compute side since we
702cannot tell beforehand whether there will be an RDMA connection or not.
703
Ian Wienand7d5be292015-08-10 13:39:17 +1000704
705Keystone
706~~~~~~~~
707
708Multi-Region Setup
709++++++++++++++++++
710
711We want to setup two devstack (RegionOne and RegionTwo) with shared
712keystone (same users and services) and horizon. Keystone and Horizon
713will be located in RegionOne. Full spec is available at:
714`<https://wiki.openstack.org/wiki/Heat/Blueprints/Multi_Region_Support_for_Heat>`__.
715
716In RegionOne:
717
718::
719
720 REGION_NAME=RegionOne
721
722In RegionTwo:
723
724::
henriquetrutaf2126222016-01-05 13:43:18 -0300725
Ian Wienand7d5be292015-08-10 13:39:17 +1000726 disable_service horizon
727 KEYSTONE_SERVICE_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE>
Ian Wienand7d5be292015-08-10 13:39:17 +1000728 REGION_NAME=RegionTwo
zhiyuan_cai6f1781f2016-04-07 18:36:46 +0800729 KEYSTONE_REGION_NAME=RegionOne
730
731In the devstack for RegionOne, we set REGION_NAME as RegionOne, so region of
732the services started in this devstack are registered as RegionOne. In devstack
733for RegionTwo, similarly, we set REGION_NAME as RegionTwo since we want
734services started in this devstack to be registered in RegionTwo. But Keystone
735service is started and registered in RegionOne, not RegionTwo, so we use
736KEYSTONE_REGION_NAME to specify the region of Keystone service.
737KEYSTONE_REGION_NAME has a default value the same as REGION_NAME thus we omit
738it in the configuration of RegionOne.
henriquetrutaf2126222016-01-05 13:43:18 -0300739
Dan Smithc8b66ff2021-07-19 11:14:18 -0700740Glance
741++++++
742
743The default image size quota of 1GiB may be too small if larger images
744are to be used. Change the default at setup time with:
745
746::
747
748 GLANCE_LIMIT_IMAGE_SIZE_TOTAL=5000
749
750or at runtime via:
751
752::
753
Masayuki Igawaf49b4352022-09-22 11:22:21 +0900754 openstack --os-cloud devstack-system-admin registered limit set \
Dan Smithc8b66ff2021-07-19 11:14:18 -0700755 --service glance --default-limit 5000 --region RegionOne image_size_total
756
Markus Zoeller14728c72017-05-29 15:39:21 +0200757.. _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!