ansible print debug msg変数


17

次のようなmosh_versionansible debug msgコマンドを使用して、以前に登録した変数を印刷しようとしました。

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

動作せず、次のエラーを出力します。

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 }}"

私は試した

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

しかし、これは単に「Mosh」を出力します。

これを実行するための最良の方法は何ですか?

回答:


25

これを試して:

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

詳細については、http://docs.ansible.com/YAMLSyntax.html#gotchasをご覧ください

編集:このようなものは私にとって完璧に動作します:

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

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

http://pastie.org/private/cgeqjucn3l5kxhkkyhtpta


構文エラーはもうありませんが、機能しません:TASK: [ Print mosh version] ************************************** ok: [127.0.0.1] => { "msg": "Mosh" }
Zulakis

名前:モッシュバージョンのデバッグを印刷します。var = mosh_version.stdout_lines - :ちょうど変数を印刷し、カスタムメッセージなしで出力を参照してください、このように最初に試してみてください
トムAAC

ok: [127.0.0.1] => { "var": { "mosh_version.stdout_lines": [ "mosh 1.2.4a [build mosh-1.2.4-57-g9eeb2fb]" ] } } これは機能しますが、私はカスタムメッセージを本当に好むでしょう
;

1
更新された回答を確認してください
トムAac

注:デバッグ:「msg = Moshバージョン: '{{mosh_version.stdout}}'」には「Mosh」のみが表示されます。msg = "..."は、メッセージ全体ではなく引用符で囲む必要があります。しかし、@ xddsgからの回答は、より詳細なvarダンプであるため、より適切に機能します。
ダリボーフィラス


1

コロンを削除するだけ

debug: msg="Mosh Version {{ mosh_version.stdout }}"

正直なところ、これは完全なソリューションではありませんが、それでも機能し、次の問題を解決しました。他の構文は使用できないため、使用できませんwhen。実際にコロンを削除することが、これを解決する最も簡単な方法です。だから私は
賛成票を投じる

0

これを使用して、二重引用符( ")と一重引用符( ')の位置に注意してください

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

0

Ansible文字列/コマンドの特殊文字に問題があるときはいつでもこれを行います:

  1. 単一引用符で囲む
  2. 二重中括弧で囲む

したがって、標準のコロンは {{':'}}

そして、あなたの仕事は次のようになります:

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

繰り返しますが、これはほとんどの特殊文字、文字列でも機能します。以下を考慮してください。

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

これをAnsibleで実行するには、同じロジックを適用するだけで、次のタスクが期待どおりに実行されます。

- name: Get the docker container names
  become: yes
  shell: "docker ps --format '{{'{{'}}.Names{{'}}'}}'"
  register: docker_containers
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.