ansible печатают переменную сообщения отладки

Я пытаюсь распечатать ранее зарегистрированный mosh_version переменная с помощью ansible 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".

Что лучший способ состоит в том, чтобы получить это выполнение?

16
задан 1 June 2015 в 14:50
6 ответов

Попробуйте следующее:

- 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
ответ дан 2 December 2019 в 20:39

Простейший ответ

- debug: var=mosh_version.stdout
4
ответ дан 2 December 2019 в 20:39

Просто удалите двоеточие

debug: msg="Mosh Version {{ mosh_version.stdout }}"
1
ответ дан 2 December 2019 в 20:39

Я использую это, обратите внимание на расположение двойных кавычек(") и одиночных кавычек(')

- name: Print mosh version
  debug: "msg='Mosh Version: {{ mosh_version.stdout }}'"
0
ответ дан 2 December 2019 в 20:39

Каждый раз, когда у меня возникают проблемы со специальными символами в 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
0
ответ дан 2 December 2019 в 20:39

Я отобразил переменную и сообщение в одной отладочной игре.

Ansible Task

- name: Report the /boot/initramfs file status for latest installed kernel
  debug:
    msg: "{{ ansible_hostname }} =  {{INITRAMFS_LAST_KERNEL.stdout}}"
    

Вывод

TASK [os-upgrade.linux : Report the /boot/initramfs file status for latest installed kernel] *******************************************
ok: [ANSIBLENODE] => {
    "msg": "ANSIBLENODE =  /boot/initramfs-3.10.0-1062.12.1.el7.x86_64.img"
}
3
ответ дан 5 May 2020 в 17:12

Теги

Похожие вопросы