it-swarm.com.de

Ansible: wie man die Ausgabe zur Anzeige bringt

Ich habe folgendes Playbook, Playbook mit Ausgabe

Derzeit gibt es keine Fehler und es läuft gut. Die Ausgabe auf der Konsole wird jedoch nicht angezeigt. Ich bin auf dieses Problem mit anderen Playbooks gestoßen und habe es umgangen, indem ich dem Playbook die folgende Aufgabe hinzugefügt habe:

-debug: var=output.stdout_lines

und es druckt die Ausgabe. Ich habe jedoch versucht, dasselbe im obigen Playbook zu tun, und es besagt, dass die Variable undefiniert war (Code wird nicht angezeigt, weil er nicht funktioniert hat).

Kennt jemand einen besseren Weg, um die Ausgabe auf die Konsole zu drucken, ohne -debug Zu verwenden? Irgendwelche anzeigbaren Hinweise wären sehr dankbar.

14
Tom Haley

Jede ausführbare Aufgabe kann ihre Ergebnisse in einer Variablen speichern. Dazu müssen Sie angeben, in welcher Variablen die Ergebnisse gespeichert werden sollen. Dies können Sie mit dem Parameter register unabhängig vom verwendeten Modul tun.

Sobald Sie den Wert in einer Variablen gespeichert haben, können Sie ihn später in einer der folgenden Aufgaben verwenden. Wenn Sie beispielsweise die Standardausgabe einer bestimmten Aufgabe erhalten möchten, können Sie Folgendes schreiben:

---
- hosts: localhost
  tasks:
    - Shell: ls
      register: Shell_result

    - debug:
        var: Shell_result.stdout_lines

Hier weist register ansible an, die Antwort des Moduls in der Variablen Shell_result Zu speichern, und dann verwenden wir das Modul debug, um die Variable auszudrucken.

Ein Beispiellauf würde so aussehen:

PLAY [localhost] ***************************************************************

TASK [command] *****************************************************************
changed: [localhost]

TASK [debug] *******************************************************************
ok: [localhost] => {
    "Shell_result.stdout_lines": [
        "play.yml"
    ]
}

Antworten können mehrere Felder enthalten. stdout_lines Ist eines der Standardfelder , das Sie von der Antwort eines Moduls erwarten können.

Nicht alle Felder sind in allen Modulen verfügbar, z. B. für ein Modul, das nicht zum Standard zurückkehrt, würden Sie in den Werten stdout oder stdout_lines Jedoch nichts erwarten In diesem Fall wird möglicherweise das Feld msg ausgefüllt. Es gibt auch einige Module, in denen Sie möglicherweise etwas in einer Nicht-Standardvariablen finden. Informationen zu diesen Nicht-Standardrückgabewerten finden Sie in der Dokumentation des Moduls.

Alternativ können Sie die Ausführlichkeit von Ansible-Playbook erhöhen. Sie können zwischen verschiedenen Ausführlichkeitsstufen wählen: -v, -vvv Und -vvvv. Wenn Sie beispielsweise das Playbook ausführlich ausführen (-vvv), Erhalten Sie Folgendes:

PLAY [localhost] ***************************************************************

TASK [command] *****************************************************************
(...)
changed: [localhost] => {
    "changed": true,
    "cmd": "ls",
    "delta": "0:00:00.007621",
    "end": "2017-02-17 23:04:41.912570",
    "invocation": {
        "module_args": {
            "_raw_params": "ls",
            "_uses_Shell": true,
            "chdir": null,
            "creates": null,
            "executable": null,
            "removes": null,
            "warn": true
        },
        "module_name": "command"
    },
    "rc": 0,
    "start": "2017-02-17 23:04:41.904949",
    "stderr": "",
    "stdout": "play.retry\nplay.yml",
    "stdout_lines": [
        "play.retry",
        "play.yml"
    ],
    "warnings": []
}

Wie Sie sehen, wird die Antwort jedes Moduls und aller verfügbaren Felder ausgedruckt. Sie können sehen, dass der stdout_lines Verfügbar ist, und sein Inhalt entspricht unseren Erwartungen.

Wenn Sie zur Beantwortung Ihrer Hauptfrage zum Modul jenkins_scriptDokumentation aktivieren, können Sie feststellen, dass die Ausgabe im Feld output zurückgegeben wird Folgendes ausprobieren:

tasks:
  - jenkins_script:
      script: (...)
    register: jenkins_result

  - debug:
      var: jenkins_result.output
29
SztupY