在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”
。