<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8 from src/site/markdown/metron-deployment/development/index.md at 2019-05-14
 | Rendered using Apache Maven Fluido Skin 1.7
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20190514" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Metron &#x2013; Metron Development Environments</title>
    <link rel="stylesheet" href="../../css/apache-maven-fluido-1.7.min.css" />
    <link rel="stylesheet" href="../../css/site.css" />
    <link rel="stylesheet" href="../../css/print.css" media="print" />
    <script type="text/javascript" src="../../js/apache-maven-fluido-1.7.min.js"></script>
<script type="text/javascript">
              $( document ).ready( function() { $( '.carousel' ).carousel( { interval: 3500 } ) } );
            </script>
  </head>
  <body class="topBarDisabled">
    <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><a href="http://metron.apache.org/" id="bannerLeft"><img src="../../images/metron-logo.png"  alt="Apache Metron" width="148px" height="48px"/></a></div>
        <div class="pull-right"></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
      <li class=""><a href="http://www.apache.org" class="externalLink" title="Apache">Apache</a><span class="divider">/</span></li>
      <li class=""><a href="http://metron.apache.org/" class="externalLink" title="Metron">Metron</a><span class="divider">/</span></li>
      <li class=""><a href="../../index.html" title="Documentation">Documentation</a><span class="divider">/</span></li>
    <li class="active ">Metron Development Environments</li>
        <li id="publishDate" class="pull-right"><span class="divider">|</span> Last Published: 2019-05-14</li>
          <li id="projectVersion" class="pull-right">Version: 0.7.1</li>
        </ul>
      </div>
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
    <ul class="nav nav-list">
      <li class="nav-header">User Documentation</li>
    <li><a href="../../index.html" title="Metron"><span class="icon-chevron-down"></span>Metron</a>
    <ul class="nav nav-list">
    <li><a href="../../CONTRIBUTING.html" title="CONTRIBUTING"><span class="none"></span>CONTRIBUTING</a></li>
    <li><a href="../../Upgrading.html" title="Upgrading"><span class="none"></span>Upgrading</a></li>
    <li><a href="../../metron-analytics/index.html" title="Analytics"><span class="icon-chevron-right"></span>Analytics</a></li>
    <li><a href="../../metron-contrib/metron-docker/index.html" title="Docker"><span class="none"></span>Docker</a></li>
    <li><a href="../../metron-contrib/metron-performance/index.html" title="Performance"><span class="none"></span>Performance</a></li>
    <li><a href="../../metron-deployment/index.html" title="Deployment"><span class="icon-chevron-down"></span>Deployment</a>
    <ul class="nav nav-list">
    <li><a href="../../metron-deployment/Kerberos-ambari-setup.html" title="Kerberos-ambari-setup"><span class="none"></span>Kerberos-ambari-setup</a></li>
    <li><a href="../../metron-deployment/Kerberos-manual-setup.html" title="Kerberos-manual-setup"><span class="none"></span>Kerberos-manual-setup</a></li>
    <li><a href="../../metron-deployment/amazon-ec2/index.html" title="Amazon-ec2"><span class="none"></span>Amazon-ec2</a></li>
    <li><a href="../../metron-deployment/ansible/index.html" title="Ansible"><span class="icon-chevron-right"></span>Ansible</a></li>
    <li class="active"><a href="#"><span class="icon-chevron-down"></span>Development</a>
    <ul class="nav nav-list">
    <li><a href="../../metron-deployment/development/centos6/index.html" title="Centos6"><span class="none"></span>Centos6</a></li>
    <li><a href="../../metron-deployment/development/fastcapa/index.html" title="Fastcapa"><span class="none"></span>Fastcapa</a></li>
    <li><a href="../../metron-deployment/development/ubuntu14/index.html" title="Ubuntu14"><span class="none"></span>Ubuntu14</a></li>
    </ul>
</li>
    <li><a href="../../metron-deployment/other-examples/index.html" title="Other-examples"><span class="icon-chevron-right"></span>Other-examples</a></li>
    <li><a href="../../metron-deployment/packaging/ambari/index.html" title="Ambari"><span class="icon-chevron-right"></span>Ambari</a></li>
    <li><a href="../../metron-deployment/packaging/docker/ansible-docker/index.html" title="Ansible-docker"><span class="none"></span>Ansible-docker</a></li>
    <li><a href="../../metron-deployment/packaging/docker/deb-docker/index.html" title="Deb-docker"><span class="none"></span>Deb-docker</a></li>
    <li><a href="../../metron-deployment/packaging/docker/rpm-docker/index.html" title="Rpm-docker"><span class="none"></span>Rpm-docker</a></li>
    <li><a href="../../metron-deployment/packaging/packer-build/index.html" title="Packer-build"><span class="none"></span>Packer-build</a></li>
    </ul>
</li>
    <li><a href="../../metron-interface/index.html" title="Interface"><span class="icon-chevron-right"></span>Interface</a></li>
    <li><a href="../../metron-platform/index.html" title="Platform"><span class="icon-chevron-right"></span>Platform</a></li>
    <li><a href="../../metron-sensors/index.html" title="Sensors"><span class="icon-chevron-right"></span>Sensors</a></li>
    <li><a href="../../metron-stellar/stellar-3rd-party-example/index.html" title="Stellar-3rd-party-example"><span class="none"></span>Stellar-3rd-party-example</a></li>
    <li><a href="../../metron-stellar/stellar-common/index.html" title="Stellar-common"><span class="icon-chevron-right"></span>Stellar-common</a></li>
    <li><a href="../../metron-stellar/stellar-zeppelin/index.html" title="Stellar-zeppelin"><span class="none"></span>Stellar-zeppelin</a></li>
    <li><a href="../../use-cases/index.html" title="Use-cases"><span class="icon-chevron-right"></span>Use-cases</a></li>
    </ul>
</li>
</ul>
          <hr />
          <div id="poweredBy">
            <div class="clear"></div>
            <div class="clear"></div>
            <div class="clear"></div>
            <div class="clear"></div>
<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="../../images/logos/maven-feather.png" /></a>
            </div>
          </div>
        </div>
        <div id="bodyColumn"  class="span10" >
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<h1>Metron Development Environments</h1>
<p><a name="Metron_Development_Environments"></a></p>
<p>This directory contains environments useful for Metron developers.  These environments are not intended for proof-of-concept, testing, or production use.  These are extremely resource constrained and cannot support anything beyond the most basic work loads.</p>
<ul>

<li>Metron running on CentOS 6</li>
<li>Metron running on Ubuntu 14</li>
<li>Fastcapa</li>
</ul>
<div class="section">
<h2><a name="Vagrant_Cachier_recommendations"></a>Vagrant Cachier recommendations</h2>
<p>The development boxes are designed to be spun up and destroyed on a regular basis as part of the development cycle. In order to avoid the overhead of re-downloading many of the heavy platform dependencies, Vagrant can use the <a class="externalLink" href="http://fgrehm.viewdocs.io/vagrant-cachier/">vagrant-cachier</a> plugin to store package caches between builds. If the plugin has been installed to your vagrant it will be used, and packages will be cached in ~/.vagrant/cache.</p></div>
<div class="section">
<h2><a name="Knox_Demo_LDAP"></a>Knox Demo LDAP</h2>
<p>The development environment can be set up to authenticate against Knox&#x2019;s demo LDAP.</p>
<p>A couple notes</p>
<ul>

<li>A custom LDIF file is used to setup users. This is to get the roles and passwords setup correctly.</li>
<li>The demo LDAP uses plaintext passwords with no encryption prefix (e.g. {SSHA}).</li>
<li>You may need or want to shut down any or all of the topologies. This is optional, but clears some room</li>
</ul>
<p>To setup this up, start full dev.</p>
<ul>

<li>

<p>In Ambari, add the Knox service (Actions -&gt; +Add Service).  Accept all defaults and let it install. The configs that will be set how we need by default are:</p>
<ul>

<li>LDAP URL = <a class="externalLink" href="ldap://localhost:33389">ldap://localhost:33389</a></li>
<li>User dn pattern = uid={0},ou=people,dc=hadoop,dc=apache,dc=org</li>
<li>LDAP user searchbase = ou=people,dc=hadoop,dc=apache,dc=org</li>
<li>Group Search Base = ou=groups,dc=hadoop,dc=apache,dc=org</li>
<li>Group Search Filter = member={0}</li>
<li>User Base DN = uid=admin,ou=people,dc=hadoop,dc=apache,dc=org</li>
<li>User Search Filter is empty</li>
<li>User password attribute = userPassword</li>
<li>LDAP group role attribute = cn</li>
<li>Bind User = uid=admin,ou=people,dc=hadoop,dc=apache,dc=org</li>
<li>LDAP Truststore is empty</li>
<li>LDAP Truststore Password is empty</li>
</ul>
</li>
<li>

<p>In the Knox configuration, go to &#x201c;Advanced users-ldif&#x201d;. We have a custom ldif file &#x201c;knox-demo-ldap.ldif&#x201d; in &#x201c;metron-deployment/development&#x201d; that contains a customized variant of the users and groups defined here. Replace the default ldif configuration with the contents of &#x201c;knox-demo-ldap.ldif&#x201d;</p>
</li>
<li>Start the Demo LDAP (In Knox, &quot;Service Actions -&gt; Start Demo LDAP)</li>
<li>In Metron&#x2019;s configs, we&#x2019;re going to make two changes
<ul>

<li>Set &#x201c;LDAP Enabled&#x201d; to &#x201c;On&#x201d;</li>
<li>In Security, set &#x201c;Bind user password&#x201d; to match the admin user&#x2019;s password from the ldif file (admin-password).</li>
</ul>
</li>
<li>Restart the REST application</li>
</ul>
<p>Now, when you go to Swagger or the UIs, you should be able to give a user and password. &#x201c;admin&#x201d; will have the roles ROLE_ADMIN and ROLE_USER, which can be verified via the &#x201c;/whoami/roles&#x201d; endpoint in Swagger. Similarly, there is a user &#x201c;sam&#x201d; that only has ROLE_USER. A third user, &#x201c;tom&#x201d; has neither role.</p></div>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
Â© 2015-2016 The Apache Software Foundation. Apache Metron, Metron, Apache, the Apache feather logo,
            and the Apache Metron project logo are trademarks of The Apache Software Foundation.
        </div>
      </div>
    </footer>
  </body>
</html>
