<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>DevStack - openrc</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="http://github.com/openstack-dev/devstack">GitHub</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">

      <section class="span12">
        <div class="page-header">
          <h2>openrc <small>User authentication settings</small></h2>
          <p><code>openrc</code> configures login credentials suitable for use
          with the OpenStack command-line tools.  <code>openrc</code> sources
          <code>stackrc</code> at the beginning (which in turn sources
          the <code>localrc</code> setion of <code>local.conf</code>) in
          order to pick up <code>HOST_IP</code>
          and/or <code>SERVICE_HOST</code> to use in the endpoints.
          The values shown below are the default values.</p>
        </div>
        <dl>

          <dt>OS_TENANT_NAME</dt>
          <dd>The introduction of Keystone to the OpenStack ecosystem has standardized the
            term <em>tenant</em> as the entity that owns resources.  In some places references
            still exist to the original Nova term <em>project</em> for this use.  Also,
            <em>tenant_name</em> is prefered to <em>tenant_id</em>.
            <pre>OS_TENANT_NAME=demo</pre></dd>

          <dt>OS_USERNAME</dt>
          <dd>In addition to the owning entity (tenant), Nova stores the entity performing
            the action as the <em>user</em>.
            <pre>OS_USERNAME=demo</pre></dd>

          <dt>OS_PASSWORD</dt>
          <dd>With Keystone you pass the keystone password instead of an api key.
            Recent versions of novaclient use OS_PASSWORD instead of NOVA_API_KEYs
            or NOVA_PASSWORD.
            <pre>OS_PASSWORD=secrete</pre></dd>

          <dt>HOST_IP, SERVICE_HOST</dt>
          <dd>Set API endpoint host using <code>HOST_IP</code>.  <code>SERVICE_HOST</code>
            may also be used to specify the endpoint, which is convenient for
            some <code>localrc</code> configurations.  Typically, <code>HOST_IP</code>
            is set in the <code>localrc</code> section.
            <pre>HOST_IP=127.0.0.1
SERVICE_HOST=$HOST_IP</pre></dd>

          <dt>OS_AUTH_URL</dt>
          <dd>Authenticating against an OpenStack cloud using Keystone returns a <em>Token</em>
            and <em>Service Catalog</em>.  The catalog contains the endpoints for all services
            the user/tenant has access to - including Nova, Glance, Keystone and Swift.
            <pre>OS_AUTH_URL=http://$SERVICE_HOST:5000/v2.0</pre></dd>

          <dt>GLANCE_HOST</dt>
          <dd>Some exercises call Glance directly.  On a single-node installation, Glance
            should be listening on <code>HOST_IP</code>.  If its running elsewhere
            it can be set here.
            <pre>GLANCE_HOST=$HOST_IP</pre></dd>

          <dt>KEYSTONECLIENT_DEBUG, NOVACLIENT_DEBUG</dt>
          <dd>Set command-line client log level to <code>DEBUG</code>.  These are
            commented out by default.
            <pre># export KEYSTONECLIENT_DEBUG=1
# export NOVACLIENT_DEBUG=1</pre></dd>

        </dl>
      </section

      <footer>
        <p>&copy; Openstack Foundation 2011-2013 &mdash; An
        <a href="https://wiki.openstack.org/wiki/Programs">OpenStack program</a>
        created by <a href="http://www.rackspace.com/cloud/private_edition/">Rackspace Cloud Builders</a></p>
      </footer>

    </div> <!-- /container -->

  </body>
</html>
