mondoo.client
Mondoo Paket Ansible Rolle
Überblick
Diese Rolle installiert cnquery
und cnspec
auf Linux- und Windows-Servern.
Sie macht:
- Installiert die signierten Binaries
cnquery
undcnspec
- Registriert
cnquery
undcnspec
bei der Mondoo-Plattform - Aktiviert den
cnspec
-Dienst auf Linux und Windows
Unterstützt werden:
- Amazon Linux
- Debian
- Red Hat Enterprise Linux und Derivate (CentOS/AlmaLinux/Rocky Linux)
- SUSE & openSUSE
- Ubuntu
- Windows 10, 11, 2016, 2019, 2022
Die Rolle ist im Ansible Galaxy veröffentlicht: Mondoo/Client Rolle.
Anforderungen
- Ansible > 2.5
Rollenvariablen
Name | Standardwert | Beschreibung |
---|---|---|
registration_token_retrieval |
manuell |
manuell erfordert die Einstellung von ``registration_token` |
registration_token |
n/a | Manuell den Registrierungs-Token der Mondoo-Plattform festlegen, der zur Registrierung von cnquery und cnspec verwendet wird |
force_registration |
false | Erzwingt die erneute Registrierung bei jedem Durchlauf |
Abhängigkeiten
Diese Rolle hat keine Rollenabhängigkeiten
Beispiel: Ansible-Playbook auf Amazon EC2 Linux-Instanz anwenden
Dieses Playbook zeigt, wie man die Mondoo-Paketrolle verwendet, um cnquery
und cnspec
auf mehreren Instanzen zu installieren:
- Erstelle ein neues
hosts
Inventar. Füge deinen Host zur Gruppe hinzu.
[linux_hosts]
54.172.7.243 ansible_user=ec2-user
- Erstelle eine
playbook.yml
und ändere dasregistration_token
:
---
- hosts: linux_hosts
become: yes
roles:
- role: ansible-mondoo # wenn von Galaxy verwendet: mondoo.client
vars:
registration_token: "changeme"
Zusätzlich unterstützen wir folgende Variablen:
Variable | Beschreibung |
---|---|
force_registration: true |
auf true setzen, wenn du cnquery und cnspec erneut registrieren möchtest |
ensure_managed_client: true |
stellt sicher, dass die konfigurierten Clients in Mondoo als verwaltete Clients konfiguriert sind |
proxy_env['https_proxy'] |
Setze den Proxy für den cnspec -Client |
annotations |
Setze Annotationen/TAGS für den Knoten |
update_linux_enabled |
auf true setzen, wenn du die Aktualisierungsaufgabe für Linux über Cron aktivieren möchtest |
update_linux_cron_day |
Definiere das Aktualisierungsintervall in Tagen für das cnspec-Update, Beispiel */3 für alle 3 Tage |
update_linux_cron_hour |
Definiere die Stunde, zu der die Aufgabe durchgeführt werden soll |
update_linux_cron_minute |
Definiere die Minute, zu der die Aufgabe durchgeführt werden soll |
update_windows_enabled |
auf true setzen, wenn du die Aktualisierungsaufgabe für Windows aktivieren möchtest |
update_windows_interval |
Definiere das Aktualisierungsintervall in Tagen für das cnspec-Update |
update_windows_time |
Definiere die Zeit, zu der die Aufgabe durchgeführt werden soll |
timer |
Definiere den Timer, um ein Scanintervall in Minuten festzulegen. Der Standardwert ist 60. |
splay |
Definiere die Verzögerung bei der Scanzeit |
---
- hosts: linux_hosts
become: yes
roles:
- role: ansible-mondoo # wenn von Galaxy verwendet: mondoo.client
vars:
registration_token: "changeme"
force_registration: true
ensure_managed_client: true
annotations: "[email protected],env=production"
Wenn du cnspec hinter einem Proxy verwenden möchtest:
---
- hosts: linux_hosts
become: yes
vars:
proxy_env:
http_proxy: "http://192.168.56.1:3128"
https_proxy: "http://192.168.56.1:3128"
roles:
- role: ansible-mondoo # wenn von Galaxy verwendet: mondoo.client
vars:
registration_token: "changeme"
force_registration: true
ensure_managed_client: true
environment: "{{proxy_env}}"
Wenn du die Windows-Aktualisierungsaufgabe nutzen möchtest:
---
- hosts: windows_hosts
become: yes
roles:
- role: ansible-mondoo # wenn von Galaxy verwendet: mondoo.client
vars:
registration_token: "changeme"
force_registration: true
ensure_managed_client: true
update_windows_enabled: true
update_windows_interval: "1"
update_windows_time: "15:04"
Wenn du die Linux-Aktualisierungsaufgabe nutzen möchtest:
---
- hosts: linux_hosts
become: yes
roles:
- role: ansible-mondoo # wenn von Galaxy verwendet: mondoo.client
vars:
registration_token: "changeme"
force_registration: true
ensure_managed_client: true
update_linux_enabled: true
update_linux_cron_day: "*"
update_linux_cron_hour: "11"
update_linux_cron_minute: "40"
- Führe das Playbook mit der lokalen Hosts-Datei aus:
# Mondoo-Rolle von GitHub herunterladen
ansible-galaxy role install git+https://github.com/mondoohq/ansible-mondoo.git
# (Alternative) Mondoo-Rolle von Ansible Galaxy herunterladen
ansible-galaxy install mondoo.client
# wende das Playbook an
ansible-playbook -i hosts playbook.yml
- Melde dich bei der Mondoo-Konsole an, um die Scanergebnisse zu sehen.
Ansible-Playbook auf Amazon EC2 Windows-Instanz anwenden
Wenn du Windows verwendest, lies die Ansible-Dokumentation zum WinRM-Setup oder zum SSH-Setup.
- Erstelle ein neues
hosts
Inventar. Füge deinen Host zur Gruppe hinzu.
[windows_hosts]
123.123.247.76 ansible_port=5986 ansible_connection=winrm ansible_user=Administrator ansible_password=changeme ansible_shell_type=powershell ansible_winrm_server_cert_validation=ignore
oder wenn du SSH verwenden möchtest:
3.235.247.76 ansible_port=22 ansible_connection=ssh ansible_user=admin ansible_shell_type=cmd
- Erstelle eine
playbook.yml
und ändere dasregistration_token
:
Wenn du Windows anvisierst, ist die Konfiguration etwas anders, da become
deaktiviert werden muss:
- hosts: windows_hosts
roles:
- role: ansible-mondoo # wenn von Galaxy verwendet: mondoo.client
vars:
registration_token: "changeme"
force_registration: false
- Führe das Playbook mit der lokalen Hosts-Datei aus:
# Mondoo-Rolle von GitHub herunterladen
ansible-galaxy role install git+https://github.com/mondoohq/ansible-mondoo.git
# (Alternative) Mondoo-Rolle von Ansible Galaxy herunterladen
ansible-galaxy install mondoo.client
# wende das Playbook an
ansible-playbook -i hosts playbook.yml
Testen
Für Tests verwendet diese Rolle Molecule. Du kannst die Abhängigkeiten über:
pip install molecule
pip install docker
pip install 'molecule-plugins[docker]'
Die molecule
CLI deckt den Testzyklus ab:
# Molecule zurücksetzen
molecule reset
# Maschinen mit Ansible zusammenführen
image=geerlingguy/docker-ubuntu2204-ansible molecule converge
# Molecule-Tests mit cnspec ausführen
image=geerlingguy/docker-ubuntu2204-ansible molecule verify
# Zum Debuggen kannst du dich bei einzelnen Hosts anmelden
molecule login --host ubuntu
# Testaufbau zerstören
molecule destroy
image=geerlingguy/docker-ubuntu2204-ansible molecule test
image=rsprta/opensuse-ansible molecule test
HINWEIS: Um auf MacOS M1 testen zu können, benötigst du ARM-kompatible Docker-Images wie oben zu sehen.
Für das Linting verwenden wir ansible-lint
:
pip3 install ansible-lint
Dann kannst du alle lokalen Probleme mit:
ansible-lint
Autor
Mondoo, Inc
FAQ
Fehler 'module' Objekt hat kein Attribut 'HTTPSHandler'
TASK [mondoo : Mondoo RPM-Schlüssel herunterladen] ********************************
fatal: [suse]: FEHLER! => {"changed": false, "module_stderr": "Verbindung zu 127.0.0.1 geschlossen.\r\n", "module_stdout": "Traceback (most recent call last):\r\n Datei \"/home/vagrant/.ansible/tmp/ansible-tmp-1562450830.52-85510064926638/AnsiballZ_get_url.py\", Zeile 113, in <module>\r\n _ansiballz_main()\r\n Datei \"/home/vagrant/.ansible/tmp/ansible-tmp-1562450830.52-85510064926638/AnsiballZ_get_url.py\", Zeile 105, in _ansiballz_main\r\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n Datei \"/home/vagrant/.ansible/tmp/ansible-tmp-1562450830.52-85510064926638/AnsiballZ_get_url.py\", Zeile 48, in invoke_module\r\n imp.load_module('__main__', mod, module, MOD_DESC)\r\n Datei \"/tmp/ansible_get_url_payload_103dVU/__main__.py\", Zeile 308, in <module>\r\n Datei \"/tmp/ansible_get_url_payload_103dVU/ansible_get_url_payload.zip/ansible/module_utils/urls.py\", Zeile 346, in <module>\r\nAttributeError: 'module' Objekt hat kein Attribut 'HTTPSHandler'\r\n", "msg": "MODULFEHLER\nSiehe stdout/stderr für den genauen Fehler", "rc": 1}
sudo zypper install python python2-urllib3 python3 python3-urllib3
Fehler ansible.legacy.setup
auf Windows mit SSH
fatal: [123.123.247.76]: FEHLER! => {"ansible_facts": {}, "changed": false, "failed_modules": {"ansible.legacy.setup": {"failed": true, "module_stderr": "Parameterformat nicht korrekt - ;\r\n", "module_stdout": "", "msg": "MODULFEHLER\nSiehe stdout/stderr für den genauen Fehler", "rc": 1}}, "msg": "Folgende Module konnten nicht ausgeführt werden: ansible.legacy.setup\n"}
Ansible funktioniert in Kombination mit Win32-OpenSSH-Versionen älter als v7.9.0.0p1-Beta nicht, wenn powershell
der Shell-Typ ist. Setze den Shell-Typ auf cmd
.
Fehler: Du musst 'jmespath' installieren, bevor du den json_query-Filter ausführst"
Stelle sicher, dass jmespath in derselben Python-Umgebung wie Ansible installiert ist:
pip install jmespath
Ich möchte es mit einem nicht unterstützten Betriebssystem testen
Füge Folgendes zu main.yml hinzu und drucke die ansible_facts aus, um zu sehen, was verwendet wird und passe die when
-Bedingungen an:
- name: Alle verfügbaren Fakten drucken
ansible.builtin.debug:
var: ansible_facts
Trete der Community bei!
Tritt den Mondoo Community GitHub-Diskussionen bei, um über Policy as Code und Sicherheitsautomatisierung zu diskutieren.
ansible-galaxy install mondoo.client