From 838e8f6b3635dfc37c13de335de14680ec902d9d Mon Sep 17 00:00:00 2001
From: jurgenhaas <juergen@paragon-es.de>
Date: Tue, 26 Nov 2019 16:41:51 +0100
Subject: [PATCH] ansible-playbooks/general#92 Initial code

---
 README.md                |   1 +
 handlers/main.yml        |  19 +++
 meta/main.yml            |   4 +
 tasks/config.yml         |  12 ++
 tasks/install.yml        |  22 ++++
 tasks/main.yml           |  16 +++
 templates/packetbeat.yml | 243 +++++++++++++++++++++++++++++++++++++++
 7 files changed, 317 insertions(+)
 create mode 100644 README.md
 create mode 100644 handlers/main.yml
 create mode 100644 meta/main.yml
 create mode 100644 tasks/config.yml
 create mode 100644 tasks/install.yml
 create mode 100644 tasks/main.yml
 create mode 100644 templates/packetbeat.yml

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..bbe09b5
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+https://www.elastic.co/guide/en/beats/packetbeat/7.4/packetbeat-getting-started.html
diff --git a/handlers/main.yml b/handlers/main.yml
new file mode 100644
index 0000000..2c7d1e4
--- /dev/null
+++ b/handlers/main.yml
@@ -0,0 +1,19 @@
+---
+# file: roles/packetbeat/handlers/main.yml
+
+- name: Add Packetbeat to Boot-List
+  systemd:
+    name: packetbeat
+    state: started
+    daemon_reload: yes
+    enabled: yes
+
+- name: Start Packetbeat
+  service:
+    name: packetbeat
+    state: started
+
+- name: Restart Packetbeat
+  service:
+    name: packetbeat
+    state: restarted
diff --git a/meta/main.yml b/meta/main.yml
new file mode 100644
index 0000000..55ae93d
--- /dev/null
+++ b/meta/main.yml
@@ -0,0 +1,4 @@
+---
+
+dependencies:
+  - { role: kibana }
diff --git a/tasks/config.yml b/tasks/config.yml
new file mode 100644
index 0000000..f2cdd2a
--- /dev/null
+++ b/tasks/config.yml
@@ -0,0 +1,12 @@
+---
+# file: roles/packetbeat/tasks/config.yml
+
+- name: Configure packetbeat
+  template:
+    src: packetbeat.yml
+    dest: /etc/packetbeat/packetbeat.yml
+    owner: root
+    group: root
+    mode: 0600
+  notify:
+    - Restart Packetbeat
diff --git a/tasks/install.yml b/tasks/install.yml
new file mode 100644
index 0000000..1c68b60
--- /dev/null
+++ b/tasks/install.yml
@@ -0,0 +1,22 @@
+---
+# file: roles/packetbeat/tasks/install.yml
+
+- name: Apt Key
+  apt_key:
+    url: 'https://artifacts.elastic.co/GPG-KEY-elasticsearch'
+    state: present
+
+- name: Apt Repository
+  apt_repository:
+    repo: 'deb https://artifacts.elastic.co/packages/7.x/apt stable main'
+    state: present
+    mode: 0644
+
+- name: Install Packetbeat
+  apt:
+    pkg: packetbeat
+    state: present
+    update_cache: yes
+  notify:
+    - Add Packetbeat to Boot-List
+    - Start Packetbeat
diff --git a/tasks/main.yml b/tasks/main.yml
new file mode 100644
index 0000000..64f9b40
--- /dev/null
+++ b/tasks/main.yml
@@ -0,0 +1,16 @@
+---
+# file: roles/packetbeat/tasks/main.yml
+
+- name: Packetbeat Role
+  set_fact:
+    role_packetbeat_started: yes
+  tags:
+    - always
+
+- block:
+
+    - include_tasks: install.yml
+
+    - include_tasks: config.yml
+
+  when: not excluded_roles or "packetbeat" not in excluded_roles
diff --git a/templates/packetbeat.yml b/templates/packetbeat.yml
new file mode 100644
index 0000000..c81aa79
--- /dev/null
+++ b/templates/packetbeat.yml
@@ -0,0 +1,243 @@
+#################### Packetbeat Configuration Example #########################
+
+# This file is an example configuration file highlighting only the most common
+# options. The packetbeat.reference.yml file from the same directory contains all the
+# supported options with more comments. You can use it as a reference.
+#
+# You can find the full configuration reference here:
+# https://www.elastic.co/guide/en/beats/packetbeat/index.html
+
+#============================== Network device ================================
+
+# Select the network interface to sniff the data. On Linux, you can use the
+# "any" keyword to sniff on all connected interfaces.
+packetbeat.interfaces.device: any
+
+#================================== Flows =====================================
+
+# Set `enabled: false` or comment out all options to disable flows reporting.
+packetbeat.flows:
+  # Set network flow timeout. Flow is killed if no packet is received before being
+  # timed out.
+  timeout: 30s
+
+  # Configure reporting period. If set to -1, only killed flows will be reported
+  period: 10s
+
+#========================== Transaction protocols =============================
+
+packetbeat.protocols:
+  - type: icmp
+    # Enable ICMPv4 and ICMPv6 monitoring. Default: false
+    enabled: true
+
+  - type: amqp
+    # Configure the ports where to listen for AMQP traffic. You can disable
+    # the AMQP protocol by commenting out the list of ports.
+    ports: [5672]
+
+  - type: cassandra
+    #Cassandra port for traffic monitoring.
+    ports: [9042]
+
+  - type: dhcpv4
+    # Configure the DHCP for IPv4 ports.
+    ports: [67, 68]
+
+  - type: dns
+    # Configure the ports where to listen for DNS traffic. You can disable
+    # the DNS protocol by commenting out the list of ports.
+    ports: [53]
+
+  - type: http
+    # Configure the ports where to listen for HTTP traffic. You can disable
+    # the HTTP protocol by commenting out the list of ports.
+    ports: [80, 8080, 8000, 5000, 8002]
+
+  - type: memcache
+    # Configure the ports where to listen for memcache traffic. You can disable
+    # the Memcache protocol by commenting out the list of ports.
+    ports: [11211]
+
+  - type: mysql
+    # Configure the ports where to listen for MySQL traffic. You can disable
+    # the MySQL protocol by commenting out the list of ports.
+    ports: [3306,3307]
+
+  - type: pgsql
+    # Configure the ports where to listen for Pgsql traffic. You can disable
+    # the Pgsql protocol by commenting out the list of ports.
+    ports: [5432]
+
+  - type: redis
+    # Configure the ports where to listen for Redis traffic. You can disable
+    # the Redis protocol by commenting out the list of ports.
+    ports: [6379]
+
+  - type: thrift
+    # Configure the ports where to listen for Thrift-RPC traffic. You can disable
+    # the Thrift-RPC protocol by commenting out the list of ports.
+    ports: [9090]
+
+  - type: mongodb
+    # Configure the ports where to listen for MongoDB traffic. You can disable
+    # the MongoDB protocol by commenting out the list of ports.
+    ports: [27017]
+
+  - type: nfs
+    # Configure the ports where to listen for NFS traffic. You can disable
+    # the NFS protocol by commenting out the list of ports.
+    ports: [2049]
+
+  - type: tls
+    # Configure the ports where to listen for TLS traffic. You can disable
+    # the TLS protocol by commenting out the list of ports.
+    ports:
+      - 443   # HTTPS
+      - 993   # IMAPS
+      - 995   # POP3S
+      - 5223  # XMPP over SSL
+      - 8443
+      - 8883  # Secure MQTT
+      - 9243  # Elasticsearch
+
+#==================== Elasticsearch template setting ==========================
+
+setup.template.settings:
+  index.number_of_shards: 1
+  #index.codec: best_compression
+  #_source.enabled: false
+
+#================================ General =====================================
+
+# The name of the shipper that publishes the network data. It can be used to group
+# all the transactions sent by a single shipper in the web interface.
+#name:
+
+# The tags of the shipper are included in their own field with each
+# transaction published.
+#tags: ["service-X", "web-tier"]
+
+# Optional fields that you can specify to add additional information to the
+# output.
+#fields:
+#  env: staging
+
+
+#============================== Dashboards =====================================
+# These settings control loading the sample dashboards to the Kibana index. Loading
+# the dashboards is disabled by default and can be enabled either by setting the
+# options here or by using the `setup` command.
+#setup.dashboards.enabled: false
+
+# The URL from where to download the dashboards archive. By default this URL
+# has a value which is computed based on the Beat name and version. For released
+# versions, this URL points to the dashboard archive on the artifacts.elastic.co
+# website.
+#setup.dashboards.url:
+
+#============================== Kibana =====================================
+
+# Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
+# This requires a Kibana endpoint configuration.
+setup.kibana:
+
+# Kibana Host
+# Scheme and port can be left out and will be set to the default (http and 5601)
+# In case you specify and additional path, the scheme is required: http://localhost:5601/path
+# IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
+#host: "localhost:5601"
+
+# Kibana Space ID
+# ID of the Kibana Space into which the dashboards should be loaded. By default,
+# the Default Space will be used.
+#space.id:
+
+#============================= Elastic Cloud ==================================
+
+# These settings simplify using Packetbeat with the Elastic Cloud (https://cloud.elastic.co/).
+
+# The cloud.id setting overwrites the `output.elasticsearch.hosts` and
+# `setup.kibana.host` options.
+# You can find the `cloud.id` in the Elastic Cloud web UI.
+#cloud.id:
+
+# The cloud.auth setting overwrites the `output.elasticsearch.username` and
+# `output.elasticsearch.password` settings. The format is `<user>:<pass>`.
+#cloud.auth:
+
+#================================ Outputs =====================================
+
+# Configure what output to use when sending the data collected by the beat.
+
+#-------------------------- Elasticsearch output ------------------------------
+{% if 'logserver' in groups and inventory_hostname in groups.logserver %}
+output.elasticsearch:
+  # Array of hosts to connect to.
+  hosts: ["localhost:9200"]
+
+  # Optional protocol and basic auth credentials.
+  #protocol: "https"
+  username: "elastic"
+  password: "{{ elasticsearch.users.elastic|default("") }}"
+{% else %}
+#----------------------------- Logstash output --------------------------------
+output.logstash:
+  # The Logstash hosts
+  hosts: ["localhost:5044"]
+
+  # Optional SSL. By default is off.
+  # List of root certificates for HTTPS server verifications
+  #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
+
+  # Certificate for SSL client authentication
+  #ssl.certificate: "/etc/pki/client/cert.pem"
+
+  # Client Certificate Key
+  #ssl.key: "/etc/pki/client/cert.key"
+{% endif %}
+#================================ Processors =====================================
+
+# Configure processors to enhance or manipulate events generated by the beat.
+
+processors:
+  - add_host_metadata: ~
+  - add_cloud_metadata: ~
+
+  #================================ Logging =====================================
+
+  # Sets log level. The default log level is info.
+  # Available log levels are: error, warning, info, debug
+  #logging.level: debug
+
+  # At debug level, you can selectively enable logging only for some components.
+  # To enable all selectors use ["*"]. Examples of other selectors are "beat",
+  # "publish", "service".
+  #logging.selectors: ["*"]
+
+  #============================== X-Pack Monitoring ===============================
+  # packetbeat can export internal metrics to a central Elasticsearch monitoring
+  # cluster.  This requires xpack monitoring to be enabled in Elasticsearch.  The
+  # reporting is disabled by default.
+
+  # Set to true to enable the monitoring reporter.
+  #monitoring.enabled: false
+
+  # Sets the UUID of the Elasticsearch cluster under which monitoring data for this
+  # Packetbeat instance will appear in the Stack Monitoring UI. If output.elasticsearch
+  # is enabled, the UUID is derived from the Elasticsearch cluster referenced by output.elasticsearch.
+  #monitoring.cluster_uuid:
+
+  # Uncomment to send the metrics to Elasticsearch. Most settings from the
+  # Elasticsearch output are accepted here as well.
+  # Note that the settings should point to your Elasticsearch *monitoring* cluster.
+  # Any setting that is not set is automatically inherited from the Elasticsearch
+  # output configuration, so if you have the Elasticsearch output configured such
+  # that it is pointing to your Elasticsearch monitoring cluster, you can simply
+  # uncomment the following line.
+  #monitoring.elasticsearch:
+
+  #================================= Migration ==================================
+
+  # This allows to enable 6.7 migration aliases
+  #migration.6_to_7.enabled: true
-- 
GitLab