Checkmk / ansible-collection-checkmk.general

The official Checkmk Ansible collection - brought to you by the Checkmk company.
https://galaxy.ansible.com/checkmk/general
GNU General Public License v3.0
120 stars 55 forks source link

[BUG] discovery task does not change monitored services #192

Closed teridon closed 1 year ago

teridon commented 1 year ago

Verify first that your issue is not already reported here. Where possible also test if the latest release and main branch are affected too. Complete all sections as described!

Describe the bug

"fix_all" discovery task reports changed but site does not show any changes

Component Name

discovery

Ansible Version

# ansible --version
ansible [core 2.13.5]
  config file = /home/teridon/git/ansible/ansible-test.cfg
  configured module search path = ['/home/teridon/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/teridon/.local/share/virtualenvs/ansible-LSniJhgO/lib/python3.10/site-packages/ansible
  ansible collection location = /home/teridon/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/teridon/.local/share/virtualenvs/ansible-LSniJhgO/bin/ansible
  python version = 3.10.5 (main, Jul  7 2022, 17:58:46) [GCC 8.5.0 20210514 (Red Hat 8.5.0-10)]
  jinja version = 3.1.2
  libyaml = True

Checkmk Version

2.0.0p23 (CEE)

Collection Version

# ansible-galaxy collection list

# /home/teridon/.ansible/collections/ansible_collections
Collection         Version
------------------ -------
ansible.posix      1.4.0
community.general  6.0.0
dellemc.openmanage 6.3.0
pfsensible.core    0.4.2
tribe29.checkmk    0.11.0

# /home/teridon/.local/share/virtualenvs/ansible-LSniJhgO/lib/python3.10/site-packages/ansible_collections
Collection                    Version
----------------------------- -------
amazon.aws                    3.5.0
ansible.netcommon             3.1.3
ansible.posix                 1.4.0
ansible.utils                 2.6.1
ansible.windows               1.11.1
arista.eos                    5.0.1
awx.awx                       21.7.0
azure.azcollection            1.13.0
check_point.mgmt              2.3.0
chocolatey.chocolatey         1.3.1
cisco.aci                     2.2.0
cisco.asa                     3.1.0
cisco.dnac                    6.6.0
cisco.intersight              1.0.19
cisco.ios                     3.3.2
cisco.iosxr                   3.3.1
cisco.ise                     2.5.5
cisco.meraki                  2.11.0
cisco.mso                     2.0.0
cisco.nso                     1.0.3
cisco.nxos                    3.2.0
cisco.ucs                     1.8.0
cloud.common                  2.1.2
cloudscale_ch.cloud           2.2.2
community.aws                 3.6.0
community.azure               1.1.0
community.ciscosmb            1.0.5
community.crypto              2.7.0
community.digitalocean        1.22.0
community.dns                 2.3.3
community.docker              2.7.1
community.fortios             1.0.0
community.general             5.7.0
community.google              1.0.0
community.grafana             1.5.3
community.hashi_vault         3.3.1
community.hrobot              1.5.2
community.libvirt             1.2.0
community.mongodb             1.4.2
community.mysql               3.5.1
community.network             4.0.1
community.okd                 2.2.0
community.postgresql          2.2.0
community.proxysql            1.4.0
community.rabbitmq            1.2.2
community.routeros            2.3.0
community.sap                 1.0.0
community.sap_libs            1.3.0
community.skydive             1.0.0
community.sops                1.4.1
community.vmware              2.10.0
community.windows             1.11.0
community.zabbix              1.8.0
containers.podman             1.9.4
cyberark.conjur               1.2.0
cyberark.pas                  1.0.14
dellemc.enterprise_sonic      1.1.2
dellemc.openmanage            5.5.0
dellemc.os10                  1.1.1
dellemc.os6                   1.0.7
dellemc.os9                   1.0.4
f5networks.f5_modules         1.20.0
fortinet.fortimanager         2.1.5
fortinet.fortios              2.1.7
frr.frr                       2.0.0
gluster.gluster               1.0.2
google.cloud                  1.0.2
hetzner.hcloud                1.8.2
hpe.nimble                    1.1.4
ibm.qradar                    2.1.0
ibm.spectrum_virtualize       1.10.0
infinidat.infinibox           1.3.3
infoblox.nios_modules         1.4.0
inspur.ispim                  1.1.0
inspur.sm                     2.2.0
junipernetworks.junos         3.1.0
kubernetes.core               2.3.2
mellanox.onyx                 1.0.0
netapp.aws                    21.7.0
netapp.azure                  21.10.0
netapp.cloudmanager           21.20.1
netapp.elementsw              21.7.0
netapp.ontap                  21.24.1
netapp.storagegrid            21.11.1
netapp.um_info                21.8.0
netapp_eseries.santricity     1.3.1
netbox.netbox                 3.8.0
ngine_io.cloudstack           2.2.4
ngine_io.exoscale             1.0.0
ngine_io.vultr                1.1.2
openstack.cloud               1.10.0
openvswitch.openvswitch       2.1.0
ovirt.ovirt                   2.2.3
purestorage.flasharray        1.14.0
purestorage.flashblade        1.10.0
purestorage.fusion            1.1.1
sensu.sensu_go                1.13.1
servicenow.servicenow         1.0.6
splunk.es                     2.1.0
t_systems_mms.icinga_director 1.31.0
theforeman.foreman            3.7.0
vmware.vmware_rest            2.2.0
vultr.cloud                   1.1.0
vyos.vyos                     3.0.1
wti.remote                    1.0.4

Environment

OS: RHEL 8.6 python 3.10.5

To Reproduce Steps to reproduce the behavior:

# cat testing/checkmk-activate-test.yml
---
- name: "Test activation modules."
  hosts: all
  gather_facts: 'no'
  tasks:
    - name: "Create host."
      tribe29.checkmk.host:
        server_url: "{{ server_url }}"
        site: "{{ site }}"
        automation_user: "{{ automation_user }}"
        automation_secret: "{{ automation_secret }}"
        host_name: "{{ inventory_hostname }}"
        folder: /gse
        attributes:
          site: "{{ site }}"
        state: present
      delegate_to: localhost

    - name: "Discover services on host."
      tribe29.checkmk.discovery:
        server_url: "{{ server_url }}"
        site: "{{ site }}"
        automation_user: "{{ automation_user }}"
        automation_secret: "{{ automation_secret }}"
        host_name: "{{ inventory_hostname }}"
        state: "fix_all"
      delegate_to: localhost

    - name: "Pause to review first set of changes."
      ansible.builtin.pause:
        prompt: |
          "Feel free to review the changes in your Checkmk site: {{ site }}."
          "Press <Enter> to continue."

    - name: "Activate changes on site - Showcase no changes."
      tribe29.checkmk.activation:
        server_url: "{{ server_url }}"
        site: "{{ site }}"
        automation_user: "{{ automation_user }}"
        automation_secret: "{{ automation_secret }}"
        force_foreign_changes: 'true'
        sites:
          - "{{ site }}"
      delegate_to: localhost
      run_once: 'true'

Expected behavior

after the discovery task, the state of the site should have at least 1 change and the GUI should show all services for the new host in the "monitored" state.

Actual behavior

The monitored host shows all services as "undecided"

Screenshots

image

Additional context

artiommocrenco commented 1 year ago

While also investigating this collection, I saw this comment in tests:

https://github.com/tribe29/ansible-collection-tribe29.checkmk/blob/6d7e4b5e17dd0097a1ba20d7adda2cdfaeb66ee7/playbooks/test-full.yml#L99

"refresh" is the only method working correctly, currently :-(

See https://jira.lan.tribe29.com/browse/CMK-7200

artiommocrenco commented 1 year ago

https://forum.checkmk.com/t/rest-api-issue-regarding-service-discovery/23899/2

teridon commented 1 year ago

So it sounds like the issue is in the REST API (?). If that's the case, do we change the collection to match the current REST API, or leave this issue open until the REST API is fixed? Is the issue only present in older versions of checkmk ? I admit I did not try a later version to see if the REST API is fixed.

robin-checkmk commented 1 year ago

I would have to double-check, but I think this fixed in Checkmk 2.1. You should upgrade to the latest version and test this again. We are always tracking the latest Checkmk release with this collection, so older Checkmk versions might work, but we cannot guarantee that.