mondoo.client
Rôle Ansible Mondoo Package
Aperçu
Ce rôle installe cnquery
et cnspec
sur les serveurs Linux et Windows.
Il fait :
- Installe les binaires signés
cnquery
etcnspec
- Enregistre
cnquery
etcnspec
avec la plateforme Mondoo - Active le service
cnspec
sur Linux et Windows
Il prend en charge :
- Amazon Linux
- Debian
- Red Hat Enterprise Linux et dérivés (CentOS/AlmaLinux/Rocky Linux)
- SUSE & openSUSE
- Ubuntu
- Windows 10, 11, 2016, 2019, 2022
Le rôle est publié sur Ansible Galaxy : Rôle Mondoo/Client.
Exigences
- Ansible > 2.5
Variables de Rôle
Nom | Valeur par Défaut | Description |
---|---|---|
registration_token_retrieval |
manual |
manual nécessite de définir registration_token |
registration_token |
n/a | définit manuellement le jeton d'enregistrement de la plateforme Mondoo utilisé pour enregistrer cnquery et cnspec |
force_registration |
false | force la réinscription à chaque exécution |
Dépendances
Ce rôle n'a pas de dépendances.
Exemple : Appliquer un Playbook Ansible à une instance Linux Amazon EC2
Ce playbook montre comment utiliser le rôle Mondoo Package pour installer cnquery
et cnspec
sur plusieurs instances :
- Créez un nouvel inventaire
hosts
. Ajoutez votre hôte au groupe.
[linux_hosts]
54.172.7.243 ansible_user=ec2-user
- Créez un
playbook.yml
et changez leregistration_token
:
---
- hosts: linux_hosts
become: yes
roles:
- role: ansible-mondoo # si utilisé depuis galaxy : mondoo.client
vars:
registration_token: "changeme"
De plus, nous prenons en charge les variables suivantes :
variable | description |
---|---|
force_registration: true |
mettre à true si vous souhaitez réinscrire cnquery et cnspec |
ensure_managed_client: true |
garantit que les clients configurés sont définis comme clients gérés dans Mondoo |
proxy_env['https_proxy'] |
définit le proxy pour le client cnspec |
annotations |
définit des annotations/étiquettes pour le nœud |
update_linux_enabled |
mettre à true si vous souhaitez activer la tâche de mise à jour pour Linux via une tâche cron |
update_linux_cron_day |
définit l'intervalle de mise à jour en jours pour la mise à jour de cnspec, exemple */3 pour tous les 3 jours |
update_linux_cron_hour |
définit l'heure à laquelle la tâche doit être effectuée |
update_linux_cron_minute |
définit la minute à laquelle la tâche doit être effectuée |
update_windows_enabled |
mettre à true si vous souhaitez activer la tâche de mise à jour pour Windows via une tâche planifiée |
update_windows_interval |
définit l'intervalle de mise à jour en jours pour la mise à jour de cnspec |
update_windows_time |
définit l'heure à laquelle la tâche doit être effectuée |
timer |
définit le minuteur pour définir un intervalle de scan en minutes. La valeur par défaut est 60. |
splay |
définit le délai dans le timing de scan |
---
- hosts: linux_hosts
become: yes
roles:
- role: ansible-mondoo # si utilisé depuis galaxy : mondoo.client
vars:
registration_token: "changeme"
force_registration: true
ensure_managed_client: true
annotations: "[email protected],env=production"
Si vous souhaitez utiliser cnspec derrière un 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 # si utilisé depuis galaxy : mondoo.client
vars:
registration_token: "changeme"
force_registration: true
ensure_managed_client: true
environment: "{{proxy_env}}"
Si vous souhaitez utiliser la tâche de mise à jour Windows :
---
- hosts: windows_hosts
become: yes
roles:
- role: ansible-mondoo # si utilisé depuis 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"
Si vous souhaitez utiliser la tâche de mise à jour Linux :
---
- hosts: linux_hosts
become: yes
roles:
- role: ansible-mondoo # si utilisé depuis 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"
- Exécutez le playbook avec le fichier hosts local :
# télécharger le rôle mondoo depuis github
ansible-galaxy role install git+https://github.com/mondoohq/ansible-mondoo.git
# (alternatif) télécharger le rôle mondoo depuis ansible galaxy
ansible-galaxy install mondoo.client
# appliquer le playbook
ansible-playbook -i hosts playbook.yml
- Connectez-vous à la console Mondoo pour voir les résultats des scans
Appliquer un Playbook Ansible à une instance Windows Amazon EC2
Si vous utilisez Windows, veuillez lire la documentation d'ansible concernant la configuration WinRM ou la configuration SSH.
- Créez un nouvel inventaire
hosts
. Ajoutez votre hôte au groupe.
[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
ou si vous allez utiliser ssh :
3.235.247.76 ansible_port=22 ansible_connection=ssh ansible_user=admin ansible_shell_type=cmd
- Créez un
playbook.yml
et changez leregistration_token
:
Si vous ciblez Windows, la configuration est légèrement différente car become
doit être désactivé :
- hosts: windows_hosts
roles:
- role: ansible-mondoo # si utilisé depuis galaxy : mondoo.client
vars:
registration_token: "changeme"
force_registration: false
- Exécutez le playbook avec le fichier hosts local :
# télécharger le rôle mondoo depuis github
ansible-galaxy role install git+https://github.com/mondoohq/ansible-mondoo.git
# (alternatif) télécharger le rôle mondoo depuis ansible galaxy
ansible-galaxy install mondoo.client
# appliquer le playbook
ansible-playbook -i hosts playbook.yml
Tests
Pour les tests, ce rôle utilise molecule. Vous pouvez installer les dépendances via :
pip install molecule
pip install docker
pip install 'molecule-plugins[docker]'
L'interface en ligne de commande molecule
couvre le cycle de vie des tests :
# réinitialiser molecule
molecule reset
# converger les machines avec ansible
image=geerlingguy/docker-ubuntu2204-ansible molecule converge
# exécuter les tests molecule avec cnspec
image=geerlingguy/docker-ubuntu2204-ansible molecule verify
# pour le débogage, vous pouvez vous connecter à des hôtes individuels
molecule login --host ubuntu
# détruire la configuration de test
molecule destroy
image=geerlingguy/docker-ubuntu2204-ansible molecule test
image=rsprta/opensuse-ansible molecule test
REMARQUE : pour pouvoir tester sur macOS m1, vous avez besoin d'images docker compatibles arm comme rockylinux indiquées ci-dessus.
Pour le linting, nous utilisons ansible-lint
:
pip3 install ansible-lint
Ensuite, vous pouvez voir tous les problèmes locaux avec :
ansible-lint
Auteur
Mondoo, Inc
FAQ
Erreur 'module' object's has no attribute 'HTTPSHandler'
TASK [mondoo : Télécharger la clé RPM de Mondoo] ********************************
fatal: [suse]: ÉCHEC! => {"changed": false, "module_stderr": "Connexion partagée à 127.0.0.1 fermée.\r\n", "module_stdout": "Traceback (most recent call last):\r\n File \"/home/vagrant/.ansible/tmp/ansible-tmp-1562450830.52-85510064926638/AnsiballZ_get_url.py\", line 113, in <module>\r\n _ansiballz_main()\r\n File \"/home/vagrant/.ansible/tmp/ansible-tmp-1562450830.52-85510064926638/AnsiballZ_get_url.py\", line 105, in _ansiballz_main\r\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n File \"/home/vagrant/.ansible/tmp/ansible-tmp-1562450830.52-85510064926638/AnsiballZ_get_url.py\", line 48, in invoke_module\r\n imp.load_module('__main__', mod, module, MOD_DESC)\r\n File \"/tmp/ansible_get_url_payload_103dVU/__main__.py\", line 308, in <module>\r\n File \"/tmp/ansible_get_url_payload_103dVU/ansible_get_url_payload.zip/ansible/module_utils/urls.py\", line 346, in <module>\r\nAttributeError: 'module' object has no attribute 'HTTPSHandler'\r\n", "msg": "ÉCHEC DU MODULE\nConsultez stdout/stderr pour l'erreur exacte", "rc": 1}
sudo zypper install python python2-urllib3 python3 python3-urllib3
Erreur ansible.legacy.setup
sur Windows avec SSH
fatal: [123.123.247.76]: ÉCHEC! => {"ansible_facts": {}, "changed": false, "failed_modules": {"ansible.legacy.setup": {"failed": true, "module_stderr": "Le format du paramètre n'est pas correct - ;\r\n", "module_stdout": "", "msg": "ÉCHEC DU MODULE\nConsultez stdout/stderr pour l'erreur exacte", "rc": 1}}, "msg": "Les modules suivants ont échoué à s'exécuter : ansible.legacy.setup\n"}
Ansible en combinaison avec les versions de Win32-OpenSSH antérieures à v7.9.0.0p1-Beta ne fonctionnent pas lorsque powershell
est le type de shell, définissez le type de shell sur cmd
.
Erreur : Vous devez installer 'jmespath' avant d'exécuter le filtre json_query
Assurez-vous que jmespath est installé dans le même environnement Python qu'ansible :
pip install jmespath
Je veux le tester avec un système d'exploitation non pris en charge
Ajoutez ce qui suit à main.yml et imprimez les ansible_facts pour voir ce qui est utilisé et ajustez les conditions when
:
- name: Imprimer tous les faits disponibles
ansible.builtin.debug:
var: ansible_facts
Rejoignez la communauté !
Rejoignez les Discussions de la communauté Mondoo sur GitHub pour collaborer sur la politique comme code et l'automatisation de la sécurité.
ansible-galaxy install mondoo.client