ansible print debug msg variable

17

Ich versuche, die zuvor registrierte mosh_versionVariable mit dem Ansible- debug msgBefehl wie folgt zu drucken :

- name: Print mosh version
  debug: msg="Mosh Version: {{ mosh_version.stdout }}"

Es funktioniert nicht und gibt den folgenden Fehler aus:

Note: The error may actually appear before this position: line 55, column 27

- name: Print mosh version
  debug: msg="Mosh Version: {{ mosh_version.stdout }}"
                          ^
We could be wrong, but this one looks like it might be an issue with
missing quotes.  Always quote template expression brackets when they
start a value. For instance:

    with_items:
      - {{ foo }}

Should be written as:

    with_items:
      - "{{ foo }}"

Ich habe es versucht

- name: Print mosh version
  debug: msg=Mosh Version: "{{ mosh_version.stdout }}"

aber dies wird nur "Mosh" drucken.

Was ist der beste Weg, um dies zum Laufen zu bringen?

Zulakis
quelle

Antworten:

25

Versuche dies:

- name: Print mosh version
  debug: "msg=Mosh Version: '{{ mosh_version.stdout }}'"

Weitere Informationen finden Sie unter http://docs.ansible.com/YAMLSyntax.html#gotchas

Bearbeitet: So etwas funktioniert perfekt für mich:

- name: Check Ansible version
  command: ansible --version
  register: ansibleVersion

- name: Print version
  debug:
    msg: "Ansible Version: {{ ansibleVersion.stdout }}"

http://pastie.org/private/cgeqjucn3l5kxhkkyhtpta

Tom Aac
quelle
Es gibt keine Syntaxfehler mehr, aber es funktioniert auch nicht:TASK: [ Print mosh version] ************************************** ok: [127.0.0.1] => { "msg": "Mosh" }
Zulakis
Versuchen Sie zunächst nur Variable drucken und siehe Ausgabe ohne benutzerdefinierte Nachricht, wie folgt aus : - Name: Drucken Mosh Version debug: var = mosh_version.stdout_lines
Tom Aac
ok: [127.0.0.1] => { "var": { "mosh_version.stdout_lines": [ "mosh 1.2.4a [build mosh-1.2.4-57-g9eeb2fb]" ] } } das funktioniert, ich würde aber die benutzerdefinierte Nachricht wirklich bevorzugen
;-)
1
Überprüfen Sie meine aktualisierte Antwort
Tom Aac
Bitte beachten Sie: debug: "msg = Mosh Version: '{{mosh_version.stdout}}'" zeigt nur "Mosh" an. Das msg = "..." muss in Anführungszeichen anstelle der gesamten Nachricht stehen. Aber die Antwort von @xddsg funktioniert besser, da es detaillierter var dump ist.
Dalibor Filus
5

Einfachste Antwort

- debug: var=mosh_version.stdout
xddsg
quelle
1

Entfernen Sie einfach den Doppelpunkt

debug: msg="Mosh Version {{ mosh_version.stdout }}"
remintz
quelle
Ehrlich gesagt ist dies keine vollständige Lösung, aber es hat trotzdem funktioniert und das nächste Problem, das ich hatte, gelöst. Die andere Syntax kann nicht verwendet werden, da ich sie mit verwende, whensodass das Entfernen des Doppelpunkts der einfachste Weg ist, dies zu lösen. also habe ich upvote;)
TecHunter
0

Ich benutze dies, beachte die Position von doppelten Anführungszeichen (") und einfachen Anführungszeichen (')

- name: Print mosh version
  debug: "msg='Mosh Version: {{ mosh_version.stdout }}'"
Prüfsumme
quelle
0

Immer wenn ich Probleme mit Sonderzeichen in Ansible Strings / Cmds habe, mache ich Folgendes:

  1. Zeilenumbruch mit einfachen Anführungszeichen
  2. Mit doppelten geschweiften Klammern umwickeln

So wird Ihr Standard-Doppelpunkt {{':'}}

Und Ihre Aufgabe wird:

- debug: msg="Ansible Version{{':'}} {{ ansibleVersion.stdout }}"

Auch dies funktioniert für die meisten Sonderzeichen, auch für Zeichenfolgen. Folgendes berücksichtigen:

docker ps --format '{{.Names}}'

Um dies in Ansible auszuführen, wenden Sie einfach dieselbe Logik an. Die folgende Task wird wie erwartet ausgeführt:

- name: Get the docker container names
  become: yes
  shell: "docker ps --format '{{'{{'}}.Names{{'}}'}}'"
  register: docker_containers
Collin Cudd
quelle