Пытаюсь распечатать ранее зарегистрированные 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 }}"
но это просто напечатает "Mosh".
Как лучше всего запустить это?
Попробуй это:
- 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 }}"
Я отобразил переменную и сообщение в той же задаче отладки.
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: [IEEMEANSBL1A] => {
"msg": "ANSIBLENODE = /boot/initramfs-3.10.0-1062.12.1.el7.x86_64.img"
}
Я использую это, обратите внимание на расположение двойных кавычек (") и одинарных кавычек (')
- name: Print mosh version
debug: "msg='Mosh Version: {{ mosh_version.stdout }}'"
Каждый раз, когда у меня возникают проблемы со специальными символами в Ansible strings / cmds, я делаю следующее:
Итак, ваш стандартный двоеточие становится {{':'}}
И ваша задача становится:
- 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