
Ich versuche, einen Befehl „yum list updates“ auszuführen und das Ergebnis in eine Datei auf dem lokalen Server auszugeben. Dies würde so skaliert, dass es auf mehreren Servern ausgeführt werden kann. Ich habe das Modul „local_action“ gefunden, dies führt jedoch zu einer nicht lesbaren Datei. Ich habe den Befehl „-debug: var: result“ gefunden, um die erforderlichen Informationen in einem guten Format anzuzeigen, aber es scheint keine Möglichkeit zu geben, diese in eine Datei zu übertragen.
Unten finden Sie das Playbook:
---
- hosts: localhost
tasks:
- name: List all available updates
yum:
list: updates
register: result
- debug:
var: result
- local_action:
module: copy
content: "{{ result.results }}"
dest: "/root/yumlist.yml"
Die Debug-Aufgabe gibt ein Ergebnis wie dieses zurück: *
ok: [localhost] => {
"result": {
"changed": false,
"failed": false,
"results": [
{
"arch": "x86_64",
"envra": "0:firefox-68.4.1-1.el7_7.x86_64",
"epoch": "0",
"name": "firefox",
"release": "1.el7_7",
"repo": "rhel-7-server-rpms",
"version": "68.4.1",
"yumstate": "available"
},
{
"arch": "x86_64",
"envra": "0:fribidi-1.0.2-1.el7_7.1.x86_64",
"epoch": "0",
"name": "fribidi",
"release": "1.el7_7.1",
"repo": "rhel-7-server-rpms",
"version": "1.0.2",
"yumstate": "available"
},
und die local_action gibt mir Folgendes ...
[{"envra": "0:firefox-68.4.1-1.el7_7.x86_64", "Name": "Firefox", "Repo": "Rhel-7-Server-RPMs", "Epoch": "0", "Version": "68.4.1", "Release": "1.el7_7", "yumstate": "verfügbar", "Arch": "x86_64"}, {"envra": "0:fribidi-1.0.2-1.el7_7.1.x86_64", "Name":
Irgendwelche Ideen?
Antwort1
Wenn Ihnen die JSON- oder YAML-Ausgabe nichts ausmacht und Sie nur eine schönere Darstellung wünschen, können Sie ein paar Filter ausprobieren (to_nice_json oder to_nice_yaml).Referenz.
- local_action:
module: copy
content: "{{ result.results |to_nice_json }}"
dest: "/root/yumlist.yml"
oder
- local_action:
module: copy
content: "{{ result.results |to_nice_yaml }}"
dest: "/root/yumlist.yml"