blob: 6052576e98a35d28f87645a64dd24b472ebd701f [file] [log] [blame]
Dean Troyer0986a7b2014-10-29 22:08:13 -05001=============
2Configuration
3=============
Sean M. Collins09e550c2014-10-21 11:40:08 -04004
5DevStack has always tried to be mostly-functional with a minimal amount
6of configuration. The number of options has ballooned as projects add
7features, new projects added and more combinations need to be tested.
8Historically DevStack obtained all local configuration and
9customizations from a ``localrc`` file. The number of configuration
10variables that are simply passed-through to the individual project
11configuration files is also increasing. The old mechanism for this
12(``EXTRAS_OPTS`` and friends) required specific code for each file and
13did not scale well.
14
15In Oct 2013 a new configuration method was introduced (in `review
1646768 <https://review.openstack.org/#/c/46768/>`__) to hopefully
17simplify this process and meet the following goals:
18
19- contain all non-default local configuration in a single file
20- be backward-compatible with ``localrc`` to smooth the transition
21 process
22- allow settings in arbitrary configuration files to be changed
23
24local.conf
Sean Dague07d7e5b2014-11-17 07:10:14 -050025==========
Sean M. Collins09e550c2014-10-21 11:40:08 -040026
27The new configuration file is ``local.conf`` and resides in the root
28DevStack directory like the old ``localrc`` file. It is a modified INI
29format file that introduces a meta-section header to carry additional
30information regarding the configuration files to be changed.
31
32The new header is similar to a normal INI section header but with double
33brackets (``[[ ... ]]``) and two internal fields separated by a pipe
34(``|``):
35
36::
37
38 [[ <phase> | <config-file-name> ]]
39
40where ``<phase>`` is one of a set of phase names defined by ``stack.sh``
41and ``<config-file-name>`` is the configuration filename. The filename
42is eval'ed in the ``stack.sh`` context so all environment variables are
43available and may be used. Using the project config file variables in
44the header is strongly suggested (see the ``NOVA_CONF`` example below).
45If the path of the config file does not exist it is skipped.
46
47The defined phases are:
48
49- **local** - extracts ``localrc`` from ``local.conf`` before
50 ``stackrc`` is sourced
51- **pre-install** - runs after the system packages are installed but
52 before any of the source repositories are installed
53- **install** - runs immediately after the repo installations are
54 complete
55- **post-config** - runs after the layer 2 services are configured and
56 before they are started
57- **extra** - runs after services are started and before any files in
58 ``extra.d`` are executed
59
60The file is processed strictly in sequence; meta-sections may be
61specified more than once but if any settings are duplicated the last to
62appear in the file will be used.
63
64::
65
66 [[post-config|$NOVA_CONF]]
67 [DEFAULT]
68 use_syslog = True
69
70 [osapi_v3]
71 enabled = False
72
73A specific meta-section ``local|localrc`` is used to provide a default
74``localrc`` file (actually ``.localrc.auto``). This allows all custom
75settings for DevStack to be contained in a single file. If ``localrc``
76exists it will be used instead to preserve backward-compatibility. More
Dean Troyerea3cdfa2014-11-08 08:29:16 -060077details on the :doc:`contents of local.conf <local.conf>` are available.
Sean M. Collins09e550c2014-10-21 11:40:08 -040078
79::
80
81 [[local|localrc]]
82 FIXED_RANGE=10.254.1.0/24
83 ADMIN_PASSWORD=speciale
84 LOGFILE=$DEST/logs/stack.sh.log
85
86Note that ``Q_PLUGIN_CONF_FILE`` is unique in that it is assumed to
87*NOT* start with a ``/`` (slash) character. A slash will need to be
88added:
89
90::
91
92 [[post-config|/$Q_PLUGIN_CONF_FILE]]
93
94Also note that the ``localrc`` section is sourced as a shell script
Juan Antonio Osorio Roblesfe6dccb2014-11-28 13:12:14 +020095fragment and MUST conform to the shell requirements, specifically no
Sean M. Collins09e550c2014-10-21 11:40:08 -040096whitespace around ``=`` (equals).
97
James Polley5f2eb6d2015-03-30 17:36:26 +110098.. _minimal-configuration:
99
Sean M. Collins09e550c2014-10-21 11:40:08 -0400100Minimal Configuration
Sean Dague07d7e5b2014-11-17 07:10:14 -0500101=====================
Sean M. Collins09e550c2014-10-21 11:40:08 -0400102
103While ``stack.sh`` is happy to run without a ``localrc`` section in
104``local.conf``, devlife is better when there are a few minimal variables
105set. This is an example of a minimal configuration that touches the
106values that most often need to be set.
107
108- no logging
109- pre-set the passwords to prevent interactive prompts
110- move network ranges away from the local network (``FIXED_RANGE`` and
111 ``FLOATING_RANGE``, commented out below)
112- set the host IP if detection is unreliable (``HOST_IP``, commented
113 out below)
114
115::
116
117 [[local|localrc]]
118 ADMIN_PASSWORD=secrete
119 DATABASE_PASSWORD=$ADMIN_PASSWORD
120 RABBIT_PASSWORD=$ADMIN_PASSWORD
121 SERVICE_PASSWORD=$ADMIN_PASSWORD
122 SERVICE_TOKEN=a682f596-76f3-11e3-b3b2-e716f9080d50
123 #FIXED_RANGE=172.31.1.0/24
124 #FLOATING_RANGE=192.168.20.0/25
125 #HOST_IP=10.3.4.5
126
127If the ``*_PASSWORD`` variables are not set here you will be prompted to
128enter values for them by ``stack.sh``.
129
130The network ranges must not overlap with any networks in use on the
131host. Overlap is not uncommon as RFC-1918 'private' ranges are commonly
132used for both the local networking and Nova's fixed and floating ranges.
133
134``HOST_IP`` is normally detected on the first run of ``stack.sh`` but
135often is indeterminate on later runs due to the IP being moved from an
Juan Antonio Osorio Roblesfe6dccb2014-11-28 13:12:14 +0200136Ethernet interface to a bridge on the host. Setting it here also makes it
Sean M. Collins09e550c2014-10-21 11:40:08 -0400137available for ``openrc`` to set ``OS_AUTH_URL``. ``HOST_IP`` is not set
138by default.
139
Brian Haley180f5eb2015-06-16 13:14:31 -0400140``HOST_IPV6`` is normally detected on the first run of ``stack.sh`` but
141will not be set if there is no IPv6 address on the default Ethernet interface.
142Setting it here also makes it available for ``openrc`` to set ``OS_AUTH_URL``.
143``HOST_IPV6`` is not set by default.
144
Sean M. Collins09e550c2014-10-21 11:40:08 -0400145Common Configuration Variables
Sean Dague07d7e5b2014-11-17 07:10:14 -0500146==============================
Sean M. Collins09e550c2014-10-21 11:40:08 -0400147
Sean Dague07d7e5b2014-11-17 07:10:14 -0500148Installation Directory
149----------------------
150
Sean M. Collins09e550c2014-10-21 11:40:08 -0400151 | *Default: ``DEST=/opt/stack``*
152 | The DevStack install directory is set by the ``DEST`` variable.
153 | By setting it early in the ``localrc`` section you can reference it
154 in later variables. It can be useful to set it even though it is not
155 changed from the default value.
156 |
157
158 ::
159
160 DEST=/opt/stack
161
Sean Dague07d7e5b2014-11-17 07:10:14 -0500162Libraries from Git
163------------------
164
165 | *Default: ``LIBS_FROM_GIT=""``*
166
167 | By default devstack installs OpenStack server components from
168 git, however it installs client libraries from released versions
169 on pypi. This is appropriate if you are working on server
170 development, but if you want to see how an unreleased version of
171 the client affects the system you can have devstack install it
172 from upstream, or from local git trees.
173 | Multiple libraries can be specified as a comma separated list.
174 |
175
176 ::
177
178 LIBS_FROM_GIT=python-keystoneclient,oslo.config
179
Dean Troyer5686dbc2015-03-09 14:27:51 -0500180Virtual Environments
181--------------------
182
183 | *Default: ``USE_VENV=False``*
184 | Enable the use of Python virtual environments by setting ``USE_VENV``
185 to ``True``. This will enable the creation of venvs for each project
186 that is defined in the ``PROJECT_VENV`` array.
187
188 | *Default: ``PROJECT_VENV['<project>']='<project-dir>.venv'*
189 | Each entry in the ``PROJECT_VENV`` array contains the directory name
190 of a venv to be used for the project. The array index is the project
191 name. Multiple projects can use the same venv if desired.
192
193 ::
194
195 PROJECT_VENV["glance"]=${GLANCE_DIR}.venv
196
197 | *Default: ``ADDITIONAL_VENV_PACKAGES=""``*
198 | A comma-separated list of additional packages to be installed into each
199 venv. Often projects will not have certain packages listed in its
200 ``requirements.txt`` file because they are 'optional' requirements,
201 i.e. only needed for certain configurations. By default, the enabled
202 databases will have their Python bindings added when they are enabled.
203
Sean Dague07d7e5b2014-11-17 07:10:14 -0500204Enable Logging
205--------------
206
Sean M. Collins09e550c2014-10-21 11:40:08 -0400207 | *Defaults: ``LOGFILE="" LOGDAYS=7 LOG_COLOR=True``*
208 | By default ``stack.sh`` output is only written to the console
Tomoki Sekine1e3a89e2015-06-25 06:35:07 +0900209 where it runs. It can be sent to a file in addition to the console
Sean M. Collins09e550c2014-10-21 11:40:08 -0400210 by setting ``LOGFILE`` to the fully-qualified name of the
211 destination log file. A timestamp will be appended to the given
212 filename for each run of ``stack.sh``.
213 |
214
215 ::
216
217 LOGFILE=$DEST/logs/stack.sh.log
218
219 Old log files are cleaned automatically if ``LOGDAYS`` is set to the
220 number of days of old log files to keep.
221
222 ::
223
224 LOGDAYS=1
225
226 The some of the project logs (Nova, Cinder, etc) will be colorized
227 by default (if ``SYSLOG`` is not set below); this can be turned off
228 by setting ``LOG_COLOR`` False.
229
230 ::
231
232 LOG_COLOR=False
233
Dean Troyerdde41d02014-12-09 17:47:57 -0600234Logging the Service Output
235--------------------------
Sean Dague07d7e5b2014-11-17 07:10:14 -0500236
Dean Troyerdde41d02014-12-09 17:47:57 -0600237 | *Default: ``LOGDIR=""``*
238 | DevStack will log the stdout output of the services it starts.
239 When using ``screen`` this logs the output in the screen windows
240 to a file. Without ``screen`` this simply redirects stdout of
241 the service process to a file in ``LOGDIR``.
Sean M. Collins09e550c2014-10-21 11:40:08 -0400242 |
243
244 ::
245
Dean Troyerdde41d02014-12-09 17:47:57 -0600246 LOGDIR=$DEST/logs
Sean M. Collins09e550c2014-10-21 11:40:08 -0400247
248 *Note the use of ``DEST`` to locate the main install directory; this
249 is why we suggest setting it in ``local.conf``.*
250
Sean Dague07d7e5b2014-11-17 07:10:14 -0500251Enabling Syslog
252---------------
253
Sean M. Collins09e550c2014-10-21 11:40:08 -0400254 | *Default: ``SYSLOG=False SYSLOG_HOST=$HOST_IP SYSLOG_PORT=516``*
255 | Logging all services to a single syslog can be convenient. Enable
256 syslogging by setting ``SYSLOG`` to ``True``. If the destination log
257 host is not localhost ``SYSLOG_HOST`` and ``SYSLOG_PORT`` can be
258 used to direct the message stream to the log host.
259 |
260
261 ::
262
263 SYSLOG=True
264 SYSLOG_HOST=$HOST_IP
265 SYSLOG_PORT=516
266
267A clean install every time
Sean Dague07d7e5b2014-11-17 07:10:14 -0500268--------------------------
269
Sean M. Collins09e550c2014-10-21 11:40:08 -0400270 | *Default: ``RECLONE=""``*
271 | By default ``stack.sh`` only clones the project repos if they do
272 not exist in ``$DEST``. ``stack.sh`` will freshen each repo on each
273 run if ``RECLONE`` is set to ``yes``. This avoids having to manually
274 remove repos in order to get the current branch from ``$GIT_BASE``.
275 |
276
277 ::
278
279 RECLONE=yes
280
Chris Dentebdd9ac2015-03-04 12:35:14 +0000281Upgrade packages installed by pip
282---------------------------------
283
284 | *Default: ``PIP_UPGRADE=""``*
285 | By default ``stack.sh`` only installs Python packages if no version
286 is currently installed or the current version does not match a specified
287 requirement. If ``PIP_UPGRADE`` is set to ``True`` then existing required
288 Python packages will be upgraded to the most recent version that
289 matches requirements.
290 |
291
292 ::
293
294 PIP_UPGRADE=True
295
Sean Dague07d7e5b2014-11-17 07:10:14 -0500296Swift
297-----
298
299 | Default: SWIFT_HASH=""
300 | SWIFT_REPLICAS=1
301 | SWIFT_DATA_DIR=$DEST/data/swift
302
303 | Swift is now used as the back-end for the S3-like object store.
304 When enabled Nova's objectstore (n-obj in ENABLED_SERVICES) is
305 automatically disabled. Enable Swift by adding it services to
306 ENABLED_SERVICES: enable_service s-proxy s-object s-container
307 s-account
Sean M. Collins09e550c2014-10-21 11:40:08 -0400308
309 Setting Swift's hash value is required and you will be prompted for
310 it if Swift is enabled so just set it to something already:
311
312 ::
313
314 SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5
315
316 For development purposes the default number of replicas is set to
317 ``1`` to reduce the overhead required. To better simulate a
318 production deployment set this to ``3`` or more.
319
320 ::
321
322 SWIFT_REPLICAS=3
323
324 The data for Swift is stored in the source tree by default (in
325 ``$DEST/swift/data``) and can be moved by setting
326 ``SWIFT_DATA_DIR``. The specified directory will be created if it
327 does not exist.
328
329 ::
330
331 SWIFT_DATA_DIR=$DEST/data/swift
332
333 *Note: Previously just enabling ``swift`` was sufficient to start
334 the Swift services. That does not provide proper service
335 granularity, particularly in multi-host configurations, and is
336 considered deprecated. Some service combination tests now check for
337 specific Swift services and the old blanket acceptance will longer
338 work correctly.*
339
340Service Catalog Backend
Sean Dague07d7e5b2014-11-17 07:10:14 -0500341-----------------------
342
Sean M. Collins09e550c2014-10-21 11:40:08 -0400343 | *Default: ``KEYSTONE_CATALOG_BACKEND=sql``*
344 | DevStack uses Keystone's ``sql`` service catalog backend. An
345 alternate ``template`` backend is also available. However, it does
346 not support the ``service-*`` and ``endpoint-*`` commands of the
347 ``keystone`` CLI. To do so requires the ``sql`` backend be enabled:
348 |
349
350 ::
351
352 KEYSTONE_CATALOG_BACKEND=template
353
354 DevStack's default configuration in ``sql`` mode is set in
355 ``files/keystone_data.sh``
356
357Cinder
Sean Dague07d7e5b2014-11-17 07:10:14 -0500358------
359
Sean M. Collins09e550c2014-10-21 11:40:08 -0400360 | Default:
361 | VOLUME_GROUP="stack-volumes" VOLUME_NAME_PREFIX="volume-" VOLUME_BACKING_FILE_SIZE=10250M
362 | The logical volume group used to hold the Cinder-managed volumes
363 is set by ``VOLUME_GROUP``, the logical volume name prefix is set
364 with ``VOLUME_NAME_PREFIX`` and the size of the volume backing file
365 is set with ``VOLUME_BACKING_FILE_SIZE``.
366 |
367
368 ::
369
370 VOLUME_GROUP="stack-volumes"
371 VOLUME_NAME_PREFIX="volume-"
372 VOLUME_BACKING_FILE_SIZE=10250M
373
374Multi-host DevStack
Sean Dague07d7e5b2014-11-17 07:10:14 -0500375-------------------
376
Sean M. Collins09e550c2014-10-21 11:40:08 -0400377 | *Default: ``MULTI_HOST=False``*
378 | Running DevStack with multiple hosts requires a custom
379 ``local.conf`` section for each host. The master is the same as a
380 single host installation with ``MULTI_HOST=True``. The slaves have
381 fewer services enabled and a couple of host variables pointing to
382 the master.
383 | **Master**
384
385 ::
386
387 MULTI_HOST=True
388
389 **Slave**
390
391 ::
392
393 MYSQL_HOST=w.x.y.z
394 RABBIT_HOST=w.x.y.z
395 GLANCE_HOSTPORT=w.x.y.z:9292
396 ENABLED_SERVICES=n-vol,n-cpu,n-net,n-api
397
John Davidge21529a52014-06-30 09:55:11 -0400398IP Version
Brian Haley180f5eb2015-06-16 13:14:31 -0400399----------
400
Guillaume Giamarchi93ee8c82015-05-26 02:08:44 +0200401 | Default: ``IP_VERSION=4+6``
John Davidge21529a52014-06-30 09:55:11 -0400402 | This setting can be used to configure DevStack to create either an IPv4,
403 IPv6, or dual stack tenant data network by setting ``IP_VERSION`` to
404 either ``IP_VERSION=4``, ``IP_VERSION=6``, or ``IP_VERSION=4+6``
405 respectively. This functionality requires that the Neutron networking
406 service is enabled by setting the following options:
407 |
408
409 ::
410
411 disable_service n-net
412 enable_service q-svc q-agt q-dhcp q-l3
413
414 | The following optional variables can be used to alter the default IPv6
415 behavior:
416 |
417
418 ::
419
420 IPV6_RA_MODE=slaac
421 IPV6_ADDRESS_MODE=slaac
422 FIXED_RANGE_V6=fd$IPV6_GLOBAL_ID::/64
423 IPV6_PRIVATE_NETWORK_GATEWAY=fd$IPV6_GLOBAL_ID::1
424
425 | *Note: ``FIXED_RANGE_V6`` and ``IPV6_PRIVATE_NETWORK_GATEWAY``
426 can be configured with any valid IPv6 prefix. The default values make
427 use of an auto-generated ``IPV6_GLOBAL_ID`` to comply with RFC 4193.*
Brian Haley180f5eb2015-06-16 13:14:31 -0400428 |
429
430 | Default: ``SERVICE_IP_VERSION=4``
431 | This setting can be used to configure DevStack to enable services to
432 operate over either IPv4 or IPv6, by setting ``SERVICE_IP_VERSION`` to
433 either ``SERVICE_IP_VERSION=4`` or ``SERVICE_IP_VERSION=6`` respectively.
434 When set to ``4`` devstack services will open listen sockets on 0.0.0.0
435 and service endpoints will be registered using ``HOST_IP`` as the address.
436 When set to ``6`` devstack services will open listen sockets on :: and
437 service endpoints will be registered using ``HOST_IPV6`` as the address.
438 The default value for this setting is ``4``. Dual-mode support, for
439 example ``4+6`` is not currently supported.
440 | The following optional variable can be used to alter the default IPv6
441 address used:
442 |
443
444 ::
445
446 HOST_IPV6=${some_local_ipv6_address}
John Davidge21529a52014-06-30 09:55:11 -0400447
Sean M. Collins09e550c2014-10-21 11:40:08 -0400448Examples
Sean Dague07d7e5b2014-11-17 07:10:14 -0500449========
Sean M. Collins09e550c2014-10-21 11:40:08 -0400450
451- Eliminate a Cinder pass-through (``CINDER_PERIODIC_INTERVAL``):
452
453 ::
454
455 [[post-config|$CINDER_CONF]]
456 [DEFAULT]
457 periodic_interval = 60
458
459- Sample ``local.conf`` with screen logging enabled:
460
461 ::
462
463 [[local|localrc]]
464 FIXED_RANGE=10.254.1.0/24
465 NETWORK_GATEWAY=10.254.1.1
466 LOGDAYS=1
Dean Troyerdde41d02014-12-09 17:47:57 -0600467 LOGDIR=$DEST/logs
468 LOGFILE=$LOGDIR/stack.sh.log
Sean M. Collins09e550c2014-10-21 11:40:08 -0400469 ADMIN_PASSWORD=quiet
470 DATABASE_PASSWORD=$ADMIN_PASSWORD
471 RABBIT_PASSWORD=$ADMIN_PASSWORD
472 SERVICE_PASSWORD=$ADMIN_PASSWORD
473 SERVICE_TOKEN=a682f596-76f3-11e3-b3b2-e716f9080d50