<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8 from src/site/markdown/metron-deployment/amazon-ec2/index.md at 2018-12-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="20181214" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Metron &#x2013; Apache Metron on Amazon EC2</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 ">Apache Metron on Amazon EC2</li>
        <li id="publishDate" class="pull-right"><span class="divider">|</span> Last Published: 2018-12-14</li>
          <li id="projectVersion" class="pull-right">Version: 0.7.0</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 class="active"><a href="#"><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-right"></span>Development</a></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/metron-alerts/index.html" title="Alerts"><span class="none"></span>Alerts</a></li>
    <li><a href="../../metron-interface/metron-config/index.html" title="Config"><span class="none"></span>Config</a></li>
    <li><a href="../../metron-interface/metron-rest/index.html" title="Rest"><span class="none"></span>Rest</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>Apache Metron on Amazon EC2</h1>
<p>This project fully automates the provisioning of Apache Metron on Amazon EC2 infrastructure.  Starting with only your Amazon EC2 credentials, this project will create a fully-functioning, end-to-end, multi-node cluster running Apache Metron.</p>
<p>Warning: Amazon will charge for the use of their resources when running Apache Metron.  The amount will vary based on the number and size of hosts, along with current Amazon pricing structure.  Be sure to stop or terminate all of the hosts instantiated by Apache Metron when not in use to avoid unnecessary charges.</p>
<div class="section">
<h2><a name="AWS_Defaults"></a>AWS Defaults</h2>
<p>The Ansible playbook uses the following defaults for AWS deployment:</p>
<ul>

<li>Instances: 10</li>
<li>Region: us-west-2</li>
<li>Instance type: m4.xlarge</li>
</ul></div>
<div class="section">
<h2><a name="Getting_Started"></a>Getting Started</h2>
<div class="section">
<h3><a name="Prerequisites"></a>Prerequisites</h3>
<p>The host used to deploy Apache Metron will need the following software tools installed.  The following versions are known to work as of the time of this writing, but by no means are these the only working versions.</p>
<ul>

<li>Ansible 2.4.0+</li>
<li>Python 2.7.11</li>
<li>Maven 3.3.9</li>
</ul>
<p>Any platform that supports these tools is suitable, but the following instructions cover only 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 running the following command in a terminal.  Refer to the  <a class="externalLink" href="http://brew.sh/">Homebrew</a> home page for the latest installation instructions.</p>

<div>
<div>
<pre class="source">/usr/bin/ruby -e &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)&quot;
</pre></div></div>
</li>
<li>

<p>With Homebrew installed, run the following command in a terminal to install all of the required tools and dependencies.</p>

<div>
<div>
<pre class="source">brew update
brew tap caskroom/versions
brew cask install java8 vagrant virtualbox
brew install maven git node
</pre></div></div>
</li>
<li>

<p>Install Ansible by following the instructions <a class="externalLink" href="http://docs.ansible.com/ansible/intro_installation.html#latest-releases-via-pip">here</a>.</p>
</li>
<li>

<p>Ensure that a public SSH key is located at <tt>~/.ssh/id_rsa.pub</tt>.</p>

<div>
<div>
<pre class="source">$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChv5GJxPjR39UJV7VY17ivbLVlxFrH7UHwh1Jsjem4d1eYiAtde5N2y65/HRNxWbhYli9ED8k0/MRP92ejewucEbrPNq5mytPqdC4IvZ98Ln2GbqTDwvlP3T7xa/wYFOpFsOmXXql8216wSrnrS4f3XK7ze34S6/VmY+lsBYnr3dzyj8sG/mexpJgFS/w83mWJV0e/ryf4Hd7P6DZ5fO+nmTXfKNK22ga4ctcnbZ+toYcPL+ODCh8598XCKVo97XjwF5OxN3vl1p1HHguo3cHB4H1OIaqX5mUt59gFIZcAXUME89PO6NUiZDd3RTstpf125nQVkQAHu2fvW96/f037 nick@localhost
</pre></div></div>

<p>If this file does not exist, run the following command at a terminal and accept all defaults.  Only the public key, not the private key, will be uploaded to Amazon and configured on each host to enable SSH connectivity.  While it is possible to create and use an alternative key those details will not be covered.</p>

<div>
<div>
<pre class="source">ssh-keygen -t rsa
</pre></div></div>
</li>
<li>

<p>Ensure the JAVA_HOME environment variable is set</p>

<div>
<div>
<pre class="source">export JAVA_HOME=&quot;/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home&quot;
</pre></div></div>

<p>Notice: You must replace the path with the installed JDK version path</p>
</li>
</ol></div>
<div class="section">
<h3><a name="Amazon_Web_Services"></a>Amazon Web Services</h3>
<p>If you already have an Amazon Web Services account that you have used to deploy EC2 hosts, then you should be able to skip the next few steps.</p>
<ol style="list-style-type: decimal">

<li>

<p>Head over to <a class="externalLink" href="http://aws.amazon.com/">Amazon Web Services</a> and create an account.  As part of the account creation process you will need to provide a credit card to cover any charges that may apply.</p>
</li>
<li>

<p>Create a set of user credentials through <a class="externalLink" href="https://console.aws.amazon.com/iam/">Amazon&#x2019;s Identity and Access Management (IAM) </a> dashboard.  On the IAM dashboard menu click &#x201c;Users&#x201d; and then &#x201c;Create New User&#x201d;. Provide a name and ensure that &#x201c;Generate an access key for each user&#x201d; remains checked.  Download the credentials and keep them for later use.</p>
</li>
<li>

<p>While still in <a class="externalLink" href="https://console.aws.amazon.com/iam/">Amazon&#x2019;s Identity and Access Management (IAM) </a> dashboard, click on the user that was previously created.  Click the &#x201c;Permissions&#x201d; tab and then the &#x201c;Attach Policy&#x201d; button.  Attach the following policies to the user.</p>
<ul>

<li>AmazonEC2FullAccess</li>
<li>AmazonVPCFullAccess</li>
</ul>
</li>
<li>

<p>Apache Metron uses the <a class="externalLink" href="https://aws.amazon.com/marketplace/pp/B00NQAYLWO">official, open source CentOS 6</a> Amazon Machine Image (AMI).  If you have never used this AMI before then you will need to accept Amazon&#x2019;s terms and conditions.  Navigate to the <a class="externalLink" href="https://aws.amazon.com/marketplace/pp/B00NQAYLWO">web page for this AMI</a> and click the &#x201c;Continue&#x201d; button.  Choose the &#x201c;Manual Launch&#x201d; tab then click the &#x201c;Accept Software Terms&#x201d; button.</p>
</li>
</ol>
<p>Having successfully created your Amazon Web Services account, hopefully you will find that the most difficult tasks are behind us.</p></div>
<div class="section">
<h3><a name="Deploy_Metron"></a>Deploy Metron</h3>
<ol style="list-style-type: decimal">

<li>

<p>Use the Amazon access key by exporting its values via the shell&#x2019;s environment.  This allows Ansible to authenticate with Amazon EC2.  For example:</p>

<div>
<div>
<pre class="source">export AWS_ACCESS_KEY_ID=&quot;AKIAI6NRFEO27E5FFELQ&quot;
export AWS_SECRET_ACCESS_KEY=&quot;vTDydWJQnAer7OWauUS150i+9Np7hfCXrrVVP6ed&quot;
</pre></div></div>

<p>Notice: You must replace the access key values above with values from your own access key.</p>
</li>
<li>

<p>Start the Apache Metron deployment process.  When prompted provide a unique name for your Metron environment or accept the default.</p>

<div>
<div>
<pre class="source">$ ./run.sh
Metron Environment [metron-test]: my-metron-env
...
</pre></div></div>

<p>The process is likely to take between 70-90 minutes.  Fortunately, everything is fully automated and you should feel free to grab a coffee.</p>
</li>
</ol></div>
<div class="section">
<h3><a name="Explore_Metron"></a>Explore Metron</h3>
<ol style="list-style-type: decimal">

<li>

<p>After the deployment has completed successfully, a message like the following will be displayed.  Navigate to the specified resources to explore your newly minted Apache Metron environment.</p>

<div>
<div>
<pre class="source">TASK [debug] *******************************************************************
ok: [localhost] =&gt; {
    &quot;Success&quot;: [
        &quot;Apache Metron deployed successfully&quot;,
        &quot;   Metron  @  http://ec2-52-37-255-142.us-west-2.compute.amazonaws.com:5000&quot;,
        &quot;   Ambari  @  http://ec2-52-37-225-202.us-west-2.compute.amazonaws.com:8080&quot;,
        &quot;   Sensors @  ec2-52-37-225-202.us-west-2.compute.amazonaws.com on tap0&quot;,
        &quot;For additional information, see https://metron.apache.org/'&quot;
    ]
}
</pre></div></div>
</li>
<li>

<p>Each of the provisioned hosts will be accessible from the internet. Connecting to one over SSH as the user <tt>centos</tt> will not require a password as it will authenticate with the pre-defined SSH key.</p>

<div>
<div>
<pre class="source">ssh centos@ec2-52-91-215-174.compute-1.amazonaws.com
</pre></div></div>
</li>
</ol></div></div>
<div class="section">
<h2><a name="Advanced_Usage"></a>Advanced Usage</h2>
<div class="section">
<h3><a name="Multiple_Environments"></a>Multiple Environments</h3>
<p>This process can support provisioning of multiple, isolated environments.  Simply change the <tt>env</tt> settings in <tt>conf/defaults.yml</tt>.  For example, you might provision separate development, test, and production environments.</p>

<div>
<div>
<pre class="source">env: metron-test
</pre></div></div>
</div>
<div class="section">
<h3><a name="Selective_Provisioning"></a>Selective Provisioning</h3>
<p>To provision only subsets of the entire Metron deployment, Ansible tags can be specified.  For example, to only deploy the sensors on an Amazon EC2 environment, run the following command:</p>

<div>
<div>
<pre class="source">./run.sh --tags=&quot;ec2,sensors&quot;
</pre></div></div>
</div>
<div class="section">
<h3><a name="Setting_REST_API_Profile"></a>Setting REST API Profile</h3>
<p>By default, EC2 is deployed with the <tt>dev</tt> Spring profile. This simply instructs the REST API to automatically setup default test users <tt>[user, user1, user2, admin]</tt> with password &#x201c;<tt>password</tt>&#x201d; as opposed to requiring the user to manually create users in the REST database. You can change this default functionality by removing the <tt>metron_spring_profiles_active</tt> setting in <tt>metron-deployment/roles/ambari_config/vars/small_cluster.yml</tt>. You can view more detail on the REST Spring profiles <a href="../../metron-interface/metron-rest/index.html#spring-profiles">here</a>.</p></div>
<div class="section">
<h3><a name="Custom_SSH_Key"></a>Custom SSH Key</h3>
<p>By default, the playbook will attempt to register your public SSH key <tt>~/.ssh/id_rsa.pub</tt> with each provisioned host.  This enables Ansible to communicate with each host using an SSH connection.  If would prefer to use another key simply add the path to the public key file to the <tt>key_file</tt> property in <tt>conf/defaults.yml</tt>.</p>
<p>For example, generate a new SSH key for Metron that will be stored at <tt>~/.ssh/my-metron-key</tt>.</p>

<div>
<div>
<pre class="source">$ ssh-keygen -q -f ~/.ssh/my-metron-key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
</pre></div></div>

<p>Add the path to the newly created SSH public key to <tt>conf/defaults.yml</tt>.</p>

<div>
<div>
<pre class="source">key_file: ~/.ssh/metron-private-key.pub
</pre></div></div>
</div></div>
<div class="section">
<h2><a name="Common_Errors"></a>Common Errors</h2>
<div class="section">
<h3><a name="Error:_.5Bunsupported_operation_exception.5D_custom_format_isn.E2.80.99t_supported"></a>Error: [unsupported_operation_exception] custom format isn&#x2019;t supported</h3>
<p>This error might be seen within Metron&#x2019;s default dashboard in Kibana 4.  This occurs when the index templates do not exist for the Snort, Bro or YAF indices in Elasticsearch.</p>
<p>The dashboard expects fields to be of a certain type.  If the index templates have not been loaded correctly, the data types for the fields in these indices will be incorrect and the dashboard will display this error.</p>
<div class="section">
<h4><a name="Solution"></a>Solution</h4>
<p>If you see this error, please report your findings by creating a JIRA or dropping an email to the Metron Users mailing list.  Follow these steps to work around the problem.</p>
<ol style="list-style-type: decimal">

<li>

<p>Define which Elasticsearch host to interact with.  Any Elasticsearch host should work.</p>

<div>
<div>
<pre class="source">export ES_HOST=&quot;http://ec2-52-25-237-20.us-west-2.compute.amazonaws.com:9200&quot;
</pre></div></div>
</li>
<li>

<p>Confirm the index templates are in fact missing.</p>

<div>
<div>
<pre class="source">curl -s -XGET $ES_HOST/_template
</pre></div></div>
</li>
<li>

<p>Manually load the index templates.</p>

<div>
<div>
<pre class="source">cd metron-deployment
curl -s -XPOST $ES_HOST/_template/bro_index -d @roles/metron_elasticsearch_templates/files/es_templates/bro_index.template
curl -s -XPOST $ES_HOST/_template/snort_index -d @roles/metron_elasticsearch_templates/files/es_templates/snort_index.template
curl -s -XPOST $ES_HOST/_template/yaf_index -d @roles/metron_elasticsearch_templates/files/es_templates/yaf_index.template
</pre></div></div>
</li>
<li>

<p>Delete the existing indexes.  Only a new index will use the templates defined in the previous step.</p>

<div>
<div>
<pre class="source">curl -s -XDELETE &quot;$ES_HOST/yaf_index*&quot;
curl -s -XDELETE &quot;$ES_HOST/bro_index*&quot;
curl -s -XDELETE &quot;$ES_HOST/snort_index*&quot;
</pre></div></div>
</li>
<li>

<p>Open up Kibana and wait for the new indexes to be created.  The dashboard should now work.</p>
</li>
</ol></div></div>
<div class="section">
<h3><a name="Error:_.E2.80.98No_handler_was_ready_to_authenticate.E2.80.A6Check_your_credentials.E2.80.99"></a>Error: &#x2018;No handler was ready to authenticate&#x2026;Check your credentials&#x2019;</h3>

<div>
<div>
<pre class="source">TASK [Define keypair] **********************************************************
failed: [localhost] =&gt; (item=ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDXbcb1AlWsEPP
  r9jEFrn0yun3PYNidJ/...david@hasselhoff.com) =&gt; {&quot;failed&quot;: true, &quot;item&quot;: &quot;ssh-r
  sa AAAAB3NzaC1yc2EAAAADAQABAAABAQDXbcb1AlWsEPPr9jEFr... david@hasselhoff.com&quot;,
  &quot;msg&quot;: &quot;No handler was ready to authenticate. 1 handlers were checked.
  ['HmacAuthV4Handler'] Check your credentials&quot;}
</pre></div></div>

<div class="section">
<h4><a name="Solution_1"></a>Solution 1</h4>
<p>This occurs when Ansible does not have the correct AWS access keys.  The following commands must return a valid access key that is defined within Amazon&#x2019;s <a class="externalLink" href="https://console.aws.amazon.com/iam/">Identity and Access Management</a> console.</p>

<div>
<div>
<pre class="source">$ echo $AWS_ACCESS_KEY_ID
AKIAI6NRFEO27E5FFELQ

$ echo $AWS_SECRET_ACCESS_KEY
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
</pre></div></div>
</div>
<div class="section">
<h4><a name="Solution_2"></a>Solution 2</h4>
<p>This error can occur if you have exported the correct AWS access key, but you are using <tt>sudo</tt> to run the Ansible playbook.  Do not use the <tt>sudo</tt> command when running the Ansible playbook.</p></div></div>
<div class="section">
<h3><a name="Error:_.E2.80.98OptInRequired:_.E2.80.A6_you_need_to_accept_terms_and_subscribe.E2.80.99"></a>Error: &#x2018;OptInRequired: &#x2026; you need to accept terms and subscribe&#x2019;</h3>

<div>
<div>
<pre class="source">TASK [metron-test: Instantiate 1 host(s) as sensors,ambari_master,metron,ec2] **
fatal: [localhost]: FAILED! =&gt; {&quot;changed&quot;: false, &quot;failed&quot;: true, &quot;msg&quot;:
&quot;Instance creation failed =&gt; OptInRequired: In order to use this AWS Marketplace
product you need to accept terms and subscribe. To do so please visit
http://aws.amazon.com/marketplace/pp?sku=6x5jmcajty9edm3f211pqjfn2&quot;}
to retry, use: --limit @playbook.retry
</pre></div></div>

<div class="section">
<h4><a name="Solution"></a>Solution</h4>
<p>Apache Metron uses the <a class="externalLink" href="https://aws.amazon.com/marketplace/pp?sku=6x5jmcajty9edm3f211pqjfn2">official CentOS 6 Amazon Machine Image</a> when provisioning hosts. Amazon requires that you accept certain terms and conditions when using any Amazon Machine Image (AMI).  Follow the link provided in the error message to accept the terms and conditions then re-run the playbook.</p></div></div>
<div class="section">
<h3><a name="Error:_.E2.80.98PendingVerification:_Your_account_is_currently_being_verified.E2.80.99"></a>Error: &#x2018;PendingVerification: Your account is currently being verified&#x2019;</h3>

<div>
<div>
<pre class="source">TASK [metron-test: Instantiate 1 host(s) as sensors,ambari_master,metron,ec2] **
fatal: [localhost]: FAILED! =&gt; {&quot;changed&quot;: false, &quot;failed&quot;: true, &quot;msg&quot;:
&quot;Instance creation failed =&gt; PendingVerification: Your account is currently
being verified. Verification normally takes less than 2 hours. Until your
account is verified, you may not be able to launch additional instances or
create additional volumes. If you are still receiving this message after more
than 2 hours, please let us know by writing to aws-verification@amazon.com. We
appreciate your patience.&quot;}
to retry, use: --limit @playbook.retry
</pre></div></div>

<div class="section">
<h4><a name="Solution"></a>Solution</h4>
<p>This will occur if you are attempting to deploy Apache Metron using a newly created Amazon Web Services account.  Follow the advice of the message and wait until Amazon&#x2019;s verification process is complete.  Amazon has some additional <a class="externalLink" href="http://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html">advice for dealing with this error and more</a>.</p>
<blockquote>

<p>Your account is pending verification. Until the verification process is complete, you may not be able to carry out requests with this account. If you have questions, contact <a class="externalLink" href="http://console.aws.amazon.com/support/home#/">AWS Support</a>.</p>
</blockquote></div></div>
<div class="section">
<h3><a name="Error:_.E2.80.98Instance_creation_failed_.3D.3E_InstanceLimitExceeded.E2.80.99"></a>Error: &#x2018;Instance creation failed =&gt; InstanceLimitExceeded&#x2019;</h3>

<div>
<div>
<pre class="source">TASK [metron-test: Instantiate 3 host(s) as search,metron,ec2] *****************
fatal: [localhost]: FAILED! =&gt; {&quot;changed&quot;: false, &quot;failed&quot;: true, &quot;msg&quot;:
&quot;Instance creation failed =&gt; InstanceLimitExceeded: You have requested more
instances (11) than your current instance limit of 10 allows for the specified
instance type. Please visit http://aws.amazon.com/contact-us/ec2-request to
request an adjustment to this limit.&quot;}
to retry, use: --limit @playbook.retry
</pre></div></div>

<div class="section">
<h4><a name="Solution"></a>Solution</h4>
<p>This will occur if Apache Metron attempts to deploy more host instances than allowed by your account.  The total number of instances required for Apache Metron can be reduced by editing <tt>deployment/amazon-ec/playbook.yml</tt>.  Perhaps a better alternative is to request of Amazon that this limit be increased.  Amazon has some additional <a class="externalLink" href="http://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html">advice for dealing with this error and more</a>.</p>
<blockquote>

<p>You&#x2019;ve reached the limit on the number of instances you can run concurrently. The limit depends on the instance type. For more information, see <a class="externalLink" href="http://aws.amazon.com/ec2/faqs/#How_many_instances_can_I_run_in_Amazon_EC2">How many instances can I run in Amazon EC2</a>. If you need additional instances, complete the <a class="externalLink" href="https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&amp;limitType=service-code-ec2-instances">Amazon EC2 Instance Request Form</a>.</p>
</blockquote></div></div>
<div class="section">
<h3><a name="Error:_.E2.80.98SSH_encountered_an_unknown_error_during_the_connection.E2.80.99"></a>Error: &#x2018;SSH encountered an unknown error during the connection&#x2019;</h3>

<div>
<div>
<pre class="source">TASK [setup] *******************************************************************
fatal: [ec2-52-26-113-221.us-west-2.compute.amazonaws.com]: UNREACHABLE! =&gt; {
  &quot;changed&quot;: false, &quot;msg&quot;: &quot;SSH encountered an unknown error during the
  connection. We recommend you re-run the command using -vvvv, which will enable
  SSH debugging output to help diagnose the issue&quot;, &quot;unreachable&quot;: true}
</pre></div></div>

<div class="section">
<h4><a name="Solution"></a>Solution</h4>
<p>This most often indicates that Ansible cannot connect to the host with the SSH key that it has access to.  This could occur if hosts are provisioned with one SSH key, but the playbook is executed subsequently with a different SSH key.  The issue can be addressed by either altering the <tt>key_file</tt> variable to point to the key that was used to provision the hosts or by simply terminating all hosts and re-running the playbook.</p></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>
