80 lines
3.5 KiB
YAML
80 lines
3.5 KiB
YAML
- name: Checkmk | Collect managed change summary
|
|
ansible.builtin.set_fact:
|
|
_aim_checkmk_changes: '{{ _aim_check_copies | default({}) | aim_report_checkmk_changes(_checkmk_selected_scripts,
|
|
_checkmk_plugins_update | default({}), _aim_unifi_write | default({}), _aim_opposite_remove | default({}),
|
|
_checkmk_unifi_effective, ansible_check_mode) }}'
|
|
|
|
# No supported Windows package-inventory module exposes arbitrary installed MSI/registry products.
|
|
# Keep this bounded read-only registry query until an official module covers that data.
|
|
- name: Checkmk | Query Windows installed version
|
|
ansible.windows.win_shell: |
|
|
$ErrorActionPreference = 'Stop'
|
|
$roots = @('HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*', 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*')
|
|
$products = @(Get-ItemProperty -Path $roots -ErrorAction SilentlyContinue | Where-Object { $_.DisplayName -match '^(Check_MK|Checkmk|Check MK).*Agent' })
|
|
$versions = @($products | Select-Object -ExpandProperty DisplayVersion -Unique)
|
|
$version = $null
|
|
if ($versions.Count -eq 1) { $version = [string]$versions[0] }
|
|
@{ installed=($products.Count -gt 0); version=$version; version_source='registry' } | ConvertTo-Json -Compress
|
|
register: _aim_checkmk_version_raw
|
|
changed_when: false
|
|
check_mode: false
|
|
when: ansible_facts.os_family == 'Windows'
|
|
|
|
- name: Checkmk | Collect Linux package facts
|
|
ansible.builtin.package_facts:
|
|
manager: auto
|
|
when: ansible_facts.os_family != 'Windows'
|
|
|
|
- name: Checkmk | Record Linux installed package rows
|
|
ansible.builtin.set_fact:
|
|
_aim_checkmk_linux_package_rows: "{{ ansible_facts.packages.get('check-mk-agent', []) }}"
|
|
when: ansible_facts.os_family != 'Windows'
|
|
|
|
- name: Checkmk | Observe Windows service state
|
|
ansible.windows.win_service_info:
|
|
name: '{{ item }}'
|
|
loop: '{{ _checkmk_windows_services | default([]) }}'
|
|
register: _aim_checkmk_final_services
|
|
when: ansible_facts.os_family == 'Windows'
|
|
|
|
- name: Checkmk | Collect Linux service facts
|
|
ansible.builtin.service_facts:
|
|
when: ansible_facts.os_family != 'Windows'
|
|
|
|
- name: Checkmk | Observe Linux unit state
|
|
ansible.builtin.set_fact:
|
|
_aim_checkmk_unit_state: >-
|
|
{{ ansible_facts.services.get(_checkmk_linux_units | first,
|
|
{'name': _checkmk_linux_units | first, 'state': 'unknown'}) }}
|
|
when: ansible_facts.os_family != 'Windows'
|
|
|
|
- name: Checkmk | Build installed state report
|
|
ansible.builtin.set_fact:
|
|
_aim_checkmk_state: >-
|
|
{{
|
|
(
|
|
(_aim_checkmk_version_raw.stdout | from_json)
|
|
if ansible_facts.os_family == 'Windows'
|
|
else {
|
|
'installed': (_aim_checkmk_linux_package_rows | default([]) | length) > 0,
|
|
'version': (
|
|
(_aim_checkmk_linux_package_rows | first).version
|
|
if (_aim_checkmk_linux_package_rows | default([]) | length) == 1
|
|
else none
|
|
),
|
|
'version_source': 'package_facts'
|
|
}
|
|
)
|
|
| aim_report_checkmk_state(
|
|
(
|
|
_aim_checkmk_final_services.results
|
|
| selectattr('services', 'defined')
|
|
| map(attribute='services')
|
|
| flatten
|
|
) if ansible_facts.os_family == 'Windows' else [_aim_checkmk_unit_state],
|
|
_aim_checkmk_changes,
|
|
_checkmk_package_install.changed | default(false),
|
|
ansible_check_mode
|
|
)
|
|
}}
|