次のように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 }}"
しかし、これは単に「モッシュ」を印刷します。
これを実行するための最良の方法は何ですか?
これを試して:
- 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 }}"
最も簡単な答え
- debug: var=mosh_version.stdout
コロンを取り除くだけ
debug: msg="Mosh Version {{ mosh_version.stdout }}"
私はこれを使用し、二重引用符( ")と単一引用符( ')の場所に注意してください
- name: Print mosh version
debug: "msg='Mosh Version: {{ mosh_version.stdout }}'"
Ansible文字列/コマンドの特殊文字に問題があるときはいつでもこれを行います:
したがって、標準のコロンは{{':'}}
になります
そしてあなたの仕事は次のようになります:
- 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