Browse Source

LecygneNoir: add playbook and role xymon allowing configuration of full xymon-server and xymon-client on debian or centos

master
LecygneNoir 8 years ago
parent
commit
a85208cfb2
5 changed files with 436 additions and 0 deletions
  1. +16
    -0
      roles/xymon/handlers/main.yml
  2. +137
    -0
      roles/xymon/tasks/client.yml
  3. +86
    -0
      roles/xymon/tasks/main.yml
  4. +189
    -0
      roles/xymon/tasks/server.yml
  5. +8
    -0
      xymon.yml

+ 16
- 0
roles/xymon/handlers/main.yml View File

@ -0,0 +1,16 @@
---
- name: restart xymon-hobbit-service
service: name={{ client_name }}-client state=restarted
- name: reload xymon-hobbit-service
service: name={{ client_name }}-client state=reloaded
- name: restart hobbit-client
service: name=hobbit-client state=restarted
- name: restart xymon-client
service: name=xymon-client state=restarted
- name: restart apache
service: name=apache2 state=restarted

+ 137
- 0
roles/xymon/tasks/client.yml View File

@ -0,0 +1,137 @@
---
## Install and configure xymon client ##
# Binaries
- name: install xymon client debian
apt: pkg={{item}} state=present update_cache=yes
tags:
- client-packages
- xymon-client
with_items:
- xymon-client
- hobbit-plugins
when: ansible_distribution == 'Debian'
- name: Install xymon client CentOS
tags:
- xymon-client
- client-packages
yum: pkg=xymon-client state=installed
when: ansible_distribution == 'CentOS' or ansible_distribution == 'CloudLinux'
# Configuration
- name: Configure Xymon ip on old Debian
tags:
- xymon-client
- client-configuration
lineinfile: name=/etc/default/hobbit-client regexp='^HOBBITSERVERS=' line='HOBBITSERVERS="{{xymon_server}}"'
notify: restart hobbit-client
when: ansible_distribution == 'Debian' and ansible_distribution_release != 'jessie'
- name: Configure Xymon ip on Jessie
tags:
- xymon-client
- client-configuration
lineinfile: name=/etc/default/xymon-client regexp='^XYMONSERVERS=' line='XYMONSERVERS="{{xymon_server}}"'
notify: restart xymon-client
when: ansible_distribution == 'Debian' and ansible_distribution_release == 'jessie'
- name: Configure Xymon ip on CentOS
tags:
- xymon-client
- client-configuration
lineinfile: name=/etc/sysconfig/xymon-client regexp='^XYMONSERVERS=' line='XYMONSERVERS="{{xymon_server}}"'
notify: restart xymon-client
when: ansible_distribution == 'CentOS' or ansible_distribution == 'CloudLinux'
- name: Configure local Xymon name on old debian
tags:
- xymon-client
- client-configuration
lineinfile: name=/etc/default/hobbit-client regexp='^CLIENTHOSTNAME=' line='CLIENTHOSTNAME="{{ansible_fqdn}}"'
notify: restart hobbit-client
when: ansible_distribution == 'Debian' and ansible_distribution_release != 'jessie' # and ansible_distribution_version < '7'
- name: Configure local Xymon name on Jessie
tags:
- xymon-client
- client-configuration
lineinfile: name=/etc/default/xymon-client regexp='^CLIENTHOSTNAME=' line='CLIENTHOSTNAME="{{ansible_fqdn}}"'
notify: restart hobbit-client
when: ansible_distribution == 'Debian' and ansible_distribution_release == 'jessie'
- name: Configure local Xymon name on Centos
tags:
- xymon-client
- client-configuration
lineinfile: name=/etc/sysconfig/xymon-client regexp='^CLIENTHOSTNAME=' line='CLIENTHOSTNAME="{{ansible_fqdn}}"'
notify: restart xymon-client
when: ansible_distribution == 'CentOS' or ansible_distribution == 'CloudLinux'
- name: Set xymon cron for APT
tags:
- xymon-client
- client-configuration
cron:
name="check update for Xymon"
minute="45"
hour="*/4"
job="apt-get update -qq > /var/lib/apt/update_output 2>&1 && [ ! -s /var/lib/apt/update_output ] && date -u > /var/lib/apt/update_success"
cron_file="xymon-apt"
state=present
user=root
when: ansible_distribution == 'Debian'
## Add the client to xymon server
- name: Ensure /etc/xymon/hosts.d exists
tags:
- xymon-client
- client-configuration
file: path=/etc/xymon/hosts.d state=directory
delegate_to: "{{ xymon_server }}"
- name: Ensure the monitoring section file is included
tags:
- xymon-client
- client-configuration
lineinfile: dest=/etc/xymon/hosts.cfg
insertafter='^page (?i){{monitoring_section}}'
line="include hosts.d/{{monitoring_file}}"
delegate_to: "{{ xymon_server }}"
when: monitoring_file is defined and monitoring_section is defined
- name: Ensure /etc/xymon/hosts.d/SECTION exists if used
tags:
- xymon-client
- client-configuration
lineinfile: dest="/etc/xymon/hosts.d/{{monitoring_file}}"
regexp="^group\s+{{monitoring_section}}$"
line="group {{monitoring_section}}"
state=present
create="yes"
mode="0644"
delegate_to: "{{ xymon_server }}"
when: monitoring_file is defined and monitoring_section is defined
- name: Add the host to the monitoring section file if used
tags:
- xymon-client
- client-configuration
lineinfile: dest="/etc/xymon/hosts.d/{{monitoring_file}}"
insertafter="^group {{monitoring_section}}"
regexp="^{{monitoring_ip}}\s+{{ansible_fqdn}} .*$"
line="{{monitoring_ip}} {{ansible_fqdn}} {{xymon_checks}}"
delegate_to: "{{ xymon_server }}"
when: monitoring_file is defined and monitoring_section is defined
- name: Add the host to the cfg file without section if needed
tags:
- xymon-client
- client-configuration
lineinfile: dest=/etc/xymon/hosts.cfg
insertafter='^group Servers'
regexp="^{{monitoring_ip}}\s+{{ansible_fqdn}} .*$"
line="{{monitoring_ip}} {{ansible_fqdn}} {{xymon_checks}}"
delegate_to: "{{ xymon_server }}"
when: monitoring_file is not defined and monitoring_section is not defined

+ 86
- 0
roles/xymon/tasks/main.yml View File

@ -0,0 +1,86 @@
---
##
##
## Role to install xymon client or xymon server on host depending what is needed
##
## Tags :
## - xymon-server : binaries and configuration server side
## - xymon-client : binaries and configuration client side (need a working server)
## - client-configuration : used to configure client only (no binaries)
## - client-packages : used only install client binaries (no configuration)
## - server-configuration : used to configure server only (no binaries)
## - server-packages : used to only install server binaries (no configuration)
########
##Check vars
- name: check xymon_server
fail: msg="Missing variable xymon_server"
tags:
- xymon-client
- xymon-server
when: xymon_server is not defined
- name: check xymon_checks
fail: msg="Missing variable xymon_checks"
tags:
- xymon-client
- client-configuration
when: xymon_checks is not defined
- name: check monitoring_ip
fail: msg="Missing variable monitoring_ip"
tags:
- xymon-client
- client-configuration
when: monitoring_ip is not defined
- name: check server htpasswd name
fail: msg="Missing variable xymon_htname"
tags:
- xymon-server
- server-configuration
when: xymon_htname is not defined
- name: check server htpasswd password
fail: msg="Missing variable xymon_htpasswd"
tags:
- xymon-server
- server-configuration
when: xymon_htpasswd is not defined
## Custom Facts
- name: Set Facts Debian
set_fact:
xymon_cfg_path: "/usr/lib/hobbit/client/etc/clientlaunch.d"
xymon_ext_path: "/usr/lib/hobbit/client/ext"
xymon_binary: "/usr/lib/hobbit/client/bin/bb"
client_name: "hobbit"
client_name_cfg: "$HOBBITCLIENTHOME"
client_name_logs: "$BBCLIENTLOGS"
tags:
- xymon-client
- xymon-server
- configuration
when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'
- name: Set Facts CentOs
set_fact:
xymon_cfg_path: "/etc/xymon-client/client.d"
xymon_ext_path: "/etc/xymon-client/ext"
xymon_binary: "/usr/share/xymon-client/bin/xymon"
client_name: "xymon"
client_name_cfg: "$XYMONCLIENTHOME"
client_name_logs: "$XYMONCLIENTLOGS"
tags:
- xymon-client
- xymon-server
- configuration
when: ansible_distribution == 'CentOS' or ansible_distribution == 'CloudLinux'
##Main tasks
- include: server.yml
- include: client.yml

+ 189
- 0
roles/xymon/tasks/server.yml View File

@ -0,0 +1,189 @@
---
## Installation and configuration for Xymon server ##
# Binaries
- name: install xymon server binaries - download
get_url: url=http://sourceforge.net/projects/xymon/files/latest/download?source=directory dest=/tmp/xymon_server.tar.gz
tags:
- xymon-server
- server-packages
- name: install xymon server binaries - untar
unarchive: src=/tmp/xymon_server.tar.gz dest=/tmp/ copy=no
tags:
- xymon-server
- server-packages
- name: install xymon server binaries - register release
shell: ls -d /tmp/xymon-* | awk -F'-' '{print $2}'
register: xymon_release
tags:
- xymon-server
- server-packages
- name: install xymon server binaries - display release
fail: msg="Using xymon server version {{ xymon_release.stdout }}."
ignore_errors: yes
tags:
- xymon-server
- server-packages
- name: install xymon server binaries - display warning
fail: msg="Now building packages. WARN! It may take some time."
ignore_errors: yes
tags:
- xymon-server
- server-packages
## Debian
- name: Debian, install xymon server dependencies
apt: pkg={{item}} state=present update_cache=yes
tags:
- server-packages
- server-configuration
- xymon-server
with_items:
- apache2
- rrdtool
- librrd-dev
- libpcre3-dev
- libssl-dev
- ldap-utils
- libldap2-dev
- fping
- libc-ares-dev
- python-passlib
when: ansible_distribution == 'Debian'
- name: Debian, install xymon server binaries - make deb
shell: ./build/makedeb.sh {{ xymon_release.stdout }}
args:
executable: /bin/bash
chdir: /tmp/xymon-{{ xymon_release.stdout }}/
tags:
- xymon-server
- server-packages
when: ansible_distribution == 'Debian'
- name: Debian, install xymon server binaries - create pid directory
file:
path=/var/run/xymon
state=directory mode=0755
owner=xymon
group=xymon
tags:
- xymon-server
- server-packages
- name: Debian, install xymon server binaries - install deb server
apt: deb=/tmp/xymon-{{ xymon_release.stdout }}/debbuild/xymon_{{ xymon_release.stdout }}_amd64.deb
tags:
- xymon-server
- server-packages
when: ansible_distribution == 'Debian'
notify: restart apache
- name: Debian, install xymon server binaries - install deb client
apt: deb=/tmp/xymon-{{ xymon_release.stdout }}/debbuild/xymon-client_{{ xymon_release.stdout }}_amd64.deb
tags:
- xymon-server
- server-packages
when: ansible_distribution == 'Debian'
## Centos NOT READY YET
#- name: Centos, add xymon group
#group:
#name=xymon
#state=present
#tags:
#- xymon-server
#- server-packages
#when: ansible_distribution == 'CentOS' or ansible_distribution == 'CloudLinux'
#- name: Centos, add xymon user
#user:
#name=xymon
#group=xymon
#createhome=yes
#tags:
#- xymon-server
#- server-packages
#when: ansible_distribution == 'CentOS' or ansible_distribution == 'CloudLinux'
#- name: Centos, install xymon server dependencies
#yum: pkg={{item}} state=installed
#with_items:
#- gcc
#- make
#- fping
#- pcre-devel
#- openssl-devel
#- openldap-devel
#- rrdtool-devel
#tags:
#- xymon-server
#- server-packages
#when: ansible_distribution == 'CentOS' or ansible_distribution == 'CloudLinux'
#- name: Centos, install xymon server binaries - configure
#shell: ./configure --server
#args:
#executable: /bin/bash
#chdir: /tmp/xymon-{{ xymon_release.stdout }}/
#tags:
#- xymon-server
#- server-packages
#when: ansible_distribution == 'CentOS' or ansible_distribution == 'CloudLinux'
#- name: Centos, install xymon server binaries - make & make install
#shell: make && make install
#args:
#executable: /bin/bash
#chdir: /tmp/xymon-{{ xymon_release.stdout }}/
#tags:
#- xymon-server
#- server-packages
#when: ansible_distribution == 'CentOS' or ansible_distribution == 'CloudLinux'
#- name: Centos, install xymon server binaries - init file
#shell: mv /tmp/xymon-{{ xymon_release.stdout }}/rpm/xymon-init.d /etc/init.d/xymon
#args:
#executable: /bin/bash
#tags:
#- xymon-server
#- server-packages
#when: ansible_distribution == 'CentOS' or ansible_distribution == 'CloudLinux'
## Xymon server configuration
- name: enable global group Server in conf
lineinfile: dest=/etc/xymon/hosts.cfg
regexp="^#group Servers$"
line="group Servers"
backrefs=yes
tags:
- xymon-server
- server-configuration
## Apache for xymon server
- name: generate htpasswd file for xymon-server
htpasswd:
path="/usr/local/xymon/server/etc/xymonpasswd"
name={{xymon_htname}}
password={{xymon_htpasswd}}
create=yes
state=present
tags:
- xymon-server
- server-configuration
when: ansible_distribution == 'Debian'
- name: Apache configuration done
fail: msg="You can now connect to http://yourserver/xymon/"
ignore_errors: yes
tags:
- xymon-server
- server-configuration

+ 8
- 0
xymon.yml View File

@ -0,0 +1,8 @@
---
- name: Install and configure xymon-client or xymon-server
hosts: all
user: root
gather_facts: yes
roles:
- xymon

Loading…
Cancel
Save