ansible - Ansible:变量已定义,但错误显示未定义
问题描述
我有一个可靠的剧本如下:
---
- name: test variables
hosts: all
tasks:
- name: test
command: echo {{ ansible_role_dir }}
register: result
- name: show result
debug:
msg="{{ result.stdout }}"
#roles: #line12
# - "{{ ansible_role_dir }}/testrole" #line13
变量 ansible_role_dir 在 group_vars/all.yaml 下定义。
如果我运行注释掉第 12 行和第 13 行的剧本,它会正确显示变量的结果。显然它知道变量 ansible_role_dir 的定义位置。但是如果我取消注释 line12 和 line13,它会显示 error ERROR! 'ansible_role_dir' is undefined
。为什么这次不知道ansible_role_dir定义在哪里?
解决方案
Ansible 不喜欢没有引号的 jinja 标签。尝试这个:
---
- name: test variables
hosts: all
tasks:
- name: test
command: "echo {{ ansible_role_dir }}"
register: result
- name: show result
debug:
msg="{{ result.stdout }}"
#roles: #line12
# - "{{ ansible_role_dir }}/testrole" #line13
编辑:对不起,我想我误读了这个问题。
您是否尝试过放入真实路径而不是var,只是为了看看它是否有效?通常角色路径在 ansible 的配置中给出,我从未见过它们以直接路径运行
推荐阅读
- reactjs - 在 React 中解析 json 字段
- html - 如何阻止我的表单在提交时重新加载?
- python - 我可以自动调整 pygame 中的文本大小以适应屏幕分辨率吗?
- c# - DataGridView 行选择器(记录选择器)实际上不选择
- javascript - 以 PDF 格式下载文件
- swift - SwiftUI AngularGradient 平滑过渡
- python - FileNotFoundError: [Errno 2] 没有这样的文件或目录。是的,路径存在,是的,我使用的是绝对路径
- mongodb - MongoDB聚合:如何添加一个嵌套字段,它是一个双重嵌套字段的总和?
- bash - 从多管道输出创建变量?
- python - 如何从索引中创建列?