首页 > 解决方案 > 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

解决方案


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 的配置中给出,我从未见过它们以直接路径运行


推荐阅读