<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8 from src/site/markdown/metron-deployment/development/ubuntu14/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 on Ubuntu 14</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 on Ubuntu 14</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><a href="../../../metron-deployment/development/index.html" title="Development"><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 class="active"><a href="#"><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 on Ubuntu 14</h1>
<p>This project fully automates the provisioning and deployment of Apache Metron and all necessary prerequisites on a single, virtualized host running Ubuntu 14.</p>
<p>Metron is composed of many components and installing all of these on a single host, especially a virtualized one, will greatly stress the resources of the host.   The host will require at least 8 GB of RAM and a fair amount of patience.  It is highly recommended that you shut down all unnecessary services.</p>
<div class="section">
<h2><a name="Getting_Started"></a>Getting Started</h2>
<div class="section">
<h3><a name="Prerequisites"></a>Prerequisites</h3>
<p>The computer used to deploy Apache Metron will need to have the following components installed.</p>
<ul>

<li><a class="externalLink" href="https://github.com/ansible/ansible">Ansible</a> 2.4.0+</li>
<li><a class="externalLink" href="https://www.docker.com/community-edition">Docker</a></li>
<li><a class="externalLink" href="https://www.vagrantup.com">Vagrant</a> 2.0+</li>
<li><a class="externalLink" href="https://github.com/devopsgroup-io/vagrant-hostmanager">Vagrant Hostmanager Plugin</a></li>
<li><a class="externalLink" href="https://virtualbox.org">Virtualbox</a> 5.0+</li>
<li>Python 2.7</li>
<li>Maven 3.3.9</li>
<li>C++11 compliant compiler, like <a class="externalLink" href="https://gcc.gnu.org/projects/cxx-status.html#cxx11">GCC</a></li>
</ul>
<p>Running the following script can help validate whether you have all the prerequisites installed and running correctly.</p>

<div>
<div>
<pre class="source">  metron-deployment/scripts/platform-info.sh
</pre></div></div>

<div class="section">
<h4><a name="How_do_I_install_these_on_MacOS.3F"></a>How do I install these on MacOS?</h4>
<p>Any platform that supports these tools is suitable, but the following instructions cover installation on macOS.  The easiest means of installing these tools on a Mac is to use the excellent <a class="externalLink" href="http://brew.sh/">Homebrew</a> project.</p>
<ol style="list-style-type: decimal">

<li>

<p>Install Homebrew by following the instructions at <a class="externalLink" href="http://brew.sh/">Homebrew</a>.</p>
</li>
<li>

<p>Run the following command in a terminal to install all of the required tools.</p>

<div>
<div>
<pre class="source">brew cask install vagrant virtualbox docker ansible
brew cask install caskroom/versions/java8
brew install maven@3.3 git
vagrant plugin install vagrant-hostmanager
open /Applications/Docker.app
</pre></div></div>
</li>
</ol></div></div>
<div class="section">
<h3><a name="Deploy_Metron"></a>Deploy Metron</h3>
<ol style="list-style-type: decimal">

<li>

<p>Ensure that the Docker service is running.</p>
</li>
<li>

<p>Deploy Metron</p>

<div>
<div>
<pre class="source">cd metron-deployment/development/ubuntu14
vagrant up
</pre></div></div>

<p>Should the process fail before completing the deployment, the following command will continue the deployment process without re-instantiating the host.</p>

<div>
<div>
<pre class="source">vagrant provision
</pre></div></div>
</li>
</ol></div>
<div class="section">
<h3><a name="Explore_Metron"></a>Explore Metron</h3>
<p>Navigate to the following resources to explore your newly minted Apache Metron environment.</p>
<ul>

<li><a class="externalLink" href="http://node1:4201">Metron Alerts</a> credentials: user/password</li>
<li><a class="externalLink" href="http://node1:8080">Ambari</a> credentials: admin/admin</li>
</ul>
<p>Connecting to the host through SSH is as simple as running the following command.</p>

<div>
<div>
<pre class="source">vagrant ssh
</pre></div></div>
</div>
<div class="section">
<h3><a name="Working_with_Metron"></a>Working with Metron</h3>
<p>In addition to re-running the entire provisioning play book, you may now re-run an individual Ansible tag or a collection of tags in the following ways.  The following commands will re-run the <tt>sensor-stubs</tt> role on the Vagrant image. This will install and start the sensor stub components.</p>

<div>
<div>
<pre class="source">vagrant --ansible-tags=&quot;sensor-stubs&quot; provision
</pre></div></div>

<p>Tags are listed in the playbooks.  Here are some frequently used tags:</p>
<ul>

<li><tt>hdp-install</tt> - Install HDP</li>
<li><tt>hdp-deploy</tt> - Deploy and Start HDP Services (will start all Hadoop Services)</li>
<li><tt>sensors</tt> - Deploy the sensors (see <a href="#Sensors">Sensors</a> for more details regarding this tag)</li>
<li><tt>sensor-stubs</tt> - Deploy and start the sensor stubs.</li>
</ul>
<div class="section">
<h4><a name="Sensors"></a>Sensors</h4>
<p>By default, the Metron development environment uses sensor stubs to mimic the behavior of the full sensors.  This is done because the full sensors take a significant amount of time and CPU to build, install, and run.</p>
<p>From time to time you may want to install the full sensors for testing (see the specifics of what that means <a href="../../ansible/playbooks/sensor_install.yml">here</a>).  This can be done by running the following command:</p>

<div>
<div>
<pre class="source">vagrant --ansible-skip-tags=&quot;sensor-stubs&quot; up
</pre></div></div>

<p>This will skip only the <tt>sensor-stubs</tt> tag, allowing the ansible roles with the <tt>sensors</tt> tag to be run.  This provisions the full sensors in a &#x2018;testing mode&#x2019; so that they are more active, and thus more useful for testing (more details on that <a href="../../ansible/roles/sensor-test-mode/index.html">here</a>).  <b>However</b>, when vagrant completes the sensors will NOT be running.  In order to start the sensors and simulate traffic through them (which will create a fair amount of load on your test system), complete the below steps:</p>

<div>
<div>
<pre class="source">vagrant ssh
sudo su -
service pcap-replay restart
service yaf restart
service snortd restart
service snort-producer restart
</pre></div></div></div></div></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>
