You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metron.apache.org by ma...@apache.org on 2017/12/08 09:27:19 UTC

svn commit: r23442 [11/24] - in /dev/metron/0.4.2-RC1: ./ site-book/ site-book/css/ site-book/images/ site-book/images/logos/ site-book/images/profiles/ site-book/img/ site-book/js/ site-book/metron-analytics/ site-book/metron-analytics/metron-maas-ser...

Added: dev/metron/0.4.2-RC1/site-book/metron-deployment/packaging/ambari/index.html
==============================================================================
--- dev/metron/0.4.2-RC1/site-book/metron-deployment/packaging/ambari/index.html (added)
+++ dev/metron/0.4.2-RC1/site-book/metron-deployment/packaging/ambari/index.html Fri Dec  8 09:27:19 2017
@@ -0,0 +1,899 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2017-12-08
+ | Rendered using Apache Maven Fluido Skin 1.3.0
+-->
+<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="20171208" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Metron &#x2013; Ambari Management Pack Development</title>
+    <link rel="stylesheet" href="../../../css/apache-maven-fluido-1.3.0.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.3.0.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>
+        </li>
+      <li class="divider ">/</li>
+            <li class="">
+                    <a href="http://metron.apache.org/" class="externalLink" title="Metron">
+        Metron</a>
+        </li>
+      <li class="divider ">/</li>
+            <li class="">
+                    <a href="../../../index.html" title="Documentation">
+        Documentation</a>
+        </li>
+      <li class="divider ">/</li>
+        <li class="">Ambari Management Pack Development</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-08</li> <li class="divider pull-right">|</li>
+              <li id="projectVersion" class="pull-right">Version: 0.4.2</li>
+            
+                            </ul>
+      </div>
+
+            
+      <div class="row-fluid">
+        <div id="leftColumn" class="span3">
+          <div class="well sidebar-nav">
+                
+                    
+                <ul class="nav nav-list">
+                    <li class="nav-header">User Documentation</li>
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
                                                                          
+      <li>
+    
+                          <a href="../../../index.html" title="Metron">
+          <i class="icon-chevron-down"></i>
+        Metron</a>
+                    <ul class="nav nav-list">
+                      
+      <li>
+    
+                          <a href="../../../Upgrading.html" title="Upgrading">
+          <i class="none"></i>
+        Upgrading</a>
+            </li>
+                                                                                                                                                      
+      <li>
+    
+                          <a href="../../../metron-analytics/index.html" title="Analytics">
+          <i class="icon-chevron-right"></i>
+        Analytics</a>
+                  </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-contrib/metron-docker/index.html" title="Docker">
+          <i class="none"></i>
+        Docker</a>
+            </li>
+                                                                                                                                                                                                                                                                                                                                                                                                                      
+      <li>
+    
+                          <a href="../../../metron-deployment/index.html" title="Deployment">
+          <i class="icon-chevron-down"></i>
+        Deployment</a>
+                    <ul class="nav nav-list">
+                      
+      <li>
+    
+                          <a href="../../../metron-deployment/Kerberos-ambari-setup.html" title="Kerberos-ambari-setup">
+          <i class="none"></i>
+        Kerberos-ambari-setup</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-deployment/Kerberos-manual-setup.html" title="Kerberos-manual-setup">
+          <i class="none"></i>
+        Kerberos-manual-setup</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-deployment/amazon-ec2/index.html" title="Amazon-ec2">
+          <i class="none"></i>
+        Amazon-ec2</a>
+            </li>
+                                                                        
+      <li>
+    
+                          <a href="../../../metron-deployment/other-examples/index.html" title="Other-examples">
+          <i class="icon-chevron-right"></i>
+        Other-examples</a>
+                  </li>
+                      
+      <li class="active">
+    
+            <a href="#"><i class="none"></i>Ambari</a>
+          </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-deployment/packaging/docker/ansible-docker/index.html" title="Ansible-docker">
+          <i class="none"></i>
+        Ansible-docker</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-deployment/packaging/docker/rpm-docker/index.html" title="Rpm-docker">
+          <i class="none"></i>
+        Rpm-docker</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-deployment/packaging/packer-build/index.html" title="Packer-build">
+          <i class="none"></i>
+        Packer-build</a>
+            </li>
+                                                                                                                                                
+      <li>
+    
+                          <a href="../../../metron-deployment/roles/index.html" title="Roles">
+          <i class="icon-chevron-right"></i>
+        Roles</a>
+                  </li>
+                                                                                          
+      <li>
+    
+                          <a href="../../../metron-deployment/vagrant/index.html" title="Vagrant">
+          <i class="icon-chevron-right"></i>
+        Vagrant</a>
+                  </li>
+              </ul>
+        </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-interface/metron-alerts/index.html" title="Alerts">
+          <i class="none"></i>
+        Alerts</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-interface/metron-config/index.html" title="Config">
+          <i class="none"></i>
+        Config</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-interface/metron-rest/index.html" title="Rest">
+          <i class="none"></i>
+        Rest</a>
+            </li>
+                                                                                                                                                                                                                                                                                    
+      <li>
+    
+                          <a href="../../../metron-platform/index.html" title="Platform">
+          <i class="icon-chevron-right"></i>
+        Platform</a>
+                  </li>
+                                                                                          
+      <li>
+    
+                          <a href="../../../metron-sensors/index.html" title="Sensors">
+          <i class="icon-chevron-right"></i>
+        Sensors</a>
+                  </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-stellar/stellar-3rd-party-example/index.html" title="Stellar-3rd-party-example">
+          <i class="none"></i>
+        Stellar-3rd-party-example</a>
+            </li>
+                                                                        
+      <li>
+    
+                          <a href="../../../metron-stellar/stellar-common/index.html" title="Stellar-common">
+          <i class="icon-chevron-right"></i>
+        Stellar-common</a>
+                  </li>
+                                                                                          
+      <li>
+    
+                          <a href="../../../use-cases/index.html" title="Use-cases">
+          <i class="icon-chevron-right"></i>
+        Use-cases</a>
+                  </li>
+              </ul>
+        </li>
+            </ul>
+                
+                    
+                
+          <hr class="divider" />
+
+           <div id="poweredBy">
+                            <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="span9" >
+                                  
+            <h1>Ambari Management Pack Development</h1>
+<p><a name="Ambari_Management_Pack_Development"></a></p>
+<div class="section">
+<h2><a name="Table_of_Contents"></a>Table of Contents</h2>
+
+<ul>
+  
+<li><a href="#Overview">Overview</a></li>
+  
+<li><a href="#Ambari_Zookeeper_Config_Lifecycle">Ambari Zookeeper Config Lifecycle</a></li>
+  
+<li><a href="#Adding_a_new_property">Adding a new property</a></li>
+  
+<li><a href="#How_to_identify_errors_in_MPack_changes">How to identify errors in MPack changes</a></li>
+  
+<li><a href="#Testing_changes_without_cycling_Vagrant_build">Testing changes without cycling Vagrant build</a></li>
+  
+<li><a href="#Configuration_involving_dependency_services">Configuration involving dependency services</a></li>
+  
+<li><a href="#Kerberos">Kerberos</a></li>
+  
+<li><a href="#Best_practices">Best practices</a></li>
+</ul></div>
+<div class="section">
+<h2><a name="Overview"></a>Overview</h2>
+<p>Typically, Ambari Management Pack development will be done in the Vagrant environments. These instructions are specific to Vagrant, but can be adapted for other environemnts (e.g. make sure to be on the correct nodes for server vs agent files)</p>
+<p>There is an <tt>mpack.json</tt> file which describes what services the mpack will contains, versions, etc.</p>
+<p>Alongside this are two directories, <tt>addon-services</tt> and <tt>common-services</tt>.</p>
+<p>The layout of <tt>/common-services/METRON.CURRENT</tt> is</p>
+
+<ul>
+  
+<li><tt>/configuration</tt>
+  
+<ul>
+    
+<li>This contains a set of <tt>*-env.xml</tt> files, relevent to particular components or the service as a whole. These are where properties are defined.</li>
+  </ul></li>
+  
+<li><tt>/package</tt>
+  
+<ul>
+    
+<li><tt>/files</tt>
+    
+<ul>
+      
+<li>Contains files that get used as provided, in particular Elasticsearch templates.</li>
+    </ul></li>
+    
+<li><tt>/scripts</tt>
+    
+<ul>
+      
+<li>A set of Python scripts that interface with Ambari to manage setup and install</li>
+      
+<li><tt>/params</tt>
+      
+<ul>
+        
+<li>A set of Python scripts for managing parameters from the <tt>*-env.xml</tt> files</li>
+      </ul></li>
+      
+<li><tt>/templates</tt>
+      
+<ul>
+        
+<li>A set of Jinja template files which can be populated with properties</li>
+      </ul></li>
+    </ul></li>
+  </ul></li>
+  
+<li><tt>/quicklinks</tt>
+  
+<ul>
+    
+<li>Contains <tt>quicklinks.json</tt> to define the Ambari quicklinks that should be used in the UI</li>
+  </ul></li>
+  
+<li><tt>themes</tt>
+  
+<ul>
+    
+<li>Manages the Ambari UI themes blocks for organizing the configuration by relevant area.</li>
+  </ul></li>
+  
+<li><tt>kerberos.json</tt>
+  
+<ul>
+    
+<li>Defines the keytabs and other Kerberos configuration to be used when Kerberizing a cluster</li>
+  </ul></li>
+  
+<li><tt>metainfo.xml</tt>
+  
+<ul>
+    
+<li>Defines the METRON service, along with required packages, services, etc.</li>
+  </ul></li>
+  
+<li><tt>service_advisor.py</tt>
+  
+<ul>
+    
+<li>Handles component layout and validation, along with handling some configurations for other services or that needs configs from other services.</li>
+  </ul></li>
+</ul>
+<p>The layout of <tt>/addon-services/METRON.CURRENT</tt> is</p>
+
+<ul>
+  
+<li><tt>/repos</tt>
+  
+<ul>
+    
+<li>Contains <tt>repoinfo.xml</tt> that defines repositories to install packages from</li>
+  </ul></li>
+  
+<li><tt>metainfo.xml</tt>
+  
+<ul>
+    
+<li>Limited info version of <tt>/common-services/METRON.CURRENT/metainfo.xml</tt></li>
+  </ul></li>
+  
+<li><tt>role_command_order.json</tt>
+  
+<ul>
+    
+<li>Defines the order of service startup and other actions relative to each other.</li>
+  </ul></li>
+</ul></div>
+<div class="section">
+<h2><a name="Ambari_Zookeeper_Config_Lifecycle"></a>Ambari Zookeeper Config Lifecycle</h2>
+<p>The source of truth for Metron configuration resides in Zookeeper as a series of JSON documents. There are actually multiple locations that you can populate the Zookeeper configs from:</p>
+
+<ul>
+  
+<li>$METRON_HOME/config/zookeeper</li>
+  
+<li>Stellar REPL</li>
+  
+<li>Management UI</li>
+  
+<li>Ambari</li>
+</ul>
+<p>Any change that works with Metron configuration stored in Zookeeper should always pull the latest config from Zookeeper first before making any changes and publishing them back up to avoid potentially overwriting the latest configs with stale data. The lifecycle for configuration management with Ambari is as follows:</p>
+
+<ul>
+  
+<li>First start/install for parsers, enrichment, indexing, or the profiler
+  
+<ul>
+    
+<li>Perform a PUSH from local disk to Zookeeper</li>
+  </ul></li>
+  
+<li>All component start/restart operations for parsers, enrichment, indexing, or the profiler
+  
+<ul>
+    
+<li>Perform a JSON patch (RFC 6902) on the configs in Zookeeper and push the patched, pretty formatted config up to Zookeeper. Patching is currently applicable to to global.json only.</li>
+    
+<li>Pull all configs to the local file system.</li>
+  </ul></li>
+</ul>
+<p>The patching mechanism we introduced to Ambari for managing the global config is by default additive in nature, though it will also overwrite any existing values with the latest values from Ambari. This means that you can add any properties to the global config outside of Ambari you like, provided you are not modifying values explicitly managed by Ambari. This is important because you will not get any errors when modifying the configuration outside of Ambari. Instead, if you modified es.ip and changed global.json outsided Ambari, you would not see this change in Ambari. Meanwhile, the indexing topology would be using the new value stored in Zookeeper. Remember, Zookeeper is the source of truth. If you were to restart a Metron topology component via Ambari, that es.ip property would now be set back to the value stored in Ambari. So in summary, if it&#x2019;s managed by Ambari, only change that value via Ambari. If it&#x2019;s not, then feel free to use whatever mechanism you like,
  just be sure to pull the latest config from Zookeeper before making any changes. We make no effort to handle race conditions. It&#x2019;s last commit wins. Below are the global config properties managed by Ambari:</p>
+
+<ul>
+  
+<li>es.clustername</li>
+  
+<li>es.ip</li>
+  
+<li>es.date.format</li>
+  
+<li>parser.error.topic</li>
+  
+<li>update.hbase.table</li>
+  
+<li>update.hbase.cf</li>
+  
+<li>profiler.client.period.duration</li>
+  
+<li>profiler.client.period.duration.units</li>
+</ul></div>
+<div class="section">
+<h2><a name="Adding_a_new_property"></a>Adding a new property</h2>
+
+<ol style="list-style-type: decimal">
+  
+<li>
+<p>Add the property to the appropriate <tt>*-env.xml</tt> file found in <tt>METRON.CURRENT/configuration</tt>.</p>
+  
+<div class="source">
+<div class="source">
+<pre>&lt;property&gt;
+    &lt;name&gt;new_property&lt;/name&gt;
+    &lt;description&gt;New Property description&lt;/description&gt;
+    &lt;value&gt;Default Value&lt;/value&gt;
+    &lt;display-name&gt;New Property Pretty Name&lt;/display-name&gt;
+&lt;/property&gt;
+</pre></div></div>
+<p>The appropriate <tt>*-env.xml</tt> file should be selected based on which component depends on the property. This allows Ambari to accurately restart only the affected components when the property is changed. If a property is in <tt>metron-env.xml</tt>, Ambari will prompt you to restart all Metron components.</p></li>
+  
+<li>
+<p>Add the property to the <tt>metron_theme.json</tt> file found in <tt>METRON.CURRENT/themes</tt> if the property was added to a component-specific <tt>*-env.xml</tt> file (<tt>metron-parsers-env.xml</tt> for example) and not <tt>metron-env.xml</tt>. This is necessary for the property to be displayed in the correct tab of the Metron Configs section in the Ambari UI. Using other properties as a guide, add the property to <tt>/configuration/placement/configs</tt> for proper placement and also to <tt>/configuration/widgets</tt> for a specific widget type.</p></li>
+  
+<li>
+<p>Reference the property in <tt>METRON.CURRENT/package/scriptes/params/params_linux.py</tt>, unless it will be used in Ambari&#x2019;s status command. It will be stored in a variable. The name doesn&#x2019;t have to match, but it&#x2019;s preferred that it does. Make sure to use replace <tt>metron-env</tt> the correct <tt>*-env</tt> file, as noted above.</p>
+  
+<div class="source">
+<div class="source">
+<pre>  new_property = config['configurations']['metron-env']['new_property']
+</pre></div></div>
+<p>If this property will be used in the status command, instead make this change in <tt>METRON.CURRENT/package/scriptes/params/status_params.py</tt>. Afterwards, in <tt>params_linux.py</tt>, reference the new property:</p></li>
+</ol>
+
+<div class="source">
+<div class="source">
+<pre>  new_property = status_params.new_property
+</pre></div></div>
+<p>This behavior is because Ambari doesn&#x2019;t send all parameters to the status, so it needs to be explicitly provided. Also note that status_params.py parameters are not automatically pulled into the params_linux.py namespace, so we explicitly choose the variables to include.  See <a class="externalLink" href="https://docs.python.org/2/howto/doanddont.html#at-module-level">https://docs.python.org/2/howto/doanddont.html#at-module-level</a> for more info.</p>
+
+<ol style="list-style-type: decimal">
+  
+<li>
+<p>Ambari master services can then import the params:</p>
+  
+<div class="source">
+<div class="source">
+<pre>  from params import params
+  env.set_params(params)
+</pre></div></div></li>
+  
+<li>
+<p>The <tt>*_commands.py</tt> files receive the params as an input from the master services. Once this is done, they can be accessed via the variable we set above:</p>
+  
+<div class="source">
+<div class="source">
+<pre>  self.__params.new_property
+</pre></div></div></li>
+</ol>
+<div class="section">
+<h3><a name="Env_file_property_walkthrough"></a>Env file property walkthrough</h3>
+<p>To illustrate how property files are carried through to the scripts for our services, we&#x2019;ll run through an existing property, <tt>metron_apps_hdfs_dir</tt>.</p>
+<div class="section">
+<h4><a name="Defining_the_property"></a>Defining the property</h4>
+<p>First the property appears in the appropriate <tt>*-env.xml</tt>, in this case <tt>METRON.CURRENT/configuration/metron-env.xml</tt>.</p>
+
+<div class="source">
+<div class="source">
+<pre>&lt;property&gt;
+    &lt;name&gt;metron_apps_hdfs_dir&lt;/name&gt;
+    &lt;value&gt;/apps/metron&lt;/value&gt;
+    &lt;description&gt;Metron apps HDFS dir&lt;/description&gt;
+    &lt;display-name&gt;Metron apps HDFS dir&lt;/display-name&gt;
+&lt;/property&gt;
+</pre></div></div>
+<p>This defines several things</p>
+
+<ol style="list-style-type: decimal">
+  
+<li>The name of the property we&#x2019;ll be referencing it by in our code.</li>
+  
+<li>The default value of the property.</li>
+  
+<li>The description of the property for the Ambari UI.</li>
+  
+<li>The pretty name that will be shown in Ambari for the property.</li>
+</ol></div>
+<div class="section">
+<h4><a name="Making_the_property_available_to_scripts"></a>Making the property available to scripts</h4>
+<p>Second, we set up the property to be available to the code. This happens in <tt>METRON.CURRENT/packages/scripts/params/params_linux.py</tt>. Just add the following line:</p>
+
+<div class="source">
+<div class="source">
+<pre>metron_apps_hdfs_dir = config['configurations']['metron-env']['metron_apps_hdfs_dir']
+</pre></div></div>
+<p>There is one catch to this. If we wanted this to be available to Ambari&#x2019;s status command, we&#x2019;d need to put that line in <tt>METRON.CURRENT/packages/scripts/params/status_params.py</tt> and reference it in <tt>params_linux.py</tt> like so:</p>
+
+<div class="source">
+<div class="source">
+<pre>metron_apps_hdfs_dir = status_params.metron_apps_hdfs_dir
+</pre></div></div>
+<p>This behavior is because Ambari doesn&#x2019;t send all parameters to the status, so it needs to be explicitly provided.</p>
+<p>In our case, we don&#x2019;t use this parameter directly (but it could be if we wanted to use it exactly). We actually append to it before use in <tt>params_linux.py</tt>:</p>
+
+<div class="source">
+<div class="source">
+<pre>from resource_management.libraries.functions import format
+# ...
+hdfs_grok_patterns_dir = format(&quot;{metron_apps_hdfs_dir}/patterns&quot;)
+</pre></div></div>
+<p>The <tt>format</tt> function is a special Ambari function that will let you create a string with properties in curly braces replaced by their values. In this case, <tt>hdfs_grok_patterns_dir</tt> will be <tt>/apps/metron/patterns</tt> and will be what we now follow in this example.</p>
+<p>Note: There are instances where we deviate a bit from this pattern and use format(format(&#x201c;{{some_prop}}&#x201d;)). This is not a mistake. Ambari does not natively support nested properties, and this was a workaround that accomplished being able to initialize values from env.xml files and have them also available to users as Ambari properties later. Here&#x2019;s an example from params_linux.py:</p>
+
+<div class="source">
+<div class="source">
+<pre>metron_apps_indexed_hdfs_dir = format(format(config['configurations']['metron-indexing-env']['metron_apps_indexed_hdfs_dir']))
+</pre></div></div>
+<p>and the relavant properties in metron-env.xml and metron-indexing-env.xml</p>
+<p>metron-env.xml</p>
+
+<div class="source">
+<div class="source">
+<pre>&lt;property&gt;
+    &lt;name&gt;metron_apps_hdfs_dir&lt;/name&gt;
+    &lt;value&gt;/apps/metron&lt;/value&gt;
+    &lt;description&gt;Metron apps HDFS dir&lt;/description&gt;
+    &lt;display-name&gt;Metron apps HDFS dir&lt;/display-name&gt;
+&lt;/property&gt;
+</pre></div></div>
+<p>metron-indexing-env.xml</p>
+
+<div class="source">
+<div class="source">
+<pre>&lt;property&gt;
+    &lt;name&gt;metron_apps_indexed_hdfs_dir&lt;/name&gt;
+    &lt;value&gt;{{metron_apps_hdfs_dir}}/indexing/indexed&lt;/value&gt;
+    &lt;description&gt;Indexing bolts will write to this HDFS directory&lt;/description&gt;
+    &lt;display-name&gt;Metron apps indexed HDFS dir&lt;/display-name&gt;
+&lt;/property&gt;
+</pre></div></div></div>
+<div class="section">
+<h4><a name="Importing_the_parameters_into_scripts"></a>Importing the parameters into scripts</h4>
+<p><tt>hdfs_grok_patterns_dir</tt> is used in <tt>METRON.CURRENT/package/scripts/parser_commands.py</tt>, but before we can reference it, we&#x2019;ll need the params available to <tt>parser_commands.py</tt></p>
+<p>To make them available, we take them in as part of the <tt>__init__</tt></p>
+
+<div class="source">
+<div class="source">
+<pre>def __init__(self, params):
+    if params is None:
+        raise ValueError(&quot;params argument is required for initialization&quot;)
+    self.__params = params
+    # Other initialization
+</pre></div></div>
+<p>This init is called from various Ambari service methods in <tt>METRON.CURRENT/package/scripts/parser_master.py</tt>, e.g.:</p>
+
+<div class="source">
+<div class="source">
+<pre>def stop(self, env, upgrade_type=None):
+    from params import params
+    env.set_params(params)
+    commands = ParserCommands(params)
+    commands.stop_parser_topologies()
+</pre></div></div>
+<p>Once the params are available to <tt>parser_commands.py</tt>, <tt>hdfs_grok_patterns_dir</tt> is by referencing <tt>self.__params.hdfs_grok_patterns_dir)</tt> In our case, this will create and populate <tt>/apps/metron/patterns</tt> on HDFS, owned by the metron user with appropriate permissions. It&#x2019;ll also log out what it&#x2019;s doing, which is important for being able to debug.</p>
+
+<div class="source">
+<div class="source">
+<pre>def init_parsers(self):
+    Logger.info(
+        &quot;Copying grok patterns from local directory '{0}' to HDFS '{1}'&quot;.format(self.__params.local_grok_patterns_dir,
+                                                                                self.__params.hdfs_grok_patterns_dir))
+
+    self.__params.HdfsResource(self.__params.hdfs_grok_patterns_dir,
+                               type=&quot;directory&quot;,
+                               action=&quot;create_on_execute&quot;,
+                               owner=self.__params.metron_user,
+                               mode=0755,
+                               source=self.__params.local_grok_patterns_dir)
+
+    Logger.info(&quot;Done initializing parser configuration&quot;)
+</pre></div></div></div></div>
+<div class="section">
+<h3><a name="Jinja_Templates_and_properties"></a>Jinja Templates and properties</h3>
+<p>Jinja templates allow for the ability to have most of a file defined, but allow variables to be filled in from the properties defined in our <tt>*-env.xml</tt> files.</p>
+<p>A variable to be replaced will take the form <tt>{{property_name}}</tt></p>
+<p>The properties are made available like any other property, and then the template itself is referenced in Python scripts in the <tt>METRON.CURRENT/package/scripts/</tt> directory.</p></div>
+<div class="section">
+<h3><a name="Jinja_template_property_walkthrough"></a>Jinja template property walkthrough</h3>
+<p>To illustrate the use of a property in a Jinja template, let&#x2019;s take an example of an existing property and walk through exactly how it&#x2019;s implemented.</p>
+<p>A straightforward example is <tt>metron_log_dir</tt> in <tt>METRON.CURRENT/configuration/metron-env.xml</tt></p>
+<div class="section">
+<h4><a name="Defining_the_property"></a>Defining the property</h4>
+<p>First, we need the property in the configuration file:</p>
+
+<div class="source">
+<div class="source">
+<pre>&lt;property&gt;
+    &lt;name&gt;metron_log_dir&lt;/name&gt;
+    &lt;value&gt;/var/log/metron&lt;/value&gt;
+    &lt;description&gt;Log directory for metron&lt;/description&gt;
+    &lt;display-name&gt;Metron log dir&lt;/display-name&gt;
+&lt;/property&gt;
+</pre></div></div></div>
+<div class="section">
+<h4><a name="Making_the_property_available_to_templates"></a>Making the property available to templates</h4>
+<p>This property isn&#x2019;t used in Ambari&#x2019;s status check, so it was directly added to <tt>METRON.CURRENT/package/scripts/params/params_linux.py</tt>. All we do is add the variable, and reference Ambari&#x2019;s config object appropriately, making sure to reference <tt>metron-env</tt> as the file where the property is located.</p>
+
+<div class="source">
+<div class="source">
+<pre>metron_log_dir = config['configurations']['metron-env']['metron_log_dir']
+</pre></div></div>
+<p>The property is referenced in <tt>metron.j2</tt>.</p>
+
+<div class="source">
+<div class="source">
+<pre>METRON_LOG_DIR=&quot;{{metron_log_dir}}&quot;
+</pre></div></div></div>
+<div class="section">
+<h4><a name="Using_the_template_in_scripts"></a>Using the template in scripts</h4>
+<p>For that property to actually be used, it is referenced in <tt>rest_master.py</tt>:</p>
+
+<div class="source">
+<div class="source">
+<pre>from resource_management.core.resources.system import File
+from resource_management.core.source import Template
+
+def configure(self, env, upgrade_type=None, config_dir=None):
+    # Do stuff
+
+    env.set_params(params)
+    File(format(&quot;/etc/sysconfig/metron&quot;),
+         content=Template(&quot;metron.j2&quot;)
+         )
+    # Do stuff
+</pre></div></div>
+<p>This will create a file on the Ambari agent machine&#x2019;s file system, <tt>/etc/sysconfig/metron</tt>, with the content of <tt>metron.j2</tt>, after replacing <tt>{{metron_log_dir}}</tt> with the value of the property (<tt>/var/log/metron</tt>)</p>
+
+<div class="source">
+<div class="source">
+<pre>...
+METRON_LOG_DIR=&quot;/var/log/metron&quot;
+...
+</pre></div></div></div></div>
+<div class="section">
+<h3><a name="Defining_presentation_in_the_Ambari_UI"></a>Defining presentation in the Ambari UI</h3>
+<p>Where and how a property is displayed can be controlled in the <tt>METRON.CURRENT/themes/metron_theme.json</tt> file. Consider the <tt>enrichment_workers</tt> property that is defined in a component specific <tt>*-env.xml</tt> file, in this case <tt>METRON.CURRENT/configuration/metron-enrichment-env.xml</tt>. The property appears in <tt>METRON.CURRENT/themes/metron_theme.json</tt> in two different sections:</p>
+
+<div class="source">
+<div class="source">
+<pre>{
+  &quot;configuration&quot;: {
+    &quot;layouts&quot;: [...],
+    &quot;placement&quot;: {
+      &quot;configs&quot;: [
+        {
+          &quot;config&quot;: &quot;metron-enrichment-env/enrichment_workers&quot;,
+          &quot;subsection-name&quot;: &quot;subsection-enrichment-storm&quot;
+        },
+        ...
+      ]
+    },
+    &quot;widgets&quot;: [
+      {
+        &quot;config&quot;: &quot;metron-enrichment-env/enrichment_workers&quot;,
+        &quot;widget&quot;: {
+          &quot;type&quot;: &quot;text-field&quot;
+        }
+      }
+    ]
+  }
+}
+</pre></div></div>
+<p>The first setting places the property in the &#x201c;Storm&#x201d; section of the &#x201c;Enrichment&#x201d; tab in Ambari. Sections are defined in <tt>metron_theme.json</tt> under <tt>/configuration/layouts</tt>.</p>
+<p>The second setting defines a widget type of <tt>text-field</tt>. See the <a class="externalLink" href="https://cwiki.apache.org/confluence/display/AMBARI/Enhanced+Configs">Ambari Wiki</a> for more detail on widget types.</p>
+<p>If a property is defined in <tt>metron-env.xml</tt>, it is not necessary to add it to the <tt>metron_theme.json</tt> file. By default the property will be located under the &#x201c;Advanced&#x201d; tab in the &#x201c;Advanced metron-env&#x201d; section.</p></div></div>
+<div class="section">
+<h2><a name="How_to_identify_errors_in_MPack_changes"></a>How to identify errors in MPack changes</h2>
+<p>Typically, any errors are thrown at one of two times:</p>
+
+<ol style="list-style-type: decimal">
+  
+<li>Attempting to install Metron as a whole. These are typically service level definition errors, not property errors. Logs will often be found in <tt>/var/log/ambari-server/ambari-server.log</tt>. Often the log will indicate it was unable to load a particular service or subservice with some more detail.</li>
+  
+<li>Running the actual functionality. These typically tend to cause errors in the UI at runtime. Logs are usually found in <tt>/var/log/ambari-agent/ambari-agent.log</tt>.</li>
+</ol>
+<p>Unfortunately, because errors tend to occur at runtime, it&#x2019;s often necessary to add things like logging statements, or even just throw errors to print out in the Ambari UI.</p>
+<p>The primary solution to these is to look in the logs for exceptions, see what&#x2019;s going wrong (Property doesn&#x2019;t exist? Malformed file couldn&#x2019;t be loaded?), and adjust appropriately.</p></div>
+<div class="section">
+<h2><a name="Testing_changes_without_cycling_Vagrant_build"></a>Testing changes without cycling Vagrant build</h2>
+<p>There are techniques we can use to avoid spinning down and spinning back up Vagrant.</p>
+<div class="section">
+<h3><a name="Directly_modifying_files_in_Ambari"></a>Directly modifying files in Ambari</h3>
+<p>This assumes the installation went through, and we&#x2019;re just working on getting our particular feature / adjustment to work properly. This is specific to a single node environment like Vagrant, because of other factors (such as consistency across agents). Multinode environments should generally be used when the feature is already stable and updating is preferably a reinstall of the management pack and the Metron service in general.</p>
+<p>Ambari stores the Python files from the service in a couple places. We&#x2019;ll want to update the files, then have Ambari pick up the updated versions and use them as the new basis. A reinstall of Metron is unnecessary for this type of testing.</p>
+<p>Specifically, the server files live in</p>
+
+<div class="source">
+<div class="source">
+<pre>/var/lib/ambari-server/resources/mpacks/metron-ambari.mpack-0.4.0.0/common-services
+/var/lib/ambari-agent/cache/common-services
+</pre></div></div>
+<p>e.g. enrichment_commands.py can be found in:</p>
+
+<div class="source">
+<div class="source">
+<pre>/var/lib/ambari-server/resources/mpacks/metron-ambari.mpack-0.4.0.0/common-services/METRON/0.4.0/package/scripts/enrichment_commands.py
+/var/lib/ambari-agent/cache/common-services/METRON/0.4.0/package/scripts/enrichment_commands.py
+</pre></div></div>
+<p>A <tt>find</tt> command can also be useful in quickly locating the exact location of a file, e.g.</p>
+
+<div class="source">
+<div class="source">
+<pre>[root@node1 ~]# find /var/lib/ -name enrichment_commands.py
+/var/lib/ambari-server/resources/mpacks/metron-ambari.mpack-0.4.0.0/common-services/METRON/0.4.0/package/scripts/enrichment_commands.py
+/var/lib/ambari-agent/cache/common-services/METRON/0.4.0/package/scripts/enrichment_commands.py
+</pre></div></div>
+<p>The steps to update, for anything affecting an Ambari agent node, e.g. setup scripts during the service install process, are:</p>
+
+<ol style="list-style-type: decimal">
+  
+<li>Stop Metron through Ambari. If the property in question is used by the topologies, we&#x2019;ll want them stopped, so they can be restarted with the new property. This can sometimes be skipped if the change doesn&#x2019;t affect the topologies themselves, but is a case by case choice.</li>
+  
+<li>Edit the file(s) with your changes. The ambari-agent file must be edited, but generally better to update both for consistency.</li>
+  
+<li>
+<p>Restart the Ambari Agent to get the cache to pick up the modified file</p>
+  
+<div class="source">
+<div class="source">
+<pre>  ambari-agent restart
+</pre></div></div></li>
+  
+<li>Start Metron through Ambari if it was stopped.</li>
+</ol></div>
+<div class="section">
+<h3><a name="Reinstalling_the_mpack"></a>Reinstalling the mpack</h3>
+<p>After we&#x2019;ve modified files in Ambari and the mpack is working, it is a good idea to reinstall it. Fortunately this can be done without rebuilding the Vagrant environment by following these steps:</p>
+
+<ol style="list-style-type: decimal">
+  
+<li>Stop Metron through Ambari and remove the Metron service</li>
+  
+<li>
+<p>Rebuild the mpack on your local machine and deploy it to Vagrant, ensuring that all changes made directly to files in Ambari were also made in your local environment</p>
+  
+<div class="source">
+<div class="source">
+<pre>  cd metron-deployment
+  mvn clean package
+  scp packaging/ambari/metron-mpack/target/metron_mpack-0.4.0.0.tar.gz root@node1:~
+</pre></div></div></li>
+  
+<li>
+<p>Log in to Vagrant, deploy the mpack and restart Ambari</p>
+  
+<div class="source">
+<div class="source">
+<pre>  ssh root@node1
+  ambari-server install-mpack --mpack=metron_mpack-0.4.0.0.tar.gz --verbose --force
+  ambari-server restart
+</pre></div></div></li>
+  
+<li>Install the mpack through Ambari as you normally would</li>
+</ol></div></div>
+<div class="section">
+<h2><a name="Configuration_involving_dependency_services"></a>Configuration involving dependency services</h2>
+<p>Metron can define expectations on other services, e.g. Storm&#x2019;s <tt>topology.classpath</tt> should be <tt>/etc/hbase/conf:/etc/hadoop/conf</tt>. This happens in <tt>METRON.CURRENT/service_advisor.py</tt>.</p>
+<p>The value is defined in a map in <tt>getSTORMSiteDesiredValues(self, is_secured)</tt>. This map is used by <tt>validateSTORMSiteConfigurations</tt> to ensure that the value used by the component is what we need it to be. Generally, only the map should need to be modified.</p>
+<p>Properties from the other services can also be used and examined. We use this to build the appropriate URL for Storm, because it differs based on Kerberos security. For example, to retrieve from another service, access the configurations array, retrieve the appropriate config file, retrieve the properties, and finally the desired property.</p>
+
+<div class="source">
+<div class="source">
+<pre>stormUIServerPort = services[&quot;configurations&quot;][&quot;storm-site&quot;][&quot;properties&quot;][&quot;ui.port&quot;]
+</pre></div></div>
+<p>The security of the cluster can be checked with</p>
+
+<div class="source">
+<div class="source">
+<pre>is_secured = self.isSecurityEnabled(services)
+</pre></div></div>
+<p>Note that the configuration expectations will be properly enforced if the cluster is upgraded (e.g. the Storm URL is properly updated) and it does not need to occur manually.</p></div>
+<div class="section">
+<h2><a name="Kerberos"></a>Kerberos</h2>
+<p>Any scripts interacting with underlying secured tech needs to have <tt>kinit</tt> run as needed. This includes anything interacting with HDFS, HBase, Kafka, Storm, etc. This <tt>kinit</tt> should be run in a conditional statement, to avoid breaking non-Kerberized clusters.</p>
+<p>Ambari can run <tt>kinit</tt>, as a given user with the appropriate keytab like so:</p>
+
+<div class="source">
+<div class="source">
+<pre>if self.__params.security_enabled:
+    metron_security.kinit(self.__params.kinit_path_local,
+                          self.__params.metron_keytab_path,
+                          self.__params.metron_principal_name,
+                          execute_user=self.__params.metron_user)
+</pre></div></div>
+<p>The <tt>security_enabled</tt> param is already made available, along with appropriate keytabs for metron, hdfs, kafka, and hbase users.</p></div>
+<div class="section">
+<h2><a name="Best_practices"></a>Best practices</h2>
+
+<ul>
+  
+<li>
+<p>Write scripts to be idempotent. The pattern currently used is to write a file out when a task is finished, e.g. setting up ACLs or tables. For example, when indexing is configured, a file is written out and checked based on a property.</p>
+  
+<div class="source">
+<div class="source">
+<pre>  def set_configured(self):
+  File(self.__params.indexing_configured_flag_file,
+       content=&quot;&quot;,
+       owner=self.__params.metron_user,
+       mode=0755)
+</pre></div></div>
+<p>This is checked in the indexing master</p></li>
+</ul>
+
+<div class="source">
+<div class="source">
+<pre>  if not commands.is_configured():
+      commands.init_kafka_topics()
+      commands.init_hdfs_dir()
+      commands.set_configured()
+</pre></div></div>
+
+<ul>
+  
+<li>Ensure ACLs are properly managed. This includes Kafka and HBase. Often this involves a config file written out as above because this isn&#x2019;t idempotent!
+  
+<ul>
+    
+<li>Make sure to <tt>kinit</tt> as the correct user for setting up ACLs in a secured cluster. This is usually kafka for Kafka and hbase for HBase.</li>
+    
+<li>See <tt>set_hbase_acls</tt> in <tt>METRON.CURRENT/package/scripts/enrichment_commands.py</tt> for an HBase example</li>
+    
+<li>See <tt>init_kafka_acls</tt> in <tt>METRON.CURRENT/package/scripts/enrichment_commands.py</tt> and <tt>METRON.CURRENT/package/scripts/metron_service.py</tt> for an Kafka example</li>
+  </ul></li>
+</ul></div>
+                  </div>
+            </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container-fluid">
+              <div class="row span12">Copyright &copy;                    2017
+                        <a href="https://www.apache.org">The Apache Software Foundation</a>.
+            All Rights Reserved.      
+                    
+      </div>
+
+                          
+        
+                </div>
+    </footer>
+  </body>
+</html>

Added: dev/metron/0.4.2-RC1/site-book/metron-deployment/packaging/docker/ansible-docker/index.html
==============================================================================
--- dev/metron/0.4.2-RC1/site-book/metron-deployment/packaging/docker/ansible-docker/index.html (added)
+++ dev/metron/0.4.2-RC1/site-book/metron-deployment/packaging/docker/ansible-docker/index.html Fri Dec  8 09:27:19 2017
@@ -0,0 +1,324 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2017-12-08
+ | Rendered using Apache Maven Fluido Skin 1.3.0
+-->
+<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="20171208" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Metron &#x2013; Overview</title>
+    <link rel="stylesheet" href="../../../../css/apache-maven-fluido-1.3.0.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.3.0.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>
+        </li>
+      <li class="divider ">/</li>
+            <li class="">
+                    <a href="http://metron.apache.org/" class="externalLink" title="Metron">
+        Metron</a>
+        </li>
+      <li class="divider ">/</li>
+            <li class="">
+                    <a href="../../../../index.html" title="Documentation">
+        Documentation</a>
+        </li>
+      <li class="divider ">/</li>
+        <li class="">Overview</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-08</li> <li class="divider pull-right">|</li>
+              <li id="projectVersion" class="pull-right">Version: 0.4.2</li>
+            
+                            </ul>
+      </div>
+
+            
+      <div class="row-fluid">
+        <div id="leftColumn" class="span3">
+          <div class="well sidebar-nav">
+                
+                    
+                <ul class="nav nav-list">
+                    <li class="nav-header">User Documentation</li>
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
                                                                          
+      <li>
+    
+                          <a href="../../../../index.html" title="Metron">
+          <i class="icon-chevron-down"></i>
+        Metron</a>
+                    <ul class="nav nav-list">
+                      
+      <li>
+    
+                          <a href="../../../../Upgrading.html" title="Upgrading">
+          <i class="none"></i>
+        Upgrading</a>
+            </li>
+                                                                                                                                                      
+      <li>
+    
+                          <a href="../../../../metron-analytics/index.html" title="Analytics">
+          <i class="icon-chevron-right"></i>
+        Analytics</a>
+                  </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-contrib/metron-docker/index.html" title="Docker">
+          <i class="none"></i>
+        Docker</a>
+            </li>
+                                                                                                                                                                                                                                                                                                                                                                                                                      
+      <li>
+    
+                          <a href="../../../../metron-deployment/index.html" title="Deployment">
+          <i class="icon-chevron-down"></i>
+        Deployment</a>
+                    <ul class="nav nav-list">
+                      
+      <li>
+    
+                          <a href="../../../../metron-deployment/Kerberos-ambari-setup.html" title="Kerberos-ambari-setup">
+          <i class="none"></i>
+        Kerberos-ambari-setup</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-deployment/Kerberos-manual-setup.html" title="Kerberos-manual-setup">
+          <i class="none"></i>
+        Kerberos-manual-setup</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-deployment/amazon-ec2/index.html" title="Amazon-ec2">
+          <i class="none"></i>
+        Amazon-ec2</a>
+            </li>
+                                                                        
+      <li>
+    
+                          <a href="../../../../metron-deployment/other-examples/index.html" title="Other-examples">
+          <i class="icon-chevron-right"></i>
+        Other-examples</a>
+                  </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-deployment/packaging/ambari/index.html" title="Ambari">
+          <i class="none"></i>
+        Ambari</a>
+            </li>
+                      
+      <li class="active">
+    
+            <a href="#"><i class="none"></i>Ansible-docker</a>
+          </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-deployment/packaging/docker/rpm-docker/index.html" title="Rpm-docker">
+          <i class="none"></i>
+        Rpm-docker</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-deployment/packaging/packer-build/index.html" title="Packer-build">
+          <i class="none"></i>
+        Packer-build</a>
+            </li>
+                                                                                                                                                
+      <li>
+    
+                          <a href="../../../../metron-deployment/roles/index.html" title="Roles">
+          <i class="icon-chevron-right"></i>
+        Roles</a>
+                  </li>
+                                                                                          
+      <li>
+    
+                          <a href="../../../../metron-deployment/vagrant/index.html" title="Vagrant">
+          <i class="icon-chevron-right"></i>
+        Vagrant</a>
+                  </li>
+              </ul>
+        </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-interface/metron-alerts/index.html" title="Alerts">
+          <i class="none"></i>
+        Alerts</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-interface/metron-config/index.html" title="Config">
+          <i class="none"></i>
+        Config</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-interface/metron-rest/index.html" title="Rest">
+          <i class="none"></i>
+        Rest</a>
+            </li>
+                                                                                                                                                                                                                                                                                    
+      <li>
+    
+                          <a href="../../../../metron-platform/index.html" title="Platform">
+          <i class="icon-chevron-right"></i>
+        Platform</a>
+                  </li>
+                                                                                          
+      <li>
+    
+                          <a href="../../../../metron-sensors/index.html" title="Sensors">
+          <i class="icon-chevron-right"></i>
+        Sensors</a>
+                  </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-stellar/stellar-3rd-party-example/index.html" title="Stellar-3rd-party-example">
+          <i class="none"></i>
+        Stellar-3rd-party-example</a>
+            </li>
+                                                                        
+      <li>
+    
+                          <a href="../../../../metron-stellar/stellar-common/index.html" title="Stellar-common">
+          <i class="icon-chevron-right"></i>
+        Stellar-common</a>
+                  </li>
+                                                                                          
+      <li>
+    
+                          <a href="../../../../use-cases/index.html" title="Use-cases">
+          <i class="icon-chevron-right"></i>
+        Use-cases</a>
+                  </li>
+              </ul>
+        </li>
+            </ul>
+                
+                    
+                
+          <hr class="divider" />
+
+           <div id="poweredBy">
+                            <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="span9" >
+                                  
+            <h1>Overview</h1>
+<p><a name="Overview"></a></p>
+<p>The Metron ansible-docker container is provided in an effort reduce the installation burden of building Metron. It may also be used to deploy Metron in a live environment. It is provisioned with software required to sucessfully build metron and run the deployment scripts.</p>
+<div class="section">
+<h2><a name="Building_the_Container"></a>Building the Container</h2>
+
+<ol style="list-style-type: decimal">
+  
+<li>Install Docker ( <a class="externalLink" href="https://www.docker.com/products/overview">https://www.docker.com/products/overview</a> )</li>
+  
+<li>Navigate to &lt;project-directory&gt;/metron-deployment/packaging/docker/ansible-docker</li>
+  
+<li>Build the container <tt>docker build -t ansible-docker:2.0.0.2 .</tt></li>
+</ol></div>
+<div class="section">
+<h2><a name="Using_the_Container_to_build_metron"></a>Using the Container to build metron</h2>
+<p>anytime after building the container you can run it with the following command</p>
+<p><tt>docker run -it -v \&lt;project-directory\&gt;:/root/metron ansible-docker:2.0.0.2 bash</tt></p>
+<p>If you are going to build metron multiple times, you may want to map the /root/.m2 maven repo from outside of the container so that you don&#x2019;t start with an empty repo every build and have to download the world.</p>
+<p><tt>docker run -it -v \&lt;project-directory\&gt;:/root/metron -v \&lt;your .m2 directory\&gt;:/root/.m2 ansible-docker:2.0.0.2 bash</tt></p>
+<p>After running the container:</p>
+
+<ol style="list-style-type: decimal">
+  
+<li>cd /root/metron</li>
+  
+<li>run build commands, for example:
+  
+<ul>
+    
+<li>build metron without tests : <tt>mvn clean package -DskipTests</tt></li>
+    
+<li>build metron and build the rpms as well : <tt>mvn clean install &amp;&amp; cd metron-deployment &amp;&amp; mvn package -P build-rpms</tt></li>
+  </ul></li>
+</ol>
+<p>If you wish to use this build with a vagrant instance, then after building with rpms as above, modify your usual vagrant up command to skip the build role, as so:</p>
+<p><tt>vagrant --ansible-skip-tags=&quot;build&quot; up</tt></p></div>
+<div class="section">
+<h2><a name="Using_the_Container_for_deployment"></a>Using the Container for deployment</h2>
+
+<blockquote>
+<p>Note these instructions are outdated</p>
+</blockquote>
+<p>Full instructions are found on the wiki at <a class="externalLink" href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=65144361">https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=65144361</a></p></div>
+                  </div>
+            </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container-fluid">
+              <div class="row span12">Copyright &copy;                    2017
+                        <a href="https://www.apache.org">The Apache Software Foundation</a>.
+            All Rights Reserved.      
+                    
+      </div>
+
+                          
+        
+                </div>
+    </footer>
+  </body>
+</html>

Added: dev/metron/0.4.2-RC1/site-book/metron-deployment/packaging/docker/rpm-docker/index.html
==============================================================================
--- dev/metron/0.4.2-RC1/site-book/metron-deployment/packaging/docker/rpm-docker/index.html (added)
+++ dev/metron/0.4.2-RC1/site-book/metron-deployment/packaging/docker/rpm-docker/index.html Fri Dec  8 09:27:19 2017
@@ -0,0 +1,294 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2017-12-08
+ | Rendered using Apache Maven Fluido Skin 1.3.0
+-->
+<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="20171208" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Metron &#x2013; Overview</title>
+    <link rel="stylesheet" href="../../../../css/apache-maven-fluido-1.3.0.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.3.0.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>
+        </li>
+      <li class="divider ">/</li>
+            <li class="">
+                    <a href="http://metron.apache.org/" class="externalLink" title="Metron">
+        Metron</a>
+        </li>
+      <li class="divider ">/</li>
+            <li class="">
+                    <a href="../../../../index.html" title="Documentation">
+        Documentation</a>
+        </li>
+      <li class="divider ">/</li>
+        <li class="">Overview</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-08</li> <li class="divider pull-right">|</li>
+              <li id="projectVersion" class="pull-right">Version: 0.4.2</li>
+            
+                            </ul>
+      </div>
+
+            
+      <div class="row-fluid">
+        <div id="leftColumn" class="span3">
+          <div class="well sidebar-nav">
+                
+                    
+                <ul class="nav nav-list">
+                    <li class="nav-header">User Documentation</li>
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
                                                                          
+      <li>
+    
+                          <a href="../../../../index.html" title="Metron">
+          <i class="icon-chevron-down"></i>
+        Metron</a>
+                    <ul class="nav nav-list">
+                      
+      <li>
+    
+                          <a href="../../../../Upgrading.html" title="Upgrading">
+          <i class="none"></i>
+        Upgrading</a>
+            </li>
+                                                                                                                                                      
+      <li>
+    
+                          <a href="../../../../metron-analytics/index.html" title="Analytics">
+          <i class="icon-chevron-right"></i>
+        Analytics</a>
+                  </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-contrib/metron-docker/index.html" title="Docker">
+          <i class="none"></i>
+        Docker</a>
+            </li>
+                                                                                                                                                                                                                                                                                                                                                                                                                      
+      <li>
+    
+                          <a href="../../../../metron-deployment/index.html" title="Deployment">
+          <i class="icon-chevron-down"></i>
+        Deployment</a>
+                    <ul class="nav nav-list">
+                      
+      <li>
+    
+                          <a href="../../../../metron-deployment/Kerberos-ambari-setup.html" title="Kerberos-ambari-setup">
+          <i class="none"></i>
+        Kerberos-ambari-setup</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-deployment/Kerberos-manual-setup.html" title="Kerberos-manual-setup">
+          <i class="none"></i>
+        Kerberos-manual-setup</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-deployment/amazon-ec2/index.html" title="Amazon-ec2">
+          <i class="none"></i>
+        Amazon-ec2</a>
+            </li>
+                                                                        
+      <li>
+    
+                          <a href="../../../../metron-deployment/other-examples/index.html" title="Other-examples">
+          <i class="icon-chevron-right"></i>
+        Other-examples</a>
+                  </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-deployment/packaging/ambari/index.html" title="Ambari">
+          <i class="none"></i>
+        Ambari</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-deployment/packaging/docker/ansible-docker/index.html" title="Ansible-docker">
+          <i class="none"></i>
+        Ansible-docker</a>
+            </li>
+                      
+      <li class="active">
+    
+            <a href="#"><i class="none"></i>Rpm-docker</a>
+          </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-deployment/packaging/packer-build/index.html" title="Packer-build">
+          <i class="none"></i>
+        Packer-build</a>
+            </li>
+                                                                                                                                                
+      <li>
+    
+                          <a href="../../../../metron-deployment/roles/index.html" title="Roles">
+          <i class="icon-chevron-right"></i>
+        Roles</a>
+                  </li>
+                                                                                          
+      <li>
+    
+                          <a href="../../../../metron-deployment/vagrant/index.html" title="Vagrant">
+          <i class="icon-chevron-right"></i>
+        Vagrant</a>
+                  </li>
+              </ul>
+        </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-interface/metron-alerts/index.html" title="Alerts">
+          <i class="none"></i>
+        Alerts</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-interface/metron-config/index.html" title="Config">
+          <i class="none"></i>
+        Config</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-interface/metron-rest/index.html" title="Rest">
+          <i class="none"></i>
+        Rest</a>
+            </li>
+                                                                                                                                                                                                                                                                                    
+      <li>
+    
+                          <a href="../../../../metron-platform/index.html" title="Platform">
+          <i class="icon-chevron-right"></i>
+        Platform</a>
+                  </li>
+                                                                                          
+      <li>
+    
+                          <a href="../../../../metron-sensors/index.html" title="Sensors">
+          <i class="icon-chevron-right"></i>
+        Sensors</a>
+                  </li>
+                      
+      <li>
+    
+                          <a href="../../../../metron-stellar/stellar-3rd-party-example/index.html" title="Stellar-3rd-party-example">
+          <i class="none"></i>
+        Stellar-3rd-party-example</a>
+            </li>
+                                                                        
+      <li>
+    
+                          <a href="../../../../metron-stellar/stellar-common/index.html" title="Stellar-common">
+          <i class="icon-chevron-right"></i>
+        Stellar-common</a>
+                  </li>
+                                                                                          
+      <li>
+    
+                          <a href="../../../../use-cases/index.html" title="Use-cases">
+          <i class="icon-chevron-right"></i>
+        Use-cases</a>
+                  </li>
+              </ul>
+        </li>
+            </ul>
+                
+                    
+                
+          <hr class="divider" />
+
+           <div id="poweredBy">
+                            <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="span9" >
+                                  
+            <h1>Overview</h1>
+<p><a name="Overview"></a></p>
+<p>The Metron ansible-docker container is provided in an effort reduce the installation burden of deploying Metron in a live envirionment. It is provisioned with software required to sucessfully run the deployment scripts.</p>
+<div class="section">
+<h2><a name="Building_the_Container"></a>Building the Container</h2>
+
+<ol style="list-style-type: decimal">
+  
+<li>Install Docker ( <a class="externalLink" href="https://www.docker.com/products/overview">https://www.docker.com/products/overview</a> )</li>
+  
+<li>Navigate to &lt;project-directory&gt;/metron-deployment/packaging/rpm-docker</li>
+  
+<li>Build the container <tt>docker build -t rpm-docker .</tt></li>
+</ol></div>
+                  </div>
+            </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container-fluid">
+              <div class="row span12">Copyright &copy;                    2017
+                        <a href="https://www.apache.org">The Apache Software Foundation</a>.
+            All Rights Reserved.      
+                    
+      </div>
+
+                          
+        
+                </div>
+    </footer>
+  </body>
+</html>

Added: dev/metron/0.4.2-RC1/site-book/metron-deployment/packaging/packer-build/index.html
==============================================================================
--- dev/metron/0.4.2-RC1/site-book/metron-deployment/packaging/packer-build/index.html (added)
+++ dev/metron/0.4.2-RC1/site-book/metron-deployment/packaging/packer-build/index.html Fri Dec  8 09:27:19 2017
@@ -0,0 +1,334 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2017-12-08
+ | Rendered using Apache Maven Fluido Skin 1.3.0
+-->
+<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="20171208" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Metron &#x2013; Build Metron Images</title>
+    <link rel="stylesheet" href="../../../css/apache-maven-fluido-1.3.0.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.3.0.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>
+        </li>
+      <li class="divider ">/</li>
+            <li class="">
+                    <a href="http://metron.apache.org/" class="externalLink" title="Metron">
+        Metron</a>
+        </li>
+      <li class="divider ">/</li>
+            <li class="">
+                    <a href="../../../index.html" title="Documentation">
+        Documentation</a>
+        </li>
+      <li class="divider ">/</li>
+        <li class="">Build Metron Images</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-08</li> <li class="divider pull-right">|</li>
+              <li id="projectVersion" class="pull-right">Version: 0.4.2</li>
+            
+                            </ul>
+      </div>
+
+            
+      <div class="row-fluid">
+        <div id="leftColumn" class="span3">
+          <div class="well sidebar-nav">
+                
+                    
+                <ul class="nav nav-list">
+                    <li class="nav-header">User Documentation</li>
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
                                                                          
+      <li>
+    
+                          <a href="../../../index.html" title="Metron">
+          <i class="icon-chevron-down"></i>
+        Metron</a>
+                    <ul class="nav nav-list">
+                      
+      <li>
+    
+                          <a href="../../../Upgrading.html" title="Upgrading">
+          <i class="none"></i>
+        Upgrading</a>
+            </li>
+                                                                                                                                                      
+      <li>
+    
+                          <a href="../../../metron-analytics/index.html" title="Analytics">
+          <i class="icon-chevron-right"></i>
+        Analytics</a>
+                  </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-contrib/metron-docker/index.html" title="Docker">
+          <i class="none"></i>
+        Docker</a>
+            </li>
+                                                                                                                                                                                                                                                                                                                                                                                                                      
+      <li>
+    
+                          <a href="../../../metron-deployment/index.html" title="Deployment">
+          <i class="icon-chevron-down"></i>
+        Deployment</a>
+                    <ul class="nav nav-list">
+                      
+      <li>
+    
+                          <a href="../../../metron-deployment/Kerberos-ambari-setup.html" title="Kerberos-ambari-setup">
+          <i class="none"></i>
+        Kerberos-ambari-setup</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-deployment/Kerberos-manual-setup.html" title="Kerberos-manual-setup">
+          <i class="none"></i>
+        Kerberos-manual-setup</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-deployment/amazon-ec2/index.html" title="Amazon-ec2">
+          <i class="none"></i>
+        Amazon-ec2</a>
+            </li>
+                                                                        
+      <li>
+    
+                          <a href="../../../metron-deployment/other-examples/index.html" title="Other-examples">
+          <i class="icon-chevron-right"></i>
+        Other-examples</a>
+                  </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-deployment/packaging/ambari/index.html" title="Ambari">
+          <i class="none"></i>
+        Ambari</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-deployment/packaging/docker/ansible-docker/index.html" title="Ansible-docker">
+          <i class="none"></i>
+        Ansible-docker</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-deployment/packaging/docker/rpm-docker/index.html" title="Rpm-docker">
+          <i class="none"></i>
+        Rpm-docker</a>
+            </li>
+                      
+      <li class="active">
+    
+            <a href="#"><i class="none"></i>Packer-build</a>
+          </li>
+                                                                                                                                                
+      <li>
+    
+                          <a href="../../../metron-deployment/roles/index.html" title="Roles">
+          <i class="icon-chevron-right"></i>
+        Roles</a>
+                  </li>
+                                                                                          
+      <li>
+    
+                          <a href="../../../metron-deployment/vagrant/index.html" title="Vagrant">
+          <i class="icon-chevron-right"></i>
+        Vagrant</a>
+                  </li>
+              </ul>
+        </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-interface/metron-alerts/index.html" title="Alerts">
+          <i class="none"></i>
+        Alerts</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-interface/metron-config/index.html" title="Config">
+          <i class="none"></i>
+        Config</a>
+            </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-interface/metron-rest/index.html" title="Rest">
+          <i class="none"></i>
+        Rest</a>
+            </li>
+                                                                                                                                                                                                                                                                                    
+      <li>
+    
+                          <a href="../../../metron-platform/index.html" title="Platform">
+          <i class="icon-chevron-right"></i>
+        Platform</a>
+                  </li>
+                                                                                          
+      <li>
+    
+                          <a href="../../../metron-sensors/index.html" title="Sensors">
+          <i class="icon-chevron-right"></i>
+        Sensors</a>
+                  </li>
+                      
+      <li>
+    
+                          <a href="../../../metron-stellar/stellar-3rd-party-example/index.html" title="Stellar-3rd-party-example">
+          <i class="none"></i>
+        Stellar-3rd-party-example</a>
+            </li>
+                                                                        
+      <li>
+    
+                          <a href="../../../metron-stellar/stellar-common/index.html" title="Stellar-common">
+          <i class="icon-chevron-right"></i>
+        Stellar-common</a>
+                  </li>
+                                                                                          
+      <li>
+    
+                          <a href="../../../use-cases/index.html" title="Use-cases">
+          <i class="icon-chevron-right"></i>
+        Use-cases</a>
+                  </li>
+              </ul>
+        </li>
+            </ul>
+                
+                    
+                
+          <hr class="divider" />
+
+           <div id="poweredBy">
+                            <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="span9" >
+                                  
+            <h1>Build Metron Images</h1>
+<p>Based on the fantastic <a class="externalLink" href="https://github.com/chef/bento">Bento</a> project developed by Chef.</p>
+<div class="section">
+<h2><a name="Images_Provided"></a>Images Provided</h2>
+
+<ul>
+  
+<li>base-centos-6.7: Centos 6.7 + HDP. Used in the full-dev-platform Vagrant image</li>
+</ul></div>
+<div class="section">
+<h2><a name="Prerequisites"></a>Prerequisites</h2>
+
+<ul>
+  
+<li><a class="externalLink" href="https://www.packer.io/">Packer</a> 0.12.2</li>
+  
+<li><a class="externalLink" href="https://www.virtualbox.org/">Virtualbox</a> 5.0.16+ (Tested with 5.0.20)</li>
+</ul></div>
+<div class="section">
+<h2><a name="Build_Both_Images"></a>Build Both Images</h2>
+<p>Navigate to &lt;your-project-directory&gt;/metron-deployment/packer-build  Execute bin/bento build</p>
+<p>Packer will build both images and export .box files to the ./builds directory.</p></div>
+<div class="section">
+<h2><a name="Build_Single_Images"></a>Build Single Images</h2>
+<p>Navigate to <i>your-project-directory</i>/metron-deployment/packer-build</p>
+
+<ul>
+  
+<li>Base Centos (full-dev)</li>
+</ul>
+
+<div class="source">
+<div class="source">
+<pre>bin/bento build base-centos-6.7.json
+</pre></div></div></div>
+<div class="section">
+<h2><a name="Using_Your_New_Box_File"></a>Using Your New Box File</h2>
+<p>Modify the relevant Vagrantfile (full-dev-platform) replacing the lines:</p>
+
+<div class="source">
+<div class="source">
+<pre>&lt;pre&gt;&lt;code&gt;config.vm.box = &quot;&lt;i&gt;box_name&lt;/i&gt;&quot;
+config.ssh.insert_key = true&lt;/code&gt;&lt;/pre&gt;
+</pre></div></div>
+<p>with</p>
+
+<div class="source">
+<div class="source">
+<pre>&lt;pre&gt;&lt;/code&gt;config.vm.box = &quot;&lt;i&gt;test_box_name&lt;/i&gt;&quot;
+config.vm.box = &quot;&lt;i&gt;PathToBoxfile/Boxfilename&lt;/i&gt;&quot;
+config.ssh.insert_key = true&lt;/code&gt;&lt;/pre&gt;
+</pre></div></div>
+<p>Launch the image as usual.</p>
+<p>Node: Vagrant will cache boxes, you can force Vagrant to reload your box by running <tt>vagrant box remove <i>test_box_name</i></tt> before launching your new image.</p></div>
+                  </div>
+            </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container-fluid">
+              <div class="row span12">Copyright &copy;                    2017
+                        <a href="https://www.apache.org">The Apache Software Foundation</a>.
+            All Rights Reserved.      
+                    
+      </div>
+
+                          
+        
+                </div>
+    </footer>
+  </body>
+</html>