<!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 preferred 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>
