Dean Troyer | e9819d5 | 2012-03-21 11:25:06 -0500 | [diff] [blame] | 1 | DevStack is a set of scripts and utilities to quickly deploy an OpenStack cloud. |
Anthony Young | 6398787 | 2011-09-30 11:34:43 -0700 | [diff] [blame] | 2 | |
| 3 | # Goals |
| 4 | |
Radoslaw Smigielski | 8c666cf | 2014-05-14 12:36:29 +0100 | [diff] [blame] | 5 | * To quickly build dev OpenStack environments in a clean Ubuntu or Fedora |
| 6 | environment |
| 7 | * To describe working configurations of OpenStack (which code branches |
| 8 | work together? what do config files look like for those branches?) |
| 9 | * To make it easier for developers to dive into OpenStack so that they can |
| 10 | productively contribute without having to understand every part of the |
| 11 | system at once |
Anthony Young | 6398787 | 2011-09-30 11:34:43 -0700 | [diff] [blame] | 12 | * To make it easy to prototype cross-project features |
Radoslaw Smigielski | 8c666cf | 2014-05-14 12:36:29 +0100 | [diff] [blame] | 13 | * To provide an environment for the OpenStack CI testing on every commit |
| 14 | to the projects |
Jesse Andrews | ba23cc7 | 2011-09-11 03:22:13 -0700 | [diff] [blame] | 15 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 16 | Read more at http://devstack.org. |
Jesse Andrews | b69d6ce | 2011-10-13 10:36:00 -0700 | [diff] [blame] | 17 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 18 | IMPORTANT: Be sure to carefully read `stack.sh` and any other scripts you |
| 19 | execute before you run them, as they install software and will alter your |
| 20 | networking configuration. We strongly recommend that you run `stack.sh` |
| 21 | in a clean and disposable vm when you are first getting started. |
Dean Troyer | 2aa2a89 | 2013-08-04 19:53:19 -0500 | [diff] [blame] | 22 | |
Anthony Young | 073d17d | 2011-11-23 12:50:46 -0800 | [diff] [blame] | 23 | # Versions |
| 24 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 25 | The DevStack master branch generally points to trunk versions of OpenStack |
| 26 | components. For older, stable versions, look for branches named |
| 27 | stable/[release] in the DevStack repo. For example, you can do the |
| 28 | following to create a grizzly OpenStack cloud: |
Anthony Young | 073d17d | 2011-11-23 12:50:46 -0800 | [diff] [blame] | 29 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 30 | git checkout stable/grizzly |
Anthony Young | 073d17d | 2011-11-23 12:50:46 -0800 | [diff] [blame] | 31 | ./stack.sh |
| 32 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 33 | You can also pick specific OpenStack project releases by setting the appropriate |
| 34 | `*_BRANCH` variables in the ``localrc`` section of `local.conf` (look in |
| 35 | `stackrc` for the default set). Usually just before a release there will be |
| 36 | milestone-proposed branches that need to be tested:: |
Dean Troyer | ce043c4 | 2012-02-03 22:56:38 -0600 | [diff] [blame] | 37 | |
Steve Kowalik | 047cac5 | 2013-11-07 22:36:10 +1100 | [diff] [blame] | 38 | GLANCE_REPO=git://git.openstack.org/openstack/glance.git |
Dean Troyer | e9819d5 | 2012-03-21 11:25:06 -0500 | [diff] [blame] | 39 | GLANCE_BRANCH=milestone-proposed |
Dean Troyer | ce043c4 | 2012-02-03 22:56:38 -0600 | [diff] [blame] | 40 | |
| 41 | # Start A Dev Cloud |
| 42 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 43 | Installing in a dedicated disposable VM is safer than installing on your |
| 44 | dev machine! Plus you can pick one of the supported Linux distros for |
| 45 | your VM. To start a dev cloud run the following NOT AS ROOT (see |
| 46 | **DevStack Execution Environment** below for more on user accounts): |
Anthony Young | 0e65abf | 2011-09-30 09:24:00 -0700 | [diff] [blame] | 47 | |
| 48 | ./stack.sh |
| 49 | |
Radoslaw Smigielski | 8c666cf | 2014-05-14 12:36:29 +0100 | [diff] [blame] | 50 | When the script finishes executing, you should be able to access OpenStack |
| 51 | endpoints, like so: |
Anthony Young | 6398787 | 2011-09-30 11:34:43 -0700 | [diff] [blame] | 52 | |
Tres Henry | ca85b79 | 2011-10-28 14:00:21 -0700 | [diff] [blame] | 53 | * Horizon: http://myhost/ |
Anthony Young | 6398787 | 2011-09-30 11:34:43 -0700 | [diff] [blame] | 54 | * Keystone: http://myhost:5000/v2.0/ |
| 55 | |
Radoslaw Smigielski | 8c666cf | 2014-05-14 12:36:29 +0100 | [diff] [blame] | 56 | We also provide an environment file that you can use to interact with your |
| 57 | cloud via CLI: |
Anthony Young | 073d17d | 2011-11-23 12:50:46 -0800 | [diff] [blame] | 58 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 59 | # source openrc file to load your environment with OpenStack CLI creds |
Anthony Young | 073d17d | 2011-11-23 12:50:46 -0800 | [diff] [blame] | 60 | . openrc |
| 61 | # list instances |
| 62 | nova list |
Dean Troyer | 0bd2410 | 2012-03-08 00:33:54 -0600 | [diff] [blame] | 63 | |
| 64 | If the EC2 API is your cup-o-tea, you can create credentials and use euca2ools: |
| 65 | |
| 66 | # source eucarc to generate EC2 credentials and set up the environment |
| 67 | . eucarc |
Anthony Young | 073d17d | 2011-11-23 12:50:46 -0800 | [diff] [blame] | 68 | # list instances using ec2 api |
| 69 | euca-describe-instances |
| 70 | |
Dean Troyer | 23f69d8 | 2013-10-04 12:35:24 -0500 | [diff] [blame] | 71 | # DevStack Execution Environment |
| 72 | |
Radoslaw Smigielski | 8c666cf | 2014-05-14 12:36:29 +0100 | [diff] [blame] | 73 | DevStack runs rampant over the system it runs on, installing things and |
| 74 | uninstalling other things. Running this on a system you care about is a recipe |
| 75 | for disappointment, or worse. Alas, we're all in the virtualization business |
| 76 | here, so run it in a VM. And take advantage of the snapshot capabilities |
| 77 | of your hypervisor of choice to reduce testing cycle times. You might even save |
| 78 | enough time to write one more feature before the next feature freeze... |
Dean Troyer | 23f69d8 | 2013-10-04 12:35:24 -0500 | [diff] [blame] | 79 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 80 | ``stack.sh`` needs to have root access for a lot of tasks, but uses ``sudo`` |
| 81 | for all of those tasks. However, it needs to be not-root for most of its |
| 82 | work and for all of the OpenStack services. ``stack.sh`` specifically |
| 83 | does not run if started as root. |
| 84 | |
| 85 | This is a recent change (Oct 2013) from the previous behaviour of |
| 86 | automatically creating a ``stack`` user. Automatically creating |
| 87 | user accounts is not the right response to running as root, so |
Sean Dague | 7d4c7e0 | 2014-03-12 08:05:08 -0400 | [diff] [blame] | 88 | that bit is now an explicit step using ``tools/create-stack-user.sh``. |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 89 | Run that (as root!) or just check it out to see what DevStack's |
| 90 | expectations are for the account it runs under. Many people simply |
| 91 | use their usual login (the default 'ubuntu' login on a UEC image |
| 92 | for example). |
Dean Troyer | 23f69d8 | 2013-10-04 12:35:24 -0500 | [diff] [blame] | 93 | |
Anthony Young | 6398787 | 2011-09-30 11:34:43 -0700 | [diff] [blame] | 94 | # Customizing |
| 95 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 96 | You can override environment variables used in `stack.sh` by creating file |
Roman Bogorodskiy | 4df4a15 | 2013-11-12 12:09:40 +0000 | [diff] [blame] | 97 | name `local.conf` with a ``localrc`` section as shown below. It is likely |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 98 | that you will need to do this to tweak your networking configuration should |
| 99 | you need to access your cloud from a different host. |
| 100 | |
| 101 | [[local|localrc]] |
| 102 | VARIABLE=value |
| 103 | |
| 104 | See the **Local Configuration** section below for more details. |
Chmouel Boudjnah | 782f24e | 2012-02-29 13:42:44 +0000 | [diff] [blame] | 105 | |
Terry Wilson | 428af5a | 2012-11-01 16:12:39 -0400 | [diff] [blame] | 106 | # Database Backend |
| 107 | |
Radoslaw Smigielski | 8c666cf | 2014-05-14 12:36:29 +0100 | [diff] [blame] | 108 | Multiple database backends are available. The available databases are defined |
| 109 | in the lib/databases directory. |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 110 | `mysql` is the default database, choose a different one by putting the |
| 111 | following in the `localrc` section: |
Terry Wilson | 428af5a | 2012-11-01 16:12:39 -0400 | [diff] [blame] | 112 | |
Dean Troyer | afc29fe | 2013-02-07 15:56:24 -0600 | [diff] [blame] | 113 | disable_service mysql |
| 114 | enable_service postgresql |
Terry Wilson | 428af5a | 2012-11-01 16:12:39 -0400 | [diff] [blame] | 115 | |
Dean Troyer | afc29fe | 2013-02-07 15:56:24 -0600 | [diff] [blame] | 116 | `mysql` is the default database. |
Terry Wilson | 428af5a | 2012-11-01 16:12:39 -0400 | [diff] [blame] | 117 | |
ewindisch | 3bae7c2 | 2012-01-18 11:18:35 -0500 | [diff] [blame] | 118 | # RPC Backend |
| 119 | |
| 120 | Multiple RPC backends are available. Currently, this |
| 121 | includes RabbitMQ (default), Qpid, and ZeroMQ. Your backend of |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 122 | choice may be selected via the `localrc` section. |
ewindisch | 3bae7c2 | 2012-01-18 11:18:35 -0500 | [diff] [blame] | 123 | |
| 124 | Note that selecting more than one RPC backend will result in a failure. |
| 125 | |
| 126 | Example (ZeroMQ): |
| 127 | |
| 128 | ENABLED_SERVICES="$ENABLED_SERVICES,-rabbit,-qpid,zeromq" |
| 129 | |
| 130 | Example (Qpid): |
| 131 | |
| 132 | ENABLED_SERVICES="$ENABLED_SERVICES,-rabbit,-zeromq,qpid" |
| 133 | |
zhang-hare | d98a5d0 | 2013-06-21 18:18:02 +0800 | [diff] [blame] | 134 | # Apache Frontend |
| 135 | |
Morgan Fainberg | 46455a3 | 2014-06-20 10:37:18 -0700 | [diff] [blame^] | 136 | Apache web server can be enabled for wsgi services that support being deployed |
| 137 | under HTTPD + mod_wsgi. By default, services that recommend running under |
| 138 | HTTPD + mod_wsgi are deployed under Apache. To use an alternative deployment |
| 139 | strategy (e.g. eventlet) for services that support an alternative to HTTPD + |
| 140 | mod_wsgi set ``ENABLE_HTTPD_MOD_WSGI_SERVICES`` to ``False`` in your |
| 141 | ``local.conf``. |
zhang-hare | d98a5d0 | 2013-06-21 18:18:02 +0800 | [diff] [blame] | 142 | |
Morgan Fainberg | 46455a3 | 2014-06-20 10:37:18 -0700 | [diff] [blame^] | 143 | Each service that can be run under HTTPD + mod_wsgi also has an override |
| 144 | toggle available that can be set in your ``local.conf``. |
| 145 | |
| 146 | Example (Keystone): |
| 147 | |
| 148 | KEYSTONE_USE_MOD_WSGI="True" |
| 149 | |
| 150 | Example (Swift): |
| 151 | |
| 152 | SWIFT_USE_MOD_WSGI="True" |
zhang-hare | d98a5d0 | 2013-06-21 18:18:02 +0800 | [diff] [blame] | 153 | |
Chmouel Boudjnah | 782f24e | 2012-02-29 13:42:44 +0000 | [diff] [blame] | 154 | # Swift |
| 155 | |
Ian Wienand | 0352f58 | 2013-07-24 13:01:32 +1000 | [diff] [blame] | 156 | Swift is disabled by default. When enabled, it is configured with |
| 157 | only one replica to avoid being IO/memory intensive on a small |
| 158 | vm. When running with only one replica the account, container and |
| 159 | object services will run directly in screen. The others services like |
| 160 | replicator, updaters or auditor runs in background. |
Chmouel Boudjnah | 782f24e | 2012-02-29 13:42:44 +0000 | [diff] [blame] | 161 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 162 | If you would like to enable Swift you can add this to your `localrc` section: |
Chmouel Boudjnah | 0c3a558 | 2013-03-06 10:58:33 +0100 | [diff] [blame] | 163 | |
Ian Wienand | 0352f58 | 2013-07-24 13:01:32 +1000 | [diff] [blame] | 164 | enable_service s-proxy s-object s-container s-account |
Chmouel Boudjnah | 782f24e | 2012-02-29 13:42:44 +0000 | [diff] [blame] | 165 | |
Ian Wienand | 0352f58 | 2013-07-24 13:01:32 +1000 | [diff] [blame] | 166 | If you want a minimal Swift install with only Swift and Keystone you |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 167 | can have this instead in your `localrc` section: |
Chmouel Boudjnah | 504f871 | 2012-03-15 20:43:26 +0000 | [diff] [blame] | 168 | |
Doug Hellmann | f04178f | 2012-07-05 17:10:03 -0400 | [diff] [blame] | 169 | disable_all_services |
Chmouel Boudjnah | 0c3a558 | 2013-03-06 10:58:33 +0100 | [diff] [blame] | 170 | enable_service key mysql s-proxy s-object s-container s-account |
Chmouel Boudjnah | 504f871 | 2012-03-15 20:43:26 +0000 | [diff] [blame] | 171 | |
Ian Wienand | 0352f58 | 2013-07-24 13:01:32 +1000 | [diff] [blame] | 172 | If you only want to do some testing of a real normal swift cluster |
| 173 | with multiple replicas you can do so by customizing the variable |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 174 | `SWIFT_REPLICAS` in your `localrc` section (usually to 3). |
Chmouel Boudjnah | 0c3a558 | 2013-03-06 10:58:33 +0100 | [diff] [blame] | 175 | |
| 176 | # Swift S3 |
Chmouel Boudjnah | 504f871 | 2012-03-15 20:43:26 +0000 | [diff] [blame] | 177 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 178 | If you are enabling `swift3` in `ENABLED_SERVICES` DevStack will |
Ian Wienand | 0352f58 | 2013-07-24 13:01:32 +1000 | [diff] [blame] | 179 | install the swift3 middleware emulation. Swift will be configured to |
| 180 | act as a S3 endpoint for Keystone so effectively replacing the |
| 181 | `nova-objectstore`. |
Chmouel Boudjnah | 504f871 | 2012-03-15 20:43:26 +0000 | [diff] [blame] | 182 | |
Ian Wienand | 0352f58 | 2013-07-24 13:01:32 +1000 | [diff] [blame] | 183 | Only Swift proxy server is launched in the screen session all other |
| 184 | services are started in background and managed by `swift-init` tool. |
Oleg Bondarev | 1f11f9a | 2013-03-25 05:34:23 -0700 | [diff] [blame] | 185 | |
Mark McClain | b05c876 | 2013-07-06 23:29:39 -0400 | [diff] [blame] | 186 | # Neutron |
Oleg Bondarev | 1f11f9a | 2013-03-25 05:34:23 -0700 | [diff] [blame] | 187 | |
| 188 | Basic Setup |
| 189 | |
Ian Wienand | 0352f58 | 2013-07-24 13:01:32 +1000 | [diff] [blame] | 190 | In order to enable Neutron a single node setup, you'll need the |
Dean Troyer | 91baef3 | 2014-02-28 11:11:45 -0600 | [diff] [blame] | 191 | following settings in your `local.conf`: |
Oleg Bondarev | 1f11f9a | 2013-03-25 05:34:23 -0700 | [diff] [blame] | 192 | |
| 193 | disable_service n-net |
| 194 | enable_service q-svc |
| 195 | enable_service q-agt |
| 196 | enable_service q-dhcp |
| 197 | enable_service q-l3 |
| 198 | enable_service q-meta |
Emilien Macchi | 40546f7 | 2013-09-24 15:10:25 +0200 | [diff] [blame] | 199 | enable_service q-metering |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 200 | # Optional, to enable tempest configuration as part of DevStack |
Oleg Bondarev | 1f11f9a | 2013-03-25 05:34:23 -0700 | [diff] [blame] | 201 | enable_service tempest |
| 202 | |
Dean Troyer | cc6b443 | 2013-04-08 15:38:03 -0500 | [diff] [blame] | 203 | Then run `stack.sh` as normal. |
| 204 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 205 | DevStack supports setting specific Neutron configuration flags to the |
| 206 | service, Open vSwitch plugin and LinuxBridge plugin configuration files. |
Dean Troyer | 91baef3 | 2014-02-28 11:11:45 -0600 | [diff] [blame] | 207 | To make use of this feature, the settings can be added to ``local.conf``. |
| 208 | The old ``Q_XXX_EXTRA_XXX_OPTS`` variables are deprecated and will be removed |
| 209 | in the near future. The ``local.conf`` headers for the replacements are: |
Kyle Mestery | ebfac64 | 2013-05-17 15:20:56 -0500 | [diff] [blame] | 210 | |
Dean Troyer | 91baef3 | 2014-02-28 11:11:45 -0600 | [diff] [blame] | 211 | * ``Q_SRV_EXTRA_OPTS``: |
Kyle Mestery | ebfac64 | 2013-05-17 15:20:56 -0500 | [diff] [blame] | 212 | |
Dean Troyer | 91baef3 | 2014-02-28 11:11:45 -0600 | [diff] [blame] | 213 | [[post-config|/$Q_PLUGIN_CONF_FILE]] |
| 214 | [linuxbridge] # or [ovs] |
Kyle Mestery | ebfac64 | 2013-05-17 15:20:56 -0500 | [diff] [blame] | 215 | |
Dean Troyer | 91baef3 | 2014-02-28 11:11:45 -0600 | [diff] [blame] | 216 | * ``Q_AGENT_EXTRA_AGENT_OPTS``: |
| 217 | |
| 218 | [[post-config|/$Q_PLUGIN_CONF_FILE]] |
| 219 | [agent] |
| 220 | |
| 221 | * ``Q_AGENT_EXTRA_SRV_OPTS``: |
| 222 | |
| 223 | [[post-config|/$Q_PLUGIN_CONF_FILE]] |
| 224 | [linuxbridge] # or [ovs] |
| 225 | |
| 226 | * ``Q_SRV_EXTRA_DEFAULT_OPTS``: |
| 227 | |
| 228 | [[post-config|$NEUTRON_CONF]] |
| 229 | [DEFAULT] |
| 230 | |
| 231 | Example extra config in `local.conf`: |
| 232 | |
| 233 | [[post-config|/$Q_PLUGIN_CONF_FILE]] |
| 234 | [agent] |
| 235 | tunnel_type=vxlan |
| 236 | vxlan_udp_port=8472 |
| 237 | |
| 238 | [[post-config|$NEUTRON_CONF]] |
| 239 | [DEFAULT] |
| 240 | tenant_network_type=vxlan |
Kyle Mestery | ebfac64 | 2013-05-17 15:20:56 -0500 | [diff] [blame] | 241 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 242 | DevStack also supports configuring the Neutron ML2 plugin. The ML2 plugin |
Dean Troyer | 91baef3 | 2014-02-28 11:11:45 -0600 | [diff] [blame] | 243 | can run with the OVS, LinuxBridge, or Hyper-V agents on compute hosts. This |
| 244 | is a simple way to configure the ml2 plugin: |
Kyle Mestery | b772659 | 2013-07-19 14:26:53 +0000 | [diff] [blame] | 245 | |
| 246 | # VLAN configuration |
| 247 | Q_PLUGIN=ml2 |
| 248 | ENABLE_TENANT_VLANS=True |
| 249 | |
| 250 | # GRE tunnel configuration |
| 251 | Q_PLUGIN=ml2 |
| 252 | ENABLE_TENANT_TUNNELS=True |
| 253 | |
| 254 | # VXLAN tunnel configuration |
| 255 | Q_PLUGIN=ml2 |
| 256 | Q_ML2_TENANT_NETWORK_TYPE=vxlan |
| 257 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 258 | The above will default in DevStack to using the OVS on each compute host. |
| 259 | To change this, set the `Q_AGENT` variable to the agent you want to run |
| 260 | (e.g. linuxbridge). |
Kyle Mestery | b772659 | 2013-07-19 14:26:53 +0000 | [diff] [blame] | 261 | |
| 262 | Variable Name Notes |
Radoslaw Smigielski | 8c666cf | 2014-05-14 12:36:29 +0100 | [diff] [blame] | 263 | ---------------------------------------------------------------------------- |
| 264 | Q_AGENT This specifies which agent to run with the |
| 265 | ML2 Plugin (either `openvswitch` or `linuxbridge`). |
| 266 | Q_ML2_PLUGIN_MECHANISM_DRIVERS The ML2 MechanismDrivers to load. The default |
| 267 | is none. Note, ML2 will work with the OVS |
| 268 | and LinuxBridge agents by default. |
| 269 | Q_ML2_PLUGIN_TYPE_DRIVERS The ML2 TypeDrivers to load. Defaults to |
| 270 | all available TypeDrivers. |
Kyle Mestery | b772659 | 2013-07-19 14:26:53 +0000 | [diff] [blame] | 271 | Q_ML2_PLUGIN_GRE_TYPE_OPTIONS GRE TypeDriver options. Defaults to none. |
| 272 | Q_ML2_PLUGIN_VXLAN_TYPE_OPTIONS VXLAN TypeDriver options. Defaults to none. |
| 273 | Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS VLAN TypeDriver options. Defaults to none. |
Kyle Mestery | b772659 | 2013-07-19 14:26:53 +0000 | [diff] [blame] | 274 | |
Steve Baker | 389b3a0 | 2013-08-01 10:44:09 +1200 | [diff] [blame] | 275 | # Heat |
| 276 | |
JordanP | 97eb9bb | 2014-05-26 09:38:50 +0200 | [diff] [blame] | 277 | Heat is enabled by default (see `stackrc` file). To disable it explicitly |
| 278 | you'll need the following settings in your `localrc` section: |
Steve Baker | 389b3a0 | 2013-08-01 10:44:09 +1200 | [diff] [blame] | 279 | |
JordanP | 97eb9bb | 2014-05-26 09:38:50 +0200 | [diff] [blame] | 280 | disable_service heat h-api h-api-cfn h-api-cw h-eng |
Steve Baker | 389b3a0 | 2013-08-01 10:44:09 +1200 | [diff] [blame] | 281 | |
| 282 | Heat can also run in standalone mode, and be configured to orchestrate |
| 283 | on an external OpenStack cloud. To launch only Heat in standalone mode |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 284 | you'll need the following settings in your `localrc` section: |
Steve Baker | 389b3a0 | 2013-08-01 10:44:09 +1200 | [diff] [blame] | 285 | |
| 286 | disable_all_services |
| 287 | enable_service rabbit mysql heat h-api h-api-cfn h-api-cw h-eng |
| 288 | HEAT_STANDALONE=True |
| 289 | KEYSTONE_SERVICE_HOST=... |
| 290 | KEYSTONE_AUTH_HOST=... |
| 291 | |
Dean Troyer | cc6b443 | 2013-04-08 15:38:03 -0500 | [diff] [blame] | 292 | # Tempest |
Oleg Bondarev | 1f11f9a | 2013-03-25 05:34:23 -0700 | [diff] [blame] | 293 | |
Radoslaw Smigielski | 8c666cf | 2014-05-14 12:36:29 +0100 | [diff] [blame] | 294 | If tempest has been successfully configured, a basic set of smoke |
| 295 | tests can be run as follows: |
Oleg Bondarev | 1f11f9a | 2013-03-25 05:34:23 -0700 | [diff] [blame] | 296 | |
| 297 | $ cd /opt/stack/tempest |
Kui Shi | f9b4738 | 2013-08-02 05:53:58 +0800 | [diff] [blame] | 298 | $ nosetests tempest/scenario/test_network_basic_ops.py |
Oleg Bondarev | 1f11f9a | 2013-03-25 05:34:23 -0700 | [diff] [blame] | 299 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 300 | # DevStack on Xenserver |
| 301 | |
Radoslaw Smigielski | 8c666cf | 2014-05-14 12:36:29 +0100 | [diff] [blame] | 302 | If you would like to use Xenserver as the hypervisor, please refer |
| 303 | to the instructions in `./tools/xen/README.md`. |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 304 | |
Dean Troyer | cdf3d76 | 2013-10-15 09:42:43 -0500 | [diff] [blame] | 305 | # Additional Projects |
| 306 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 307 | DevStack has a hook mechanism to call out to a dispatch script at specific |
| 308 | points in the execution of `stack.sh`, `unstack.sh` and `clean.sh`. This |
| 309 | allows upper-layer projects, especially those that the lower layer projects |
| 310 | have no dependency on, to be added to DevStack without modifying the core |
| 311 | scripts. Tempest is built this way as an example of how to structure the |
| 312 | dispatch script, see `extras.d/80-tempest.sh`. See `extras.d/README.md` |
| 313 | for more information. |
Dean Troyer | cdf3d76 | 2013-10-15 09:42:43 -0500 | [diff] [blame] | 314 | |
Dean Troyer | cc6b443 | 2013-04-08 15:38:03 -0500 | [diff] [blame] | 315 | # Multi-Node Setup |
Oleg Bondarev | 1f11f9a | 2013-03-25 05:34:23 -0700 | [diff] [blame] | 316 | |
Radoslaw Smigielski | 8c666cf | 2014-05-14 12:36:29 +0100 | [diff] [blame] | 317 | A more interesting setup involves running multiple compute nodes, with Neutron |
| 318 | networks connecting VMs on different compute nodes. |
| 319 | You should run at least one "controller node", which should have a `stackrc` |
| 320 | that includes at least: |
Oleg Bondarev | 1f11f9a | 2013-03-25 05:34:23 -0700 | [diff] [blame] | 321 | |
| 322 | disable_service n-net |
| 323 | enable_service q-svc |
| 324 | enable_service q-agt |
| 325 | enable_service q-dhcp |
| 326 | enable_service q-l3 |
| 327 | enable_service q-meta |
Mark McClain | b05c876 | 2013-07-06 23:29:39 -0400 | [diff] [blame] | 328 | enable_service neutron |
Oleg Bondarev | 1f11f9a | 2013-03-25 05:34:23 -0700 | [diff] [blame] | 329 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 330 | You likely want to change your `localrc` section to run a scheduler that |
| 331 | will balance VMs across hosts: |
Oleg Bondarev | 1f11f9a | 2013-03-25 05:34:23 -0700 | [diff] [blame] | 332 | |
| 333 | SCHEDULER=nova.scheduler.simple.SimpleScheduler |
| 334 | |
Radoslaw Smigielski | 8c666cf | 2014-05-14 12:36:29 +0100 | [diff] [blame] | 335 | You can then run many compute nodes, each of which should have a `stackrc` |
| 336 | which includes the following, with the IP address of the above controller node: |
Oleg Bondarev | 1f11f9a | 2013-03-25 05:34:23 -0700 | [diff] [blame] | 337 | |
Mark McClain | b05c876 | 2013-07-06 23:29:39 -0400 | [diff] [blame] | 338 | ENABLED_SERVICES=n-cpu,rabbit,g-api,neutron,q-agt |
Oleg Bondarev | 1f11f9a | 2013-03-25 05:34:23 -0700 | [diff] [blame] | 339 | SERVICE_HOST=[IP of controller node] |
| 340 | MYSQL_HOST=$SERVICE_HOST |
| 341 | RABBIT_HOST=$SERVICE_HOST |
| 342 | Q_HOST=$SERVICE_HOST |
Eric Windisch | 800bf38 | 2013-05-24 11:21:11 -0400 | [diff] [blame] | 343 | MATCHMAKER_REDIS_HOST=$SERVICE_HOST |
Kieran Spear | fb2a3ae | 2013-03-11 23:55:49 +0000 | [diff] [blame] | 344 | |
Bartosz Górski | 0abde39 | 2014-02-28 14:15:19 +0100 | [diff] [blame] | 345 | # Multi-Region Setup |
| 346 | |
| 347 | We want to setup two devstack (RegionOne and RegionTwo) with shared keystone |
| 348 | (same users and services) and horizon. |
| 349 | Keystone and Horizon will be located in RegionOne. |
| 350 | Full spec is available at: |
| 351 | https://wiki.openstack.org/wiki/Heat/Blueprints/Multi_Region_Support_for_Heat. |
| 352 | |
| 353 | In RegionOne: |
| 354 | |
| 355 | REGION_NAME=RegionOne |
| 356 | |
| 357 | In RegionTwo: |
| 358 | |
| 359 | disable_service horizon |
| 360 | KEYSTONE_SERVICE_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE> |
| 361 | KEYSTONE_AUTH_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE> |
| 362 | REGION_NAME=RegionTwo |
| 363 | |
Kieran Spear | fb2a3ae | 2013-03-11 23:55:49 +0000 | [diff] [blame] | 364 | # Cells |
| 365 | |
Radoslaw Smigielski | 8c666cf | 2014-05-14 12:36:29 +0100 | [diff] [blame] | 366 | Cells is a new scaling option with a full spec at: |
| 367 | http://wiki.openstack.org/blueprint-nova-compute-cells. |
Kieran Spear | fb2a3ae | 2013-03-11 23:55:49 +0000 | [diff] [blame] | 368 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 369 | To setup a cells environment add the following to your `localrc` section: |
Kieran Spear | fb2a3ae | 2013-03-11 23:55:49 +0000 | [diff] [blame] | 370 | |
| 371 | enable_service n-cell |
Kieran Spear | fb2a3ae | 2013-03-11 23:55:49 +0000 | [diff] [blame] | 372 | |
Radoslaw Smigielski | 8c666cf | 2014-05-14 12:36:29 +0100 | [diff] [blame] | 373 | Be aware that there are some features currently missing in cells, one notable |
| 374 | one being security groups. The exercises have been patched to disable |
| 375 | functionality not supported by cells. |
Dean Troyer | 893e663 | 2013-09-13 15:05:51 -0500 | [diff] [blame] | 376 | |
| 377 | |
| 378 | # Local Configuration |
| 379 | |
Radoslaw Smigielski | 8c666cf | 2014-05-14 12:36:29 +0100 | [diff] [blame] | 380 | Historically DevStack has used ``localrc`` to contain all local configuration |
| 381 | and customizations. More and more of the configuration variables available for |
| 382 | DevStack are passed-through to the individual project configuration files. |
| 383 | The old mechanism for this required specific code for each file and did not |
| 384 | scale well. This is handled now by a master local configuration file. |
Dean Troyer | 893e663 | 2013-09-13 15:05:51 -0500 | [diff] [blame] | 385 | |
| 386 | # local.conf |
| 387 | |
Radoslaw Smigielski | 8c666cf | 2014-05-14 12:36:29 +0100 | [diff] [blame] | 388 | The new config file ``local.conf`` is an extended-INI format that introduces |
| 389 | a new meta-section header that provides some additional information such |
| 390 | as a phase name and destination config filename: |
Dean Troyer | 893e663 | 2013-09-13 15:05:51 -0500 | [diff] [blame] | 391 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 392 | [[ <phase> | <config-file-name> ]] |
Dean Troyer | 893e663 | 2013-09-13 15:05:51 -0500 | [diff] [blame] | 393 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 394 | where ``<phase>`` is one of a set of phase names defined by ``stack.sh`` |
| 395 | and ``<config-file-name>`` is the configuration filename. The filename is |
| 396 | eval'ed in the ``stack.sh`` context so all environment variables are |
| 397 | available and may be used. Using the project config file variables in |
| 398 | the header is strongly suggested (see the ``NOVA_CONF`` example below). |
| 399 | If the path of the config file does not exist it is skipped. |
Dean Troyer | 893e663 | 2013-09-13 15:05:51 -0500 | [diff] [blame] | 400 | |
| 401 | The defined phases are: |
| 402 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 403 | * **local** - extracts ``localrc`` from ``local.conf`` before ``stackrc`` is sourced |
Radoslaw Smigielski | 8c666cf | 2014-05-14 12:36:29 +0100 | [diff] [blame] | 404 | * **post-config** - runs after the layer 2 services are configured |
| 405 | and before they are started |
| 406 | * **extra** - runs after services are started and before any files |
| 407 | in ``extra.d`` are executed |
Ryan Hsu | feb2883 | 2013-11-07 12:12:35 -0800 | [diff] [blame] | 408 | * **post-extra** - runs after files in ``extra.d`` are executed |
Dean Troyer | 893e663 | 2013-09-13 15:05:51 -0500 | [diff] [blame] | 409 | |
Radoslaw Smigielski | 8c666cf | 2014-05-14 12:36:29 +0100 | [diff] [blame] | 410 | The file is processed strictly in sequence; meta-sections may be specified more |
| 411 | than once but if any settings are duplicated the last to appear in the file |
| 412 | will be used. |
Dean Troyer | 893e663 | 2013-09-13 15:05:51 -0500 | [diff] [blame] | 413 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 414 | [[post-config|$NOVA_CONF]] |
| 415 | [DEFAULT] |
| 416 | use_syslog = True |
Dean Troyer | 893e663 | 2013-09-13 15:05:51 -0500 | [diff] [blame] | 417 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 418 | [osapi_v3] |
| 419 | enabled = False |
Dean Troyer | 893e663 | 2013-09-13 15:05:51 -0500 | [diff] [blame] | 420 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 421 | A specific meta-section ``local|localrc`` is used to provide a default |
| 422 | ``localrc`` file (actually ``.localrc.auto``). This allows all custom |
| 423 | settings for DevStack to be contained in a single file. If ``localrc`` |
| 424 | exists it will be used instead to preserve backward-compatibility. |
Dean Troyer | 893e663 | 2013-09-13 15:05:51 -0500 | [diff] [blame] | 425 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 426 | [[local|localrc]] |
| 427 | FIXED_RANGE=10.254.1.0/24 |
| 428 | ADMIN_PASSWORD=speciale |
| 429 | LOGFILE=$DEST/logs/stack.sh.log |
Dean Troyer | 893e663 | 2013-09-13 15:05:51 -0500 | [diff] [blame] | 430 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 431 | Note that ``Q_PLUGIN_CONF_FILE`` is unique in that it is assumed to *NOT* |
| 432 | start with a ``/`` (slash) character. A slash will need to be added: |
Dean Troyer | 893e663 | 2013-09-13 15:05:51 -0500 | [diff] [blame] | 433 | |
Dean Troyer | b8dd27b | 2013-10-17 12:03:55 -0500 | [diff] [blame] | 434 | [[post-config|/$Q_PLUGIN_CONF_FILE]] |