From 8aa4598dbccff185cbd55e7e55f840f8536ff21c Mon Sep 17 00:00:00 2001
From: jurgenhaas <juergen@paragon-es.de>
Date: Wed, 21 Jun 2017 16:30:03 +0200
Subject: [PATCH] ansible-inventories/knime#110 Make Zabbix agent configurable

---
 defaults/main.yml                  | 11 +++++++++++
 tasks/config.yml                   |  8 ++++----
 templates/userparameter.conf       |  3 +++
 templates/userparameter_mysql.conf | 18 ------------------
 templates/zabbix_agentd.conf       | 12 ++++++++----
 5 files changed, 26 insertions(+), 26 deletions(-)
 create mode 100644 templates/userparameter.conf
 delete mode 100644 templates/userparameter_mysql.conf

diff --git a/defaults/main.yml b/defaults/main.yml
index 7aa7413..021d092 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -1 +1,12 @@
 zabbix_agent_url: 'http://repo.zabbix.com/zabbix/3.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.0-1+xenial_all.deb'
+
+zabbix_agent_logfile_size: 0
+zabbix_agent_server: '127.0.0.1'
+zabbix_agent_server_active: '127.0.0.1'
+zabbix_agent_hostname: 'Zabbix server'
+zabbix_agent_userparameter:
+  mysql:
+    - mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $$2}'
+    - mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix mysql -N'
+    - mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
+    - mysql.version,mysql -V
diff --git a/tasks/config.yml b/tasks/config.yml
index abf7519..3600c57 100644
--- a/tasks/config.yml
+++ b/tasks/config.yml
@@ -6,8 +6,8 @@
     src: 'zabbix_agentd.conf'
     dest: '/etc/zabbix/zabbix_agentd.conf'
 
-- name: "Agent User Config: MySQL"
+- name: "Agent User Config"
   template:
-    src: 'userparameter_mysql.conf'
-    dest: '/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf'
-  when: groups['dbserver-mysql'] is defined and inventory_hostname in groups['dbserver-mysql']
+    src: 'userparameter.conf'
+    dest: '/etc/zabbix/zabbix_agentd.d/userparameter_{{ item }}.conf'
+  with_items: '{{ zabbix_agent_userparameter }}'
diff --git a/templates/userparameter.conf b/templates/userparameter.conf
new file mode 100644
index 0000000..bd27e2e
--- /dev/null
+++ b/templates/userparameter.conf
@@ -0,0 +1,3 @@
+{% for line in zabbix_agent_userparameter[item] %}
+UserParameter={{ line }}
+{% endfor %}
diff --git a/templates/userparameter_mysql.conf b/templates/userparameter_mysql.conf
deleted file mode 100644
index ebd516d..0000000
--- a/templates/userparameter_mysql.conf
+++ /dev/null
@@ -1,18 +0,0 @@
-# For all the following commands HOME should be set to the directory that has .my.cnf file with password information.
-
-# Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert].
-# Key syntax is mysql.status[variable].
-UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $$2}'
-
-# Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].
-# Key syntax is mysql.size[<database>,<table>,<type>].
-# Database may be a database name or "all". Default is "all".
-# Table may be a table name or "all". Default is "all".
-# Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".
-# Database is mandatory if a table is specified. Type may be specified always.
-# Returns value in bytes.
-# 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table
-UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix mysql -N'
-
-UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
-UserParameter=mysql.version,mysql -V
diff --git a/templates/zabbix_agentd.conf b/templates/zabbix_agentd.conf
index 26945fd..1ee2a62 100644
--- a/templates/zabbix_agentd.conf
+++ b/templates/zabbix_agentd.conf
@@ -40,7 +40,7 @@ LogFile=/var/log/zabbix/zabbix_agentd.log
 # Default:
 # LogFileSize=1
 
-LogFileSize=0
+LogFileSize={{ zabbix_agent_logfile_size }}
 
 ### Option: DebugLevel
 #	Specifies debug level:
@@ -92,7 +92,7 @@ LogFileSize=0
 # Default:
 # Server=
 
-Server=127.0.0.1
+Server={{ zabbix_agent_server }}
 
 ### Option: ListenPort
 #	Agent will listen on this port for connections from the server.
@@ -133,7 +133,9 @@ Server=127.0.0.1
 # Default:
 # ServerActive=
 
-ServerActive=127.0.0.1
+{% if zabbix_agent_server_active != '' %}
+ServerActive={{ zabbix_agent_server_active }}
+{% endif %}
 
 ### Option: Hostname
 #	Unique, case sensitive hostname.
@@ -144,7 +146,9 @@ ServerActive=127.0.0.1
 # Default:
 # Hostname=
 
-Hostname=Zabbix server
+{% if zabbix_agent_server_active != '' %}
+Hostname={{ zabbix_agent_hostname }}
+{% endif %}
 
 ### Option: HostnameItem
 #	Item used for generating Hostname if it is undefined. Ignored if Hostname is defined.
-- 
GitLab