我对剧本有疑问,想知道问题是否是我使用的字典中的某些关键名称具有特殊字符,即其中的破折号。Ansible 不清楚这是否允许。
任务:
- debug:
var: block_storage_route
- debug:
var: block_storage_route[0].table-id
vars:
block_storage_route:
- "table-id": 0
Run Code Online (Sandbox Code Playgroud)
输出:
TASK [debug] ******************************************************
ok: [example.com] => {
"block_storage_route": [
{
"table-id": 0
}
]
}
TASK [debug] ******************************************************
ok: [example.com] => {
"block_storage_route[0].table-id": "VARIABLE IS NOT DEFINED!"
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,尽管键存在于变量中,但我收到“变量未定义”错误。
这是为什么?table-iddebugblock_storage_route
Vla*_*tka 10
问:“ Ansible 中的字典键中允许使用特殊字符吗? ”
答:是的。他们是。事实上,YAML 中对键没有任何限制。引用自Mapping(又名 Python 字典)
“映射节点的内容是一组无序的键:值节点对,每个键都是唯一的。YAML 对节点没有进一步的限制。特别是,键可以是任意节点,... ”
当键的名称不符合 Ansible创建有效的变量名称时,使用方括号表示法而不是点表示法
- debug:
var: block_storage_route[0]['table-id']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2698 次 |
| 最近记录: |