web-dev-qa-db-ja.com

ansible印刷デバッグメッセージ変数

次のようにansible mosh_versionコマンドを使用して、以前に登録された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 }}"

しかし、これは単に「モッシュ」を印刷します。

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

17
Zulakis

これを試して:

- 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

25
Tom Aac

最も簡単な答え

- debug: var=mosh_version.stdout
7
xddsg

コロンを取り除くだけ

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

私はこれを使用し、二重引用符( ")と単一引用符( ')の場所に注意してください

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

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
0
Collin Cudd