我尝试mosh_version
使用 ansibledebug 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”。
让它运行起来的最佳方法是什么?
答案1
尝试这个:
- 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 }}"
答案2
最简单的答案
- debug: var=mosh_version.stdout
答案3
我已经在同一个调试程序中显示了变量和消息。
Ansible 任务
- 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"
}
答案4
每当我在 Ansible 字符串/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