<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>DevStack - Frequently Asked Questions</title>
    <meta name="description" content="">
    <meta name="author" content="">

    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
    <!--[if lt IE 9]>
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    <!-- Le styles -->
    <link href="assets/css/bootstrap.css" rel="stylesheet">
    <link href="assets/css/local.css" rel="stylesheet">
    <style type="text/css">
      body { padding-top: 60px; }
      dd { padding: 10px; }
    </style>

    <!-- Le javascripts -->
    <script src="assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
    <script src="assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
  </head>

  <body>

    <div class="navbar navbar-fixed-top">
      <div class="navbar-inner">
        <div class="container">
          <a class="brand" href="/">DevStack</a>
          <ul class="nav pull-right">
            <li><a href="overview.html">Overview</a></li>
            <li><a href="changes.html">Changes</a></li>
            <li><a href="faq.html">FAQ</a></li>
            <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
          </ul>
        </div>
      </div>
    </div>

    <div class="container" id="home">

      <section id="faq" class="span12">

        <div class='row pull-left'>
          <h2>FAQ: Using DevStack <small>Making to behave</small></h2>

          <ul>
            <li><a href="#general">General Questions</a></li>
            <li><a href="#ops_conf">Operation and Configuration</a></li>
            <li><a href="#misc">Miscellaneous</a></li>
          </ul>

          <h3><a name="general">General Questions</a></h3>

          <dl class='pull-left'>
            <dt>Q: Can I use DevStack for production?</dt>
            <dd>A: No.  We mean it.  Really.  DevStack makes some implementation choices that are not appropriate for production deployments.  We warned you!</dd>

            <dt>Q: Then why selinux in enforcing mode?</dt>
            <dd>A: That is the default on current Fedora and RHEL releases.  DevStack has (rightly so) a bad reputation for its security practices; it has always been meant as a development tool first and system integration later.  This is changing as the security issues around OpenStack's use of root (for example) have been tightened and developers need to be better equipped to work in these environments.  <code>stack.sh</code>'s use of root is primarily to support the activities that would be handled by packaging in "real" deployments.  To remove additional protections that will be desired/required in production would be a step backward.</dd>

            <dt>Q: But selinux is disabled in RHEL 6!</dt>
            <dd>A: Today it is, yes.  That is a specific exception that certain DevStack contributors fought strongly against.  The primary reason it was allowed was to support using RHEL6 as the Python 2.6 test platform and that took priority time-wise.  This will not be the case with RHEL 7.</dd>

            <dt>Q: Why a shell script, why not chef/puppet/...</dt>
            <dd>A: The script is meant to be read by humans (as well as ran by computers); it is the primary documentation after all.  Using a recipe system requires everyone to agree and understand chef or puppet.</dd>

            <dt>Q: Why not use Crowbar?</dt>
            <dd>A: DevStack is optimized for documentation &amp; developers.  As some of us use <a href="https://github.com/dellcloudedge/crowbar">Crowbar</a> for production deployments, we hope developers documenting how they setup systems for new features supports projects like Crowbar.</dd>

            <dt>Q: I'd like to help!</dt>
            <dd>A: That isn't a question, but please do!  The source for DevStack is at <a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a> and bug reports go to <a href="http://bugs.launchpad.net/devstack/">LaunchPad</a>.  Contributions follow the usual process as described in the <a href="http://wiki.openstack.org/HowToContribute">OpenStack wiki</a> even though DevStack is not an official OpenStack project.  This site is housed in the CloudBuilder's <a href="http://github.com/cloudbuilders/devstack">github</a> in the gh-pages branch.</dd>

            <dt>Q: Why not use packages?</dt>
            <dd>A: Unlike packages, DevStack leaves your cloud ready to develop - checkouts of the code and services running in screen. However, many people are doing the hard work of packaging and recipes for production deployments.  We hope this script serves as a way to communicate configuration changes between developers and packagers.</dd>

            <dt>Q: Why isn't $MY_FAVORITE_DISTRO supported?</dt>
            <dd>A: DevStack is meant for developers and those who want to see how OpenStack really works.  DevStack is known to run on the distro/release combinations listed in <code>README.md</code>.  DevStack is only supported on releases other than those documented in <code>README.md</code> on a best-effort basis.</dd>

            <dt>Q: What about Fedora/RHEL/CentOS?</dt>
            <dd>A: Fedora and CentOS/RHEL are supported via rpm dependency files and specific checks in <code>stack.sh</code>.  Support will follow the pattern set with the Ubuntu testing, i.e. only a single release of the distro will receive regular testing, others will be handled on a best-effort basis.</dd>

            <dt>Q: Are there any differences between Ubuntu and Fedora support?</dt>
            <dd>A: Neutron is not fully supported prior to Fedora 18 due lack of OpenVSwitch packages.</dd>

            <dt>Q: How about RHEL 6?</dt>
            <dd>A: RHEL 6 has Python 2.6 and many old modules packaged and is a challenge to support.  There are a number of specific RHEL6 work-arounds in <code>stack.sh</code> to handle this.  But the testing on py26 is valuable so we do it...</dd>
          </dl>

          <h3><a name="ops_conf">Operation and Configuration</a></h3>

          <dl class='pull-left'>
            <dt>Q: Can DevStack handle a multi-node installation?</dt>
            <dd>A: Indirectly, yes.  You run DevStack on each node with the appropriate configuration in <code>local.conf</code>.  The primary considerations are turning off the services not required on the secondary nodes, making sure the passwords match and setting the various API URLs to the right place.</dd>

            <dt>Q: How can I document the environment that DevStack is using?</dt>
            <dd>A: DevStack includes a script (<code>tools/info.sh</code>) that gathers the versions of the relevant installed apt packages, pip packages and git repos.  This is a good way to verify what Python modules are installed.</dd>

            <dt>Q: How do I turn off a service that is enabled by default?</dt>
            <dd>A: Services can be turned off by adding <code>disable_service xxx</code> to <code>local.conf</code> (using <code>n-vol</code> in this example):
              <pre>disable_service n-vol</pre>
            </dd>

            <dt>Q: Is enabling a service that defaults to off done with the reverse of the above?</dt>
            <dd>A: Of course!
              <pre>enable_service qpid</pre>
            </dd>

            <dt>Q: How do I run a specific OpenStack milestone?</dt>
            <dd>A: OpenStack milestones have tags set in the git repo.  Set the appropriate tag in the <code>*_BRANCH</code> variables in <code>local.conf</code>.  Swift is on its own release schedule so pick a tag in the Swift repo that is just before the milestone release.  For example:
              <pre>[[local|localrc]]
GLANCE_BRANCH=stable/grizzly
HORIZON_BRANCH=stable/grizzly
KEYSTONE_BRANCH=stable/grizzly
NOVA_BRANCH=stable/grizzly
GLANCE_BRANCH=stable/grizzly
NEUTRON_BRANCH=stable/grizzly
SWIFT_BRANCH=1.10.0</pre>
            </dd>
<!---  this is incomplete, remove it until populating the sql catalog is complete
            <dt>Q: How do I use the SQL catalog backend in Keystone?</dt>
            <dd>A: Comment out the template backend lines in the <code>[catalog]</code> section of <code>keystone/etc/keystone.conf</code> and add the SQL backend config like this:
              <pre>[catalog]
#driver = keystone.catalog.backends.templated.TemplatedCatalog
#template_file = ./etc/default_catalog.templates
driver = keystone.catalog.backends.sql.Catalog</pre>
            </dd>
-->
            <dt>Q: Why not use <strike><code>tools/pip-requires</code></strike><code>requirements.txt</code> to grab project dependencies?</dt>
            <dd><strike>The majority of deployments will use packages to install OpenStack that will have distro-based packages as dependencies.  DevStack installs as many of these Python packages as possible to mimic the expected production environemnt.</strike> Certain Linux distributions have a 'lack of workaround' in their Python configurations that installs vendor packaged Python modules and pip-installed modules to the SAME DIRECTORY TREE.  This is causing heartache and moving us in the direction of installing more modules from PyPI than vendor packages.  However, that is only being done as necessary as the packaging needs to catch up to the development cycle anyway so this is kept to a minimum.</dd>

            <dt>Q: What can I do about RabbitMQ not wanting to start on my fresh new VM?</dt>
            <dd>A: This is often caused by <code>erlang</code> not being happy with the hostname resolving to a reachable IP address.  Make sure your hostname resolves to a working IP address; setting it to 127.0.0.1 in <code>/etc/hosts</code> is often good enough for a single-node installation.  And in an extreme case, use <code>clean.sh</code> to eradicate it and try again.</dd>

            <dt>Q: How can I set up Heat in stand-alone configuration?</dt>
            <dd>A: Configure <code>local.conf</code> thusly:
              <pre>[[local|localrc]]
HEAT_STANDALONE=True
ENABLED_SERVICES=rabbit,mysql,heat,h-api,h-api-cfn,h-api-cw,h-eng
KEYSTONE_SERVICE_HOST=&lt;keystone-host&gt;
KEYSTONE_AUTH_HOST=&lt;keystone-host&gt;</pre>
            </dd>

            <dt>Q: Why are my configuration changes ignored?</dt>
            <dd>A: You may have run into the package prerequisite installation timeout.  <code>tools/install_prereqs.sh</code> has a timer that skips the package installation checks if it was run within the last <code>PREREQ_RERUN_HOURS</code> hours (default is 2).  To override this, set <code>FORCE_PREREQ=1</code> and the package checks will never be skipped.
            </dd>
          </dl>

          <h3><a name="misc">Miscellaneous</a></h3>

          <dl class='pull-left'>
            <dt>Q: <code>tools/fixup_stuff.sh</code> is broken and shouldn't 'fix' just one version of packages.</dt>
            <dd>A: [Another not-a-question]  No it isn't.  Stuff in there is to correct problems in an environment that need to be fixed elsewhere or may/will be fixed in a future release.  In the case of <code>httplib2</code> and <code>prettytable</code> specific problems with specific versions are being worked around.  If later releases have those problems than we'll add them to the script.  Knowing about the broken future releases is valuable rather than polling to see if it has been fixed.</dd>
          </dl>
        </div>

      </section>

      <footer>
        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
      </footer>

    </div> <!-- /container -->
  </body>
</html>