#
#  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.7.0
metron_directory: /usr/metron/{{ metron_version }}
bro_version: "2.5.5"
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
elasticsearch_hosts: "{{ groups.search | join(',') }}"

# 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
