blob: 05a21cde5cd6ad3a932a087af1bf1efc704e2c22 [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
98Minimal Configuration
Sean Dague07d7e5b2014-11-17 07:10:14 -050099=====================
Sean M. Collins09e550c2014-10-21 11:40:08 -0400100
101While ``stack.sh`` is happy to run without a ``localrc`` section in
102``local.conf``, devlife is better when there are a few minimal variables
103set. This is an example of a minimal configuration that touches the
104values that most often need to be set.
105
106- no logging
107- pre-set the passwords to prevent interactive prompts
108- move network ranges away from the local network (``FIXED_RANGE`` and
109 ``FLOATING_RANGE``, commented out below)
110- set the host IP if detection is unreliable (``HOST_IP``, commented
111 out below)
112
113::
114
115 [[local|localrc]]
116 ADMIN_PASSWORD=secrete
117 DATABASE_PASSWORD=$ADMIN_PASSWORD
118 RABBIT_PASSWORD=$ADMIN_PASSWORD
119 SERVICE_PASSWORD=$ADMIN_PASSWORD
120 SERVICE_TOKEN=a682f596-76f3-11e3-b3b2-e716f9080d50
121 #FIXED_RANGE=172.31.1.0/24
122 #FLOATING_RANGE=192.168.20.0/25
123 #HOST_IP=10.3.4.5
124
125If the ``*_PASSWORD`` variables are not set here you will be prompted to
126enter values for them by ``stack.sh``.
127
128The network ranges must not overlap with any networks in use on the
129host. Overlap is not uncommon as RFC-1918 'private' ranges are commonly
130used for both the local networking and Nova's fixed and floating ranges.
131
132``HOST_IP`` is normally detected on the first run of ``stack.sh`` but
133often is indeterminate on later runs due to the IP being moved from an
Juan Antonio Osorio Roblesfe6dccb2014-11-28 13:12:14 +0200134Ethernet interface to a bridge on the host. Setting it here also makes it
Sean M. Collins09e550c2014-10-21 11:40:08 -0400135available for ``openrc`` to set ``OS_AUTH_URL``. ``HOST_IP`` is not set
136by default.
137
138Common Configuration Variables
Sean Dague07d7e5b2014-11-17 07:10:14 -0500139==============================
Sean M. Collins09e550c2014-10-21 11:40:08 -0400140
Sean Dague07d7e5b2014-11-17 07:10:14 -0500141Installation Directory
142----------------------
143
Sean M. Collins09e550c2014-10-21 11:40:08 -0400144 | *Default: ``DEST=/opt/stack``*
145 | The DevStack install directory is set by the ``DEST`` variable.
146 | By setting it early in the ``localrc`` section you can reference it
147 in later variables. It can be useful to set it even though it is not
148 changed from the default value.
149 |
150
151 ::
152
153 DEST=/opt/stack
154
Sean Dague07d7e5b2014-11-17 07:10:14 -0500155Libraries from Git
156------------------
157
158 | *Default: ``LIBS_FROM_GIT=""``*
159
160 | By default devstack installs OpenStack server components from
161 git, however it installs client libraries from released versions
162 on pypi. This is appropriate if you are working on server
163 development, but if you want to see how an unreleased version of
164 the client affects the system you can have devstack install it
165 from upstream, or from local git trees.
166 | Multiple libraries can be specified as a comma separated list.
167 |
168
169 ::
170
171 LIBS_FROM_GIT=python-keystoneclient,oslo.config
172
Dean Troyer5686dbc2015-03-09 14:27:51 -0500173Virtual Environments
174--------------------
175
176 | *Default: ``USE_VENV=False``*
177 | Enable the use of Python virtual environments by setting ``USE_VENV``
178 to ``True``. This will enable the creation of venvs for each project
179 that is defined in the ``PROJECT_VENV`` array.
180
181 | *Default: ``PROJECT_VENV['<project>']='<project-dir>.venv'*
182 | Each entry in the ``PROJECT_VENV`` array contains the directory name
183 of a venv to be used for the project. The array index is the project
184 name. Multiple projects can use the same venv if desired.
185
186 ::
187
188 PROJECT_VENV["glance"]=${GLANCE_DIR}.venv
189
190 | *Default: ``ADDITIONAL_VENV_PACKAGES=""``*
191 | A comma-separated list of additional packages to be installed into each
192 venv. Often projects will not have certain packages listed in its
193 ``requirements.txt`` file because they are 'optional' requirements,
194 i.e. only needed for certain configurations. By default, the enabled
195 databases will have their Python bindings added when they are enabled.
196
Sean Dague07d7e5b2014-11-17 07:10:14 -0500197Enable Logging
198--------------
199
Sean M. Collins09e550c2014-10-21 11:40:08 -0400200 | *Defaults: ``LOGFILE="" LOGDAYS=7 LOG_COLOR=True``*
201 | By default ``stack.sh`` output is only written to the console
202 where is runs. It can be sent to a file in addition to the console
203 by setting ``LOGFILE`` to the fully-qualified name of the
204 destination log file. A timestamp will be appended to the given
205 filename for each run of ``stack.sh``.
206 |
207
208 ::
209
210 LOGFILE=$DEST/logs/stack.sh.log
211
212 Old log files are cleaned automatically if ``LOGDAYS`` is set to the
213 number of days of old log files to keep.
214
215 ::
216
217 LOGDAYS=1
218
219 The some of the project logs (Nova, Cinder, etc) will be colorized
220 by default (if ``SYSLOG`` is not set below); this can be turned off
221 by setting ``LOG_COLOR`` False.
222
223 ::
224
225 LOG_COLOR=False
226
Dean Troyerdde41d02014-12-09 17:47:57 -0600227Logging the Service Output
228--------------------------
Sean Dague07d7e5b2014-11-17 07:10:14 -0500229
Dean Troyerdde41d02014-12-09 17:47:57 -0600230 | *Default: ``LOGDIR=""``*
231 | DevStack will log the stdout output of the services it starts.
232 When using ``screen`` this logs the output in the screen windows
233 to a file. Without ``screen`` this simply redirects stdout of
234 the service process to a file in ``LOGDIR``.
Sean M. Collins09e550c2014-10-21 11:40:08 -0400235 |
236
237 ::
238
Dean Troyerdde41d02014-12-09 17:47:57 -0600239 LOGDIR=$DEST/logs
Sean M. Collins09e550c2014-10-21 11:40:08 -0400240
241 *Note the use of ``DEST`` to locate the main install directory; this
242 is why we suggest setting it in ``local.conf``.*
243
Sean Dague07d7e5b2014-11-17 07:10:14 -0500244Enabling Syslog
245---------------
246
Sean M. Collins09e550c2014-10-21 11:40:08 -0400247 | *Default: ``SYSLOG=False SYSLOG_HOST=$HOST_IP SYSLOG_PORT=516``*
248 | Logging all services to a single syslog can be convenient. Enable
249 syslogging by setting ``SYSLOG`` to ``True``. If the destination log
250 host is not localhost ``SYSLOG_HOST`` and ``SYSLOG_PORT`` can be
251 used to direct the message stream to the log host.
252 |
253
254 ::
255
256 SYSLOG=True
257 SYSLOG_HOST=$HOST_IP
258 SYSLOG_PORT=516
259
260A clean install every time
Sean Dague07d7e5b2014-11-17 07:10:14 -0500261--------------------------
262
Sean M. Collins09e550c2014-10-21 11:40:08 -0400263 | *Default: ``RECLONE=""``*
264 | By default ``stack.sh`` only clones the project repos if they do
265 not exist in ``$DEST``. ``stack.sh`` will freshen each repo on each
266 run if ``RECLONE`` is set to ``yes``. This avoids having to manually
267 remove repos in order to get the current branch from ``$GIT_BASE``.
268 |
269
270 ::
271
272 RECLONE=yes
273
Sean Dague07d7e5b2014-11-17 07:10:14 -0500274Swift
275-----
276
277 | Default: SWIFT_HASH=""
278 | SWIFT_REPLICAS=1
279 | SWIFT_DATA_DIR=$DEST/data/swift
280
281 | Swift is now used as the back-end for the S3-like object store.
282 When enabled Nova's objectstore (n-obj in ENABLED_SERVICES) is
283 automatically disabled. Enable Swift by adding it services to
284 ENABLED_SERVICES: enable_service s-proxy s-object s-container
285 s-account
Sean M. Collins09e550c2014-10-21 11:40:08 -0400286
287 Setting Swift's hash value is required and you will be prompted for
288 it if Swift is enabled so just set it to something already:
289
290 ::
291
292 SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5
293
294 For development purposes the default number of replicas is set to
295 ``1`` to reduce the overhead required. To better simulate a
296 production deployment set this to ``3`` or more.
297
298 ::
299
300 SWIFT_REPLICAS=3
301
302 The data for Swift is stored in the source tree by default (in
303 ``$DEST/swift/data``) and can be moved by setting
304 ``SWIFT_DATA_DIR``. The specified directory will be created if it
305 does not exist.
306
307 ::
308
309 SWIFT_DATA_DIR=$DEST/data/swift
310
311 *Note: Previously just enabling ``swift`` was sufficient to start
312 the Swift services. That does not provide proper service
313 granularity, particularly in multi-host configurations, and is
314 considered deprecated. Some service combination tests now check for
315 specific Swift services and the old blanket acceptance will longer
316 work correctly.*
317
318Service Catalog Backend
Sean Dague07d7e5b2014-11-17 07:10:14 -0500319-----------------------
320
Sean M. Collins09e550c2014-10-21 11:40:08 -0400321 | *Default: ``KEYSTONE_CATALOG_BACKEND=sql``*
322 | DevStack uses Keystone's ``sql`` service catalog backend. An
323 alternate ``template`` backend is also available. However, it does
324 not support the ``service-*`` and ``endpoint-*`` commands of the
325 ``keystone`` CLI. To do so requires the ``sql`` backend be enabled:
326 |
327
328 ::
329
330 KEYSTONE_CATALOG_BACKEND=template
331
332 DevStack's default configuration in ``sql`` mode is set in
333 ``files/keystone_data.sh``
334
335Cinder
Sean Dague07d7e5b2014-11-17 07:10:14 -0500336------
337
Sean M. Collins09e550c2014-10-21 11:40:08 -0400338 | Default:
339 | VOLUME_GROUP="stack-volumes" VOLUME_NAME_PREFIX="volume-" VOLUME_BACKING_FILE_SIZE=10250M
340 | The logical volume group used to hold the Cinder-managed volumes
341 is set by ``VOLUME_GROUP``, the logical volume name prefix is set
342 with ``VOLUME_NAME_PREFIX`` and the size of the volume backing file
343 is set with ``VOLUME_BACKING_FILE_SIZE``.
344 |
345
346 ::
347
348 VOLUME_GROUP="stack-volumes"
349 VOLUME_NAME_PREFIX="volume-"
350 VOLUME_BACKING_FILE_SIZE=10250M
351
352Multi-host DevStack
Sean Dague07d7e5b2014-11-17 07:10:14 -0500353-------------------
354
Sean M. Collins09e550c2014-10-21 11:40:08 -0400355 | *Default: ``MULTI_HOST=False``*
356 | Running DevStack with multiple hosts requires a custom
357 ``local.conf`` section for each host. The master is the same as a
358 single host installation with ``MULTI_HOST=True``. The slaves have
359 fewer services enabled and a couple of host variables pointing to
360 the master.
361 | **Master**
362
363 ::
364
365 MULTI_HOST=True
366
367 **Slave**
368
369 ::
370
371 MYSQL_HOST=w.x.y.z
372 RABBIT_HOST=w.x.y.z
373 GLANCE_HOSTPORT=w.x.y.z:9292
374 ENABLED_SERVICES=n-vol,n-cpu,n-net,n-api
375
John Davidge21529a52014-06-30 09:55:11 -0400376IP Version
377 | Default: ``IP_VERSION=4``
378 | This setting can be used to configure DevStack to create either an IPv4,
379 IPv6, or dual stack tenant data network by setting ``IP_VERSION`` to
380 either ``IP_VERSION=4``, ``IP_VERSION=6``, or ``IP_VERSION=4+6``
381 respectively. This functionality requires that the Neutron networking
382 service is enabled by setting the following options:
383 |
384
385 ::
386
387 disable_service n-net
388 enable_service q-svc q-agt q-dhcp q-l3
389
390 | The following optional variables can be used to alter the default IPv6
391 behavior:
392 |
393
394 ::
395
396 IPV6_RA_MODE=slaac
397 IPV6_ADDRESS_MODE=slaac
398 FIXED_RANGE_V6=fd$IPV6_GLOBAL_ID::/64
399 IPV6_PRIVATE_NETWORK_GATEWAY=fd$IPV6_GLOBAL_ID::1
400
401 | *Note: ``FIXED_RANGE_V6`` and ``IPV6_PRIVATE_NETWORK_GATEWAY``
402 can be configured with any valid IPv6 prefix. The default values make
403 use of an auto-generated ``IPV6_GLOBAL_ID`` to comply with RFC 4193.*
404
Thanassis Parathyrasa03ed372015-03-12 22:15:50 +0200405Unit tests dependencies install
406-------------------------------
407
408 | *Default: ``INSTALL_TESTONLY_PACKAGES=False``*
409 | In order to be able to run unit tests with script ``run_test.sh``,
410 the required package dependencies need to be installed.
411 Setting this option as below does the work.
412
413 ::
414
415 INSTALL_TESTONLY_PACKAGES=True
416
Sean M. Collins09e550c2014-10-21 11:40:08 -0400417Examples
Sean Dague07d7e5b2014-11-17 07:10:14 -0500418========
Sean M. Collins09e550c2014-10-21 11:40:08 -0400419
420- Eliminate a Cinder pass-through (``CINDER_PERIODIC_INTERVAL``):
421
422 ::
423
424 [[post-config|$CINDER_CONF]]
425 [DEFAULT]
426 periodic_interval = 60
427
428- Sample ``local.conf`` with screen logging enabled:
429
430 ::
431
432 [[local|localrc]]
433 FIXED_RANGE=10.254.1.0/24
434 NETWORK_GATEWAY=10.254.1.1
435 LOGDAYS=1
Dean Troyerdde41d02014-12-09 17:47:57 -0600436 LOGDIR=$DEST/logs
437 LOGFILE=$LOGDIR/stack.sh.log
Sean M. Collins09e550c2014-10-21 11:40:08 -0400438 ADMIN_PASSWORD=quiet
439 DATABASE_PASSWORD=$ADMIN_PASSWORD
440 RABBIT_PASSWORD=$ADMIN_PASSWORD
441 SERVICE_PASSWORD=$ADMIN_PASSWORD
442 SERVICE_TOKEN=a682f596-76f3-11e3-b3b2-e716f9080d50