ansible adatgyűjtés

Fórumok

Hi,

 

Mi a best practice, ha van egy CVE lista és be kellene gyűjteni azokat a szervereket, amikre nincsenek telepítve a CVE-khez tartozó patch-ek?

Olyan megoldás kellene, ami később "paraméterezhető", tehát a CVE lista bármikor változhat.

Minél natívabb ansible megoldást keresek (simán bash-sel vagy ansible+taknyolással én is meg tudom oldani).

Thx.

Hozzászólások

Automatikusan telepiteni is szeretned a patcheket vagy pedig csak info gyujteshez kell?

"a vegtelenbe es tovabb..."

Az Ansible Tower ezt igy cakk-pakk tudja, Security Automation neven fut. Van kozponti CVE adatbazis, a hozza tartozo remediacios scriptek, etc.

Meg nem hasznaltam, de pont mult heten lattam egy eleg meggyozo demot. Itt nezd meg az aljan a videot; https://www.ansible.com/use-cases/security-automation

Hali,

 

Köszi de Tower nincs.

Van Satellite, abból is biztos ki lehet valahogy szedni.

 

De igazából a CVE csak egy példa volt arra a kérdésre, hogy ansible is tudja-e azt, amit bash-ben 5 sorban meg tudok oldani (bármilyen fact begyűjtése bármilyen szerverről).

Az se baj, ha nem tudja, mert az ansible igazából config management tool és nem inventory tool.

Érzésem szerint az ansible, mint config management eszköz nem igazán erre való. Nyilván command module-al és register + return code ellenőrzéssel megoldható, de itt legfeljebb annyit segít az ansible, hogy a meglévő inventorydat és connectionödet tudja használni, nem kell neked scriptből ssh-znod. De ha nagyon akarsz, írhatsz custom facteket mindenféle célra pythonban, pont a mountokra van amúgy (ansible_mounts).

Úgy értem, hogy lehet ilyesmit írni, csak nem biztos, hogy érdemes:
 

- hosts: all

  vars:
    device_to_check: 'remote:/path'

  tasks:

    - set_fact:
        devices: "{{ ansible_mounts | map(attribute='device') | list }}"

    - debug:
        msg: "{{ inventory_hostname }}"
      when: device_to_check in devices

Én erre írnék egy ad-hoc playbookot ami futtat egy command module-t ami gyakorlatilag csinál egy df vagy mount parancsot és grep -c {{valami}} ahol pedig a {{valami}} az ansible playbook-nál megadott -e "valami=mount1". Valami ilyesmi lenne:

  tasks:
    - name: Check mount
      command: bash -c "df | grep -c {{valami}}"
      register: mounted
      changed_when: mounted.rc != 0
      failed_when: false
 

És akkor: ansible playbook -i hostlista check-mount.yml -e "valami=mount_neve"

Changed lesz ha nincs ott a mount, ok lesz ha ott van. De lehet, hogy én értem félre a kérdést.