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] cannot create sites #179

Closed mariuspana closed 1 year ago

mariuspana commented 1 year ago

Describe the bug Using the "server" role does not create a site. Rather we get an error.

Component Name server role

Ansible Version

ansible [core 2.13.5]
  config file = /Users/mpana/Development/collaborationfactory/ansible-checkmk/ansible.cfg
  configured module search path = ['/Users/mpana/Development/collaborationfactory/ansible-checkmk/plugins/modules']
  ansible python module location = /Users/mpana/Development/collaborationfactory/lib/python3.10/site-packages/ansible
  ansible collection location = /Users/mpana/.ansible/collections:/usr/share/ansible/collections
  executable location = /Users/mpana/Development/collaborationfactory/bin/ansible
  python version = 3.10.7 (main, Sep 15 2022, 01:51:29) [Clang 14.0.0 (clang-1400.0.29.102)]
  jinja version = 3.1.2
  libyaml = True

Checkmk Version

2.1.0p13.cre

Collection Version

Collection        Version
----------------- -------
ansible.posix     1.4.0  
community.general 5.7.0  
community.mysql   1.1.2  
tribe29.checkmk   0.11.0 

# /Users/mpana/Development/collaborationfactory/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 MacOS Monterey 12.6 Darwin imac.local 21.6.0 Darwin Kernel Version 21.6.0: Mon Aug 22 20:17:10 PDT 2022; root:xnu-8020.140.49~2/RELEASE_X86_64 x86_64

Python 3.10.7

To Reproduce Define a playbook to trigger site creation, for example:

---
- hosts: all
  collections:
    - tribe29.checkmk
  roles:
    - tribe29.checkmk.server
  vars_files:
    - ../vars/config.yml

  tasks:
    - name: "Run server role."
      tags: [server]
      ansible.builtin.import_role:
        name: server

    - name: "Create test site."
      tags: [create-sites]
      no_log: false
      ansible.builtin.import_role:
        name: server

Also create a config file with something like:

vars/config.yml 
---
checkmk_server_version: "2.1.0p13"
checkmk_server_sites: 
  - name: test
  - version: "{{ checkmk_server_version }}"
  - state: started
  - admin_pw: test

checkmk_server_download_user: [someuser]
checkmk_server_download_pass: [somepass]

checkmk_server_base_url: "https://download.checkmk.com/checkmk"
3   checkmk_server_download_url: "{{ checkmk_server_base_url }}/{{ checkmk_server_version }}/{{ checkmk_server_setup_file }}"%      

Run those with ansible-playbook:

$ ansible-playbook -i inventory/hosts.ini -l server  playbooks/deploy_server.yml -u ubuntu -b -vv

Expected behavior The server would also get a running checkmk site as defined in the configuration file/role.

Actual behavior TASK [tribe29.checkmk.server : Include Site Management Playbook.] ** task path: /Users/mpana/.ansible/collections/ansible_collections/tribe29/checkmk/roles/server/tasks/main.yml:85 included: /Users/mpana/.ansible/collections/ansible_collections/tribe29/checkmk/roles/server/tasks/sites.yml for teacher

TASK [tribe29.checkmk.server : Create Sites.] **

task path: /Users/mpana/.ansible/collections/ansible_collections/tribe29/checkmk/roles/server/tasks/sites.yml:2 fatal: [teacher]: FAILED! => {"msg": "The conditional check 'item.state != \"absent\"' failed. The error was: error while evaluating conditional (item.state != \"absent\"): 'dict object' has no attribute 'state'\n\nThe error appears to be in '/Users/mpana/.ansible/collections/ansible_collections/tribe29/checkmk/roles/server/tasks/sites.yml': line 2, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n---\n- name: \"Create Sites.\"\n ^ here\n"}

Am I doing something wrong? I missed examples in the docs/elsewhere here for creating sites using plays however the role clearly defines tasks for creating sites.

Thanks! Marius

robin-checkmk commented 1 year ago

Hi Marius!

There are a few too many dashes in your checkmk_server_sites variable. Only prefix the name with one and remove the other three.

I get the point with the documentation however. Do have something specific in mind that would have helped you?

mariuspana commented 1 year ago

Oh boy do I feel silly now :-{

The examples are actually ok (no extra dashes), for some reason I ended up putting those on my own. Not sure if more examples/documentation would have helped here other than for copy/pasting things.

I am afraid to say I dropped the ball here and it is more a paying attention and some basic ansible experience, than anything you could have done.

I owe you a beer :)

Thanks for your help.

robin-checkmk commented 1 year ago

Thanks for the feedback and I am glad I could help!

Looking forward to meeting you and getting that beer one day. ;)

Cheers!