mondoo.client
Pakiet Mondoo - Rola Ansible
Przegląd
Ta rola instaluje cnquery
i cnspec
na serwerach z systemem Linux i Windows.
Ona:
- Instaluje podpisane pliki binarne
cnquery
icnspec
- Rejestruje
cnquery
icnspec
w platformie Mondoo - Włącza usługę
cnspec
na systemach Linux i Windows
Obsługuje:
- Amazon Linux
- Debian
- Red Hat Enterprise Linux i pochodne (CentOS/AlmaLinux/Rocky Linux)
- SUSE oraz openSUSE
- Ubuntu
- Windows 10, 11, 2016, 2019, 2022
Rola jest publikowana na Ansible Galaxy: Rola Mondoo/Client.
Wymagania
- Ansible > 2.5
Zmienne roli
Nazwa | Wartość Domyślna | Opis |
---|---|---|
registration_token_retrieval |
manual |
manual wymaga ustawienia registration_token |
registration_token |
n/a | ręcznie ustaw token rejestracji na platformie Mondoo, używany do rejestracji cnquery i cnspec |
force_registration |
false | wymusza ponowną rejestrację przy każdym uruchomieniu |
Zależności
Ta rola nie ma zależności od innych ról
Przykład: Zastosowanie playbooka Ansible na instancji Amazon EC2 z systemem Linux
Ten playbook pokazuje, jak użyć roli Mondoo Package, aby zainstalować cnquery
i cnspec
na wielu instancjach:
- Utwórz nową inwentarz
hosts
. Dodaj swoje hosty do grupy.
[linux_hosts]
54.172.7.243 ansible_user=ec2-user
- Utwórz
playbook.yml
i zmieńregistration_token
:
---
- hosts: linux_hosts
become: yes
roles:
- role: ansible-mondoo # jeśli korzystasz z galaxy: mondoo.client
vars:
registration_token: "changeme"
Dodatkowo wspieramy następujące zmienne:
zmienna | opis |
---|---|
force_registration: true |
ustaw na true, jeśli chcesz ponownie zarejestrować cnquery i cnspec |
ensure_managed_client: true |
zapewnia, że skonfigurowane klienci są skonfigurowane jako zarządzani klienci w Mondoo |
proxy_env['https_proxy'] |
ustaw proxy dla klienta cnspec |
annotations |
ustaw adnotacje/tagi dla węzła |
update_linux_enabled |
ustaw na true, jeśli chcesz włączyć zadanie aktualizacji dla Linuxa przez cron |
update_linux_cron_day |
zdefiniuj interwał aktualizacji w dniach dla aktualizacji cnspec, przykład */3 co 3 dni |
update_linux_cron_hour |
zdefiniuj godzinę, o której zadanie ma być wykonywane |
update_linux_cron_minute |
zdefiniuj minutę, o której zadanie ma być wykonywane |
update_windows_enabled |
ustaw na true, jeśli chcesz włączyć zadanie aktualizacji dla Windowsa przez zaplanowane zadanie |
update_windows_interval |
zdefiniuj interwał aktualizacji w dniach dla aktualizacji cnspec |
update_windows_time |
zdefiniuj czas, o której zadanie ma być wykonywane |
timer |
zdefiniuj interwał skanowania w minutach. Domyślnie wynosi 60. |
splay |
zdefiniuj opóźnienie w czasie skanowania |
---
- hosts: linux_hosts
become: yes
roles:
- role: ansible-mondoo # jeśli korzystasz z galaxy: mondoo.client
vars:
registration_token: "changeme"
force_registration: true
ensure_managed_client: true
annotations: "[email protected],env=production"
Jeśli chcesz używać cnspec za proxy
---
- 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 # jeśli korzystasz z galaxy: mondoo.client
vars:
registration_token: "changeme"
force_registration: true
ensure_managed_client: true
environment: "{{proxy_env}}"
Jeśli chcesz używać zadania aktualizacji Windows
---
- hosts: windows_hosts
become: yes
roles:
- role: ansible-mondoo # jeśli korzystasz z galaxy: 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"
Jeśli chcesz używać zadania aktualizacji Linux
---
- hosts: linux_hosts
become: yes
roles:
- role: ansible-mondoo # jeśli korzystasz z galaxy: 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"
- Uruchom playbook z lokalnym plikiem hosta
# pobierz rolę mondoo z github
ansible-galaxy role install git+https://github.com/mondoohq/ansible-mondoo.git
# (alternatywnie) pobierz rolę mondoo z ansible galaxy
ansible-galaxy install mondoo.client
# zastosuj playbook
ansible-playbook -i hosts playbook.yml
- Zaloguj się do Konsoli Mondoo, aby zobaczyć wyniki skanowania
Zastosowanie playbooka Ansible na instancji Amazon EC2 z systemem Windows
Jeśli korzystasz z systemu Windows, zapoznaj się z dokumentacją ansible na temat ustawienia WinRM lub ustawienia SSH.
- Utwórz nową inwentarz
hosts
. Dodaj swój host do grupy.
[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
lub jeśli używasz ssh:
3.235.247.76 ansible_port=22 ansible_connection=ssh ansible_user=admin ansible_shell_type=cmd
- Utwórz
playbook.yml
i zmieńregistration_token
:
Jeśli kierujesz do systemu Windows, konfiguracja jest nieco inna, ponieważ become
musi być wyłączone:
- hosts: windows_hosts
roles:
- role: ansible-mondoo # jeśli korzystasz z galaxy: mondoo.client
vars:
registration_token: "changeme"
force_registration: false
- Uruchom playbook z lokalnym plikiem hosta
# pobierz rolę mondoo z github
ansible-galaxy role install git+https://github.com/mondoohq/ansible-mondoo.git
# (alternatywnie) pobierz rolę mondoo z ansible galaxy
ansible-galaxy install mondoo.client
# zastosuj playbook
ansible-playbook -i hosts playbook.yml
Testowanie
Do testowania ta rola używa molecule
. Możesz zainstalować zależności za pomocą:
pip install molecule
pip install docker
pip install 'molecule-plugins[docker]'
CLI molecule
obejmuje cykl życia testu:
# resetuj molecule
molecule reset
# utwórz maszyny za pomocą ansible
image=geerlingguy/docker-ubuntu2204-ansible molecule converge
# uruchom testy molecule z cnspec
image=geerlingguy/docker-ubuntu2204-ansible molecule verify
# do debugowania, możesz się zalogować do poszczególnych hostów
molecule login --host ubuntu
# zniszcz setup testowy
molecule destroy
image=geerlingguy/docker-ubuntu2204-ansible molecule test
image=rsprta/opensuse-ansible molecule test
UWAGA: aby móc testować na macOS M1, potrzebujesz obrazów dockera zgodnych z architekturą ARM, takich jak rockylinux pokazany powyżej
Do analizy kodu używamy ansible-lint
:
pip3 install ansible-lint
Aby zobaczyć wszystkie lokalne problemy, użyj:
ansible-lint
Autor
Mondoo, Inc
FAQ
Błąd 'module' object has no attribute 'HTTPSHandler'
TASK [mondoo : Pobierz klucz RPM Mondoo] ********************************
fatal: [suse]: FAILED! => {"changed": false, "module_stderr": "Połączenie z 127.0.0.1 zamknięte.\r\n", "module_stdout": "Traceback (most recent call last):\r\n ...
sudo zypper install python python2-urllib3 python3 python3-urllib3
Błąd ansible.legacy.setup
w Windows z SSH
fatal: [123.123.247.76]: FAILED! => {"ansible_facts": {}, "changed": false, "failed_modules": {"ansible.legacy.setup": {"failed": true, "module_stderr": "Format parametru nieprawidłowy - ;\r\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}}, "msg": "Module 'ansible.legacy.setup' nie udało się wykonać."}
Ansible w połączeniu z wersjami Win32-OpenSSH starszymi niż v7.9.0.0p1-Beta nie działa, gdy powershell
jest typem powłoki, ustaw typ powłoki na cmd
.
Błąd: Musisz zainstalować 'jmespath' przed uruchomieniem filtru json_query"
Upewnij się, że jmespath jest zainstalowany w tym samym środowisku python co ansible:
pip install jmespath
Chcę to przetestować na nieobsługiwanym systemie operacyjnym
Dodaj następujące do main.yml i wydrukuj ansible_facts, aby zobaczyć, co jest używane i dostosować warunki when
:
- name: Print all available facts
ansible.builtin.debug:
var: ansible_facts
Dołącz do społeczności!
Dołącz do Społeczności Mondoo na GitHub Discussions, aby współpracować nad polityką jako kod i automatyzacją bezpieczeństwa.
ansible-galaxy install mondoo.client