zabbix_host integration tests (#33184)

* Integration tests for zabbix_host using Zabbix on Ubuntu 14.04.

* fix duplicate yaml key in test

* .changed -> is changed, |failed -> is failed, trim configfile

* zabbix_host integration test does not need BOTMETA entry, inherited from module
This commit is contained in:
Eike Frost 2017-12-05 20:29:12 +01:00 committed by Sam Doran
parent 750f7fe132
commit ed376abe42
16 changed files with 892 additions and 0 deletions

2
.github/BOTMETA.yml vendored
View file

@ -1166,6 +1166,8 @@ files:
labels:
- networking
- nxos
test/integration/targets/setup_zabbix:
maintainers: eikef D3DeFi
test/units/modules/network:
maintainers: $team_networking
labels: networking

View file

@ -0,0 +1,5 @@
destructive
posix/ci/group1
skip/osx
skip/freebsd
skip/rhel

View file

@ -0,0 +1,10 @@
---
db_name: 'zabbix'
db_user: 'zabbix'
db_password: 'fLhijUs3PgekNhwJ'
zabbix_release_deb: 'http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+trusty_all.deb'
zabbix_packages:
- zabbix-server-mysql
- zabbix-frontend-php

View file

@ -0,0 +1,2 @@
dependencies:
- setup_mysql_db

View file

@ -0,0 +1,6 @@
---
# This integration test is only for Ubuntu 14.04 at the moment. This makes
# installation of a Zabbix quite a bit easier.
- include: setup.yml
when: ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'trusty'

View file

@ -0,0 +1,48 @@
# sets up and starts Zabbix with default settings (works on Ubuntu 14.04,
# possibly more) using a MySQL database.
- name: create mysql user {{ db_user }}
mysql_user:
name: "{{ db_user }}"
password: "{{ db_password }}"
state: present
priv: "{{ db_name }}.*:ALL"
- name: install zabbix repository
apt: deb={{ zabbix_release_deb }} state=present
- name: install zabbix debian dependencies
apt: name={{ item }} state=latest update_cache=yes
with_items: "{{ zabbix_packages }}"
- name: install zabbix-api python package
pip:
name: zabbix-api
- name: import initial zabbix database
mysql_db:
name: "{{ db_name }}"
login_user: "{{ db_user }}"
login_password: "{{ db_password }}"
state: import
target: /usr/share/doc/zabbix-server-mysql/create.sql.gz
- name: deploy zabbix-server configuration
template:
src: zabbix_server.conf.j2
dest: /etc/zabbix/zabbix_server.conf
owner: zabbix
group: zabbix
mode: 0644
- name: deploy zabbix web frontend configuration
template:
src: zabbix.conf.php.j2
dest: /etc/zabbix/web/zabbix.conf.php
mode: 0644
- name: restart zabbix-server
service: name=zabbix-server state=restarted enabled=yes
- name: restart apache2
service: name=apache2 state=restarted enabled=yes

View file

@ -0,0 +1,20 @@
<?php
// Zabbix GUI configuration file
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = 'localhost';
$DB['PORT'] = '0';
$DB['DATABASE'] = '{{ db_name }}';
$DB['USER'] = '{{ db_user }}';
$DB['PASSWORD'] = '{{ db_password }}';
// SCHEMA is relevant only for IBM_DB2 database
$DB['SCHEMA'] = '';
$ZBX_SERVER = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
?>

View file

@ -0,0 +1,6 @@
LogFile=/tmp/zabbix_server.log
DBName={{ db_name }}
DBUser={{ db_user }}
DBPassword={{ db_password }}
Timeout=4
LogSlowQueries=3000

View file

@ -0,0 +1,5 @@
destructive
posix/ci/group1
skip/osx
skip/freebsd
skip/rhel

View file

@ -0,0 +1,5 @@
---
zabbix_server_url: http://127.0.0.1/zabbix/
zabbix_login_user: Admin
zabbix_login_password: zabbix

View file

@ -0,0 +1,2 @@
dependencies:
- setup_zabbix

View file

@ -0,0 +1,16 @@
---
# setup stuff not testing zabbix_host
- include: zabbix_host_setup.yml
when: ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'trusty'
# zabbix_host module tests
- include: zabbix_host_tests.yml
when: ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'trusty'
# documentation example tests
- include: zabbix_host_doc.yml
when: ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'trusty'
# tear down stuff set up earlier
- include: zabbix_host_teardown.yml
when: ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'trusty'

View file

@ -0,0 +1,71 @@
---
# These two tests are close to documentation example
- name: Create a new host or update an existing host's info
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
visible_name: ExampleName
description: My ExampleHost Description
host_groups:
- Linux servers
- Zabbix servers
link_templates:
- Template App IMAP Service
- Template App NTP Service
status: enabled
state: present
inventory_mode: manual
inventory_zabbix:
tag: test-tag
alias: test-alias
notes: "Special Informations: test-info"
location: test-location
site_rack: test-rack
os: test-os
hardware: test-hw
interfaces:
- type: 1
main: 1
useip: 1
ip: 10.1.1.1
dns: ""
port: 10050
- type: 4
main: 1
useip: 1
ip: 10.1.1.1
dns: ""
port: 12345
register: zabbix_host1
- name: Update an existing host's tls settings
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost2
visible_name: ExampleName2
interfaces:
- type: 1
main: 1
useip: 1
ip: 10.1.1.2
dns: ""
port: 10050
host_groups:
- Linux servers
tls_psk_identity: test
tls_connect: 2
tls_psk: 123456789abcdef123456789abcdef12
register: zabbix_host2
- name: expect both to succeed
assert:
that:
- "zabbix_host1 is changed"
- "zabbix_host2 is changed"

View file

@ -0,0 +1,21 @@
---
# set up a zabbix proxy to test zabbix_host with
- name: Create a new proxy
local_action:
module: zabbix_proxy
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
proxy_name: ExampleProxy
description: ExampleProxy
status: active
state: present
interface:
type: 0
main: 1
useip: 1
ip: 10.5.6.7
dns: ""
port: 10050
register: zabbix_proxy

View file

@ -0,0 +1,11 @@
---
# remove zabbix_proxy (hopefully) created earlier
- name: remove proxy
local_action:
module: zabbix_proxy
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
proxy_name: ExampleProxy
state: absent

View file

@ -0,0 +1,662 @@
---
- name: "test: create host with many options set"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
visible_name: ExampleName
description: My ExampleHost Description
host_groups:
- Linux servers
- Zabbix servers
link_templates:
- Template App IMAP Service
- Template App NTP Service
status: enabled
state: present
inventory_mode: manual
inventory_zabbix:
tag: test-tag
alias: test-alias
notes: "Special Informations: test-info"
location: test-location
site_rack: test-rack
os: test-os
hardware: test-hw
interfaces:
- type: 1
main: 1
useip: 1
ip: 10.1.1.1
dns: ""
port: 10050
- type: 4
main: 1
useip: 1
ip: 10.1.1.1
dns: ""
port: 12345
proxy: ExampleProxy
tls_psk_identity: test
tls_connect: 2
tls_psk: 123456789abcdef123456789abcdef12
register: zabbix_host1
- name: expect to succeed and that things changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: try to create the same host with the same settings"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
visible_name: ExampleName
description: My ExampleHost Description
host_groups:
- Linux servers
- Zabbix servers
link_templates:
- Template App IMAP Service
- Template App NTP Service
status: enabled
state: present
inventory_mode: manual
inventory_zabbix:
tag: test-tag
alias: test-alias
notes: "Special Informations: test-info"
location: test-location
site_rack: test-rack
os: test-os
hardware: test-hw
interfaces:
- type: 1
main: 1
useip: 1
ip: 10.1.1.1
dns: ""
port: 10050
- type: 4
main: 1
useip: 1
ip: 10.1.1.1
dns: ""
port: 12345
proxy: ExampleProxy
tls_psk_identity: test
tls_connect: 2
tls_psk: 123456789abcdef123456789abcdef12
register: zabbix_host1
- name: updating with same values should be idempotent
assert:
that:
- "not zabbix_host1 is changed"
- name: "test: change visible_name"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
visible_name: "ExampleName Changed"
register: zabbix_host1
- name: expect to succeed and that things changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: change visible_name (again)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
visible_name: "ExampleName Changed"
register: zabbix_host1
- name: updating with same values should be idempotent
assert:
that:
- "not zabbix_host1 is changed"
- name: "test: change description"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
description: "My ExampleHost Description Changed"
register: zabbix_host1
- name: expect to succeed and that things changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: change description (again)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
description: "My ExampleHost Description Changed"
register: zabbix_host1
- name: updating with same values should be idempotent
assert:
that:
- "not zabbix_host1 is changed"
- name: "test: change host groups (adding one group)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
host_groups:
- Linux servers
- Zabbix servers
- Virtual machines
register: zabbix_host1
- name: expect to succeed and that things changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: change host groups (remove one group)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
host_groups:
- Linux servers
- Zabbix servers
register: zabbix_host1
- name: expect to succeed and that things changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: change host groups (add one group using force=no)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
host_groups:
- Virtual machines
force: no
register: zabbix_host1
- name: expect to succeed and that things changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: change host groups (check whether we are at three groups)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
host_groups:
- Linux servers
- Zabbix servers
- Virtual machines
register: zabbix_host1
- name: expect to succeed and that things have not changed
assert:
that:
- "not zabbix_host1 is changed"
- name: "test: change host groups (attempt to remove all host groups)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
host_groups:
-
register: zabbix_host1
ignore_errors: yes
- name: expect to fail
assert:
that:
- "zabbix_host1 is failed"
- name: "test: change host linked templates (same as before)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
link_templates:
- Template App IMAP Service
- Template App NTP Service
register: zabbix_host1
- name: expect to succeed and that things have not changed
assert:
that:
- "not zabbix_host1 is changed"
- name: "test: change host linked templates (add one template)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
link_templates:
- Template App IMAP Service
- Template App NTP Service
- Template App HTTP Service
register: zabbix_host1
- name: expect to succeed and that things have changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: change host linked templates (add one template, using force=no)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
link_templates:
- Template App LDAP Service
force: no
register: zabbix_host1
- name: expect to succeed and that things have changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: change host linked templates (make sure we are at 4 templates)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
link_templates:
- Template App IMAP Service
- Template App NTP Service
- Template App HTTP Service
- Template App LDAP Service
register: zabbix_host1
- name: expect to succeed and that things have not changed
assert:
that:
- "not zabbix_host1 is changed"
- name: "test: change host linked templates (remove all templates)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
link_templates:
-
register: zabbix_host1
- name: expect to succeed and that things have changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: change host linked templates (check we have no templates left)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
link_templates:
-
register: zabbix_host1
- name: expect to succeed and that things have not changed
assert:
that:
- "not zabbix_host1 is changed"
- name: "test: change host status"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
status: disabled
register: zabbix_host1
- name: expect to succeed and that things have changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: change host status (again)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
status: disabled
register: zabbix_host1
- name: expect to succeed and that things have not changed
assert:
that:
- "not zabbix_host1 is changed"
- name: "test: change host inventory mode"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
inventory_mode: automatic
register: zabbix_host1
- name: expect to succeed and that things have changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: change host inventory mode"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
inventory_mode: automatic
register: zabbix_host1
- name: expect to succeed and that things have not changed
assert:
that:
- "not zabbix_host1 is changed"
- name: "test: change host inventory data (one field)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
inventory_zabbix:
tag: test-tag-two
alias: test-alias
notes: "Special Informations: test-info"
location: test-location
site_rack: test-rack
os: test-os
hardware: test-hw
register: zabbix_host1
- name: expect to succeed and that things have changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: change host inventory data (again)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
inventory_zabbix:
tag: test-tag-two
alias: test-alias
notes: "Special Informations: test-info"
location: test-location
site_rack: test-rack
os: test-os
hardware: test-hw
register: zabbix_host1
- name: expect to succeed and that things have not changed
assert:
that:
- "not zabbix_host1 is changed"
- name: "test: remove host proxy"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
proxy: ''
register: zabbix_host1
- name: expect to succeed and that things have changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: add host proxy"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
proxy: ExampleProxy
register: zabbix_host1
- name: expect to succeed and that things have changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: add host proxy (again)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
proxy: ExampleProxy
register: zabbix_host1
- name: expect to succeed and that things have not changed
assert:
that:
- "not zabbix_host1 is changed"
- name: "test: change tls settings"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
tls_psk_identity: test2
tls_connect: 4
tls_accept: 7
tls_psk: 123456789abcdef123456789abcdef13
tls_issuer: AcmeCorp
tls_subject: AcmeCorpServer
register: zabbix_host1
- name: expect to succeed and that things have changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: change tls settings (again)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
tls_psk_identity: test2
tls_connect: 4
tls_accept: 7
tls_psk: 123456789abcdef123456789abcdef13
tls_issuer: AcmeCorp
tls_subject: AcmeCorpServer
register: zabbix_host1
- name: expect to succeed and that things have not changed
assert:
that:
- "not zabbix_host1 is changed"
- name: "test: change interface settings (remove one)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
interfaces:
- type: 1
main: 1
useip: 1
ip: 10.1.1.1
dns: ""
port: 10050
register: zabbix_host1
- name: expect to succeed and that things have changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: change interface settings (again)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
interfaces:
- type: 1
main: 1
useip: 1
ip: 10.1.1.1
dns: ""
port: 10050
register: zabbix_host1
- name: expect to succeed and that things have not changed
assert:
that:
- "not zabbix_host1 is changed"
- name: "test: change interface settings (add one interface using force=no)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
interfaces:
- type: 4
main: 1
useip: 1
ip: 10.1.1.1
dns: ""
port: 12345
force: no
register: zabbix_host1
- name: expect to succeed and that things have changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: change interface settings (verify that we are at two interfaces)"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
interfaces:
- type: 1
main: 1
useip: 1
ip: 10.1.1.1
dns: ""
port: 10050
- type: 4
main: 1
useip: 1
ip: 10.1.1.1
dns: ""
port: 12345
register: zabbix_host1
- name: expect to succeed and that things have not changed
assert:
that:
- "not zabbix_host1 is changed"
- name: "test: attempt to delete host created earlier"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
state: absent
register: zabbix_host1
- name: deleting a host is a change, right?
assert:
that:
- "zabbix_host1 is changed"
- name: "test: attempt deleting a non-existant host"
local_action:
module: zabbix_host
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
state: absent
register: zabbix_host1
- name: deleting a non-existant host is not a change, right?
assert:
that:
- "not zabbix_host1 is changed"