ansible/test/integration/targets/zabbix_host/tasks/zabbix_host_tests.yml
Adrián López dac3bf5b71 zabbix_host: interface.port parameter is a string (#64986)
interface.port should be a string to be able to use macros in that
value.
This fixes the case when interface.port is a macro (eg.: "{$MACRO}" and
force=false.

Because, until now, setting the interface.port to an integer was the correct way to work with force=false, a type validation has been added
to that parameter.
Previously, if a string was used for interface.port, it was converted
to an integer, the comparison didn't work (if interface not in interfaces)
and the module tried to register the same interface twice, returning an
error.

Zabbix API manual specifies that only 'main, 'type', 'useip' and 'bulk'
are integers.
https://www.zabbix.com/documentation/current/manual/api/reference/hostinterface/object

Tests are changed to use always str in the interface.port.

Two new tests are added.
The first one is to show that now registering a host with force=false and
a macro in interface.port works.
The other one tests that interfaces defined using string for port are
compared correctly when force=false is used. Previously it was
a comparison between int and str, interfaces were seen as different
and an error was thrown because we were trying to create twice a main
interface.

* Try to kindly convert interface port to the string

As suggested, the previous behaviour could break current configurations. This solution accepts integers and strings.

Co-Authored-By: Dusan Matejka <D3DeFi@users.noreply.github.com>
2019-12-16 10:55:05 +05:30

833 lines
22 KiB
YAML

---
- name: "test: create host with many options set"
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: 1
main: 0
useip: 1
ip: 10.1.1.1
dns: ""
port: "{$MACRO}"
- 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"
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: 1
main: 0
useip: 1
ip: 10.1.1.1
dns: ""
port: "{$MACRO}"
- 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: try to create the same host with the same settings and force false"
zabbix_host:
force: false
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: 1
main: 0
useip: 1
ip: 10.1.1.1
dns: ""
port: "{$MACRO}"
- 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 and force false should be idempotent
assert:
that:
- "not zabbix_host1 is changed"
- name: "test: try to create the same host changing one parameter in the inventory with force false"
zabbix_host:
force: false
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-modified
interfaces:
- type: 1
main: 1
useip: 1
ip: 10.1.1.1
dns: ""
port: "10050"
- type: 1
main: 0
useip: 1
ip: 10.1.1.1
dns: ""
port: "{$MACRO}"
- 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: changing the value of an already defined inventory should work and mark task as changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: change visible_name"
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)"
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"
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)"
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)"
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)"
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)"
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)"
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)"
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)"
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)"
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)"
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)"
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)"
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)"
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"
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)"
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"
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"
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)"
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)"
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"
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"
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)"
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"
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)"
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)"
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)"
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)"
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)"
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: add IPMI settings"
zabbix_host:
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
ipmi_authtype: 2
ipmi_privilege: 4
ipmi_username: username
ipmi_password: password
register: zabbix_host1
- name: expect to succeed and that things have changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: add IPMI settings again"
zabbix_host:
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
ipmi_authtype: 2
ipmi_privilege: 4
ipmi_username: username
ipmi_password: password
register: zabbix_host1
- name: expect to succeed and that things have not changed
assert:
that:
- "zabbix_host1 is not changed"
- name: "test: verify that an empty change is idempotent"
zabbix_host:
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
register: zabbix_host1
- name: expect to succeed and that things have not changed
assert:
that:
- "zabbix_host1 is not changed"
- name: "test: IPMI set default values"
zabbix_host:
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
ipmi_authtype: -1
ipmi_privilege: 2
ipmi_username: ""
ipmi_password: ""
register: zabbix_host1
- name: expect to succeed and that things have changed
assert:
that:
- "zabbix_host1 is changed"
- name: "test: IPMI set default values (again)"
zabbix_host:
server_url: "{{ zabbix_server_url }}"
login_user: "{{ zabbix_login_user }}"
login_password: "{{ zabbix_login_password }}"
host_name: ExampleHost
ipmi_authtype: -1
ipmi_privilege: 2
ipmi_username: ""
ipmi_password: ""
register: zabbix_host1
- name: expect to succeed and that things have not changed
assert:
that:
- "zabbix_host1 is not changed"
- name: "test: attempt to delete host created earlier"
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"
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"