2016-04-27 42 views
0

我想,如果一些主机变种具有大于0Ansible“时”,无法评估主机VAR

主机文件

--- 
os: 
    version_nr: 8 
    version_name: jessie 

dotdeb: 
    priority: 100 

task.yml

值仅执行任务
- name: setup dotdeb preferences 
    lineinfile: dest=/etc/apt/preferences 
        create=yes 
        line="{{ item }}" 
    with_items: 
       - "Package: *" 
       - "Pin: release o=packages.dotdeb.org" 
       - "Pin-Priority: {{ dotdeb.priority }}" 
    when: dotted.priority > 0 

但似乎Ansible不能访问'首选项' 任务的主机变量。 Ansible是说:

错误,而评估条件:dotdeb.priority> 0

我尝试了不同的报价,但似乎没有任何工作。 虽然主机变量正在工作,因为'os.version_name'在之前的某个任务中被正确替换。 有什么建议吗?

干杯塞巴斯蒂安

+0

你的任务条件错误地转录工作?你得到的是'when:dotted.priority',但你的错误表明它是你检查的'dotdeb.priority'。如果您在任务之前对变量执行调试,您会看到什么? – ydaetskcoR

+0

这只是在stackoverflow的一个错字,但我找到了一个解决方案。 – sfeldmann

+0

你的解决方案是什么?如果你认为这可能对其他人有用,那么考虑回答你自己的问题。 – ydaetskcoR

回答

0

它看起来像一个问题与变量和标签命名相同。

我改变了var到

dotdeb_repo: 
    priority: 0 

和任务

- name: setup dotdeb preferences 
    lineinfile: dest=/etc/apt/preferences 
       create=yes 
       line="{{ item }}" 
    with_items: 
      - "Package: *" 
      - "Pin: release o=packages.dotdeb.org" 
      - "Pin-Priority: {{ dotdeb_repo.priority }}" 
    when: dotdeb_repo.priority > 0 

现在一切都如预期