사용 가능한 인쇄 디버그 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

먼저 변수를 인쇄하고 다음과 같이 사용자 정의 메시지없이 출력을보십시오.-이름 : mosh 버전 디버그 인쇄 : 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]" ] } } 이것은 작동하지만, 나는 정말로 맞춤 메시지를 선호합니다 ;-)
Zulakis

1
업데이트 된 답변 확인
Tom Aac

참고 : debug : "msg = Mosh 버전 : '{{mosh_version.stdout}}'" "에는"Mosh "만 표시됩니다. msg = "..."는 전체 메시지 대신 따옴표로 묶어야합니다. 그러나 @xddsg의 대답은 더 자세한 var 덤프이므로 더 잘 작동합니다.
Dalibor Filus

6

가장 간단한 답변

- debug: var=mosh_version.stdout

1

콜론을 제거하십시오.

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

솔직히 이것은 완벽한 솔루션은 아니지만 여전히 다음 문제를 해결했습니다. 다른 구문을 사용할 수 없으므로 when콜론을 제거하는 것이 실제로 이것을 해결하는 가장 간단한 방법입니다. 그래서 난
공감

0

나는 이것을 사용한다. 큰 따옴표 ( ")와 작은 따옴표 ( ')의 위치를 ​​주목하라

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

0

Ansible strings / cmds의 특수 문자에 문제가있을 때마다 다음과 같이하십시오.

  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.