ansible_mounts ist ein Array von Wörterbüchern, wie so -Simplest nicht-Schale Weise eingestellt Mount-Punkte, um zu bestätigen existieren mit benutzerdefinierten Mindestgröße für jede
"ansible_mounts": [ { "device": "/dev/mapper/vg_centos67template-lv_root", "fstype": "ext4", "mount": "/", "options": "rw", "size_available": 8806977536, "size_total": 37458894848, "uuid": "N/A" }, { "device": "/dev/sda1", "fstype": "ext4", "mount": "/boot", "options": "rw", "size_available": 369055744, "size_total": 499355648, "uuid": "N/A" }, ],
I müssen eine Reihe von spezifischen bestätigen Einhängepunkte existieren mit minimalen Größen. Ich habe die Kontrolle über die Datenstruktur für diese, aber für jetzt haben sie ähnlich strukturiert -
requiredMounts:
- { mount: /tmp, size_min: 2147483648, }
- { mount: /dev/shm, size_min: 204010946560, }
Ich hatte gehofft, einen selectattr() verwenden Filter wie ein grep, aber es ist nicht verfügbar.
fatal: [tstServer]: FEHLGESCHLAGEN! => {"failed": true, "msg": "Template Fehler beim Templating String: Kein Filter namens 'selectattr'. String: {{ansible_mounts | selectattr ('mount', 'equalto', item.mount)}}" }
Verwendung von jinja 2.6. Keine Ahnung, warum selectattr() nicht da ist.
(Das ist jenkins Ausgang, wenn jemand kümmert.)
Glückliche zu verwenden, wenn, scheitern, assert, with_items, with_nested, kombinieren() und/oder irgend etwas anderes ; habe einfach nicht die richtige Kombination gefunden, um es ordentlich zu machen. Ich würde es lieber nicht ein Dutzend Schritte nehmen - einer wäre ideal.
Vorschläge?
Nachtrag: Ich kann Mount bestätigen Punkte ziemlich leicht in einem Schritt mit einem fail: ... when: not item.mount|is_mount
... was interessant ist, denn während /dev/shm
zeigt als Mount-Punkt auf diese Weise (und von Befehl wie df
& mount
) Es ist nicht in ansible_mounts
enthalten.
Das bedeutet, ich kann nicht einfach ansible_mounts
verwenden, um Dateigrößen in einem separaten with_nested
für /dev/shm
zu überprüfen. Das macht mich zu einem traurigen Panda.
Weitere Nachtrag:
Stellt sich heraus, ich habe einen Punkt zu prüfen, montieren (/ tmp), die im Allgemeinen zur Verfügung über das übliche Dateisystem ist - beste Option ansible_mounts! - eine (/ dev/shm), die tempfs ist - am einfachsten scheint df zu sein, die auch mit/tmp umgehen kann - und eine Menge, die oracle verwaltet, so dass sie nur über fdisk verfügbar sind.
Am Ende stellt sich heraus, dass ich mehr als ein Dutzend Laufwerke pro System überprüfen muss, aber das/tmp ist das einzig verfügbare für ansible_mounts. Das gesagt, meine Frage wird so strittig, wie ich es gefragt habe ...
Danke für die Eingabe.
Versucht, unter verschiedenen anderen Bemühungen. Habe in dieser Umgebung nicht genau herausgefunden, wie. 'Anforderung bereits erfüllt: Jinja2 in/usr/lib/python2.6/site-packages/Jinja2-2.6-py2.6.egg' –
' pip installieren Jinja2 == 2.8'? –
Wissen Sie, ich habe mindestens eine Stunde damit verbracht, diese spezifische Syntax zu finden, und bin einfach im Kreis geblieben. Vielen Dank! :) Aber '{{ansible_mounts}}' immer noch nicht meine '/ dev/shm' mount, so muss ich einen anderen Weg finden, um die Größe zu überprüfen. :( –