在ansible中将字符串设置为额外变量

在ansible中将字符串设置为额外变量,ansible,Ansible,我想知道为什么字符串作为一个外部变量不起作用,而作为一个数字,它在下面的输出中起作用。可以观察到,foo是一个外部变量,但它只在通过number时有效,而当我通过hi时失败 当字符串作为额外变量传递时: ansible-playbook fail.yml -e foo='hi' PLAY [localhost] ********************************************************************************************

我想知道为什么字符串作为一个外部变量不起作用,而作为一个数字,它在下面的输出中起作用。可以观察到,
foo
是一个外部变量,但它只在通过number时有效,而当我通过
hi
时失败

当字符串作为额外变量传递时:

ansible-playbook  fail.yml -e foo='hi'
PLAY [localhost] ****************************************************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************************************************
ok: [localhost]

TASK [sample : debug] ***********************************************************************************************************************************************
ok: [localhost] => {
    "hi": "VARIABLE IS NOT DEFINED!"
}

PLAY RECAP **********************************************************************************************************************************************************
localhost                  : ok=4    changed=1    unreachable=0    failed=0
当数字作为额外变量传递时:

 -->ansible-playbook  fail.yml -e foo=1
PLAY [localhost] ****************************************************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************************************************
ok: [localhost]

TASK [sample : debug] ***********************************************************************************************************************************************
ok: [localhost] => {
    "1": "1"
}
PLAY RECAP **********************************************************************************************************************************************************
localhost                  : ok=4    changed=1    unreachable=0    failed=0


 -->cat fail.yml
---

- hosts: localhost

  roles:
    - sample

 -->cat sample/tasks/main.yml
---
# tasks file for sample
#
- debug: var={{ foo }}

使用
debug:var=
时,不需要大括号,只需要变量名

将任务文件更改为:

- debug: var=foo

角色应该可以使用额外的变量,对吗?我不需要从include_role传递它们?@monk:请参阅“
额外变量(始终优先)
”。是的,额外变量将传递给角色。您的主要问题只是在调试任务中指定变量时出现语法错误。请参见更正引号
ansible playbook fail.yml-e“foo=hi”