#
#  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.
#

# only need to build the RPMs for CentOS
metron_build_packages_cmd: "shell cd {{ metron_build_dir }}/metron-deployment && mvn clean package -DskipTests -Pbuild-rpms"

# ambari
ambari_host: "{{ groups.ambari_master[0] }}"
hdp_host_group: "{{ groups.ambari_slave }}"
ambari_port: 8080
ambari_user: admin
ambari_password: admin
cluster_type: single_node_vm
ambari_server_mem: 512
java_home: /usr/jdk64/jdk1.8.0_77

# hbase
pcap_hbase_table: pcap
tracker_hbase_table: access_tracker
threatintel_hbase_table: threatintel
enrichment_hbase_table: enrichment

# metron
metron_version: 0.6.0
metron_directory: /usr/metron/{{ metron_version }}
bro_version: "2.5.4"
fixbuf_version: "1.7.1"
yaf_version: "2.8.0"
daq_version: "2.0.6-1"
pycapa_repo: "https://github.com/OpenSOC/pycapa.git"
pycapa_home: "/opt/pycapa"
snort_version: "2.9.8.0-1"
snort_alert_csv_path: "/var/log/snort/alert.csv"
threat_intel_bulk_load: False

# data directories - only required to override defaults
zookeeper_data_dir: "/data1/hadoop/zookeeper"
namenode_checkpoint_dir: "/data1/hadoop/hdfs/namesecondary"
namenode_name_dir: "/data1/hadoop/hdfs/namenode"
datanode_data_dir: "/data1/hadoop/hdfs/data,/data2/hadoop/hdfs/data"
journalnode_edits_dir: "/data1/hadoop/hdfs/journalnode"
nodemanager_local_dirs: "/data1/hadoop/yarn/local"
timeline_ldb_store_path: "/data1/hadoop/yarn/timeline"
timeline_ldb_state_path: "/data1/hadoop/yarn/timeline"
nodemanager_log_dirs: "/data1/hadoop/yarn/log"
jhs_recovery_store_ldb_path: "/data1/hadoop/mapreduce/jhs"
storm_local_dir: "/data1/hadoop/storm"
kafka_log_dirs: "/data1/kafka-log"
elasticsearch_data_dir: "/data1/elasticsearch,/data2/elasticsearch"

# sensors
sensor_test_mode: True
install_pycapa: False
install_bro: True
install_snort: True
install_yaf: False
install_pcap_replay: True
sniff_interface: eth1
pcap_replay_interface: "{{ sniff_interface }}"
pcapservice_port: 8081

# search
install_elasticsearch: True
install_solr: False
solr_collection_name: Metron
solr_number_shards: 1
solr_replication_factor: 1
elasticsearch_transport_port: 9300
## The elasticsearch_network_interface must be in the form specified for Elasticsearch, with leading and trailing underscores.
elasticsearch_network_interface: _eth1_
elasticsearch_web_port: 9200
