从循环内部打印Ansible-format变量

时间:2016-11-21 13:39:52

标签: ansible ansible-playbook ansible-2.x

我想在配置文件中打印以下行:

{{ variable.method }}

这将由第三方软件解释,并将做任何事情。

我正在使用Ansible。 使用以下代码在简单的template块中打印该行,效果很好:

{{ '{{' }} variable.method {{ '}}' }}

但是,当我想循环使用template代码生成更多文件时,使用with_items,我无法打印出我想要的内容。

- name: Debug Print my variable
  with_items:
    - { name: "someObject", prop: "{{ '{{' }} variable.method {{ '}}' }}" }
  debug:  msg="{{ item.prop }}"

我收到以下内容:

FAILED! => {"failed": true, "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: {u'name': u'someObject', u'prop': u'{{ variable.method }}'}: 'variable.method' is undefined\n\nThe error appears to have been in 'my_file.yml': line 1, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: \"Debug Print my variable\"\n  ^ here\n"}

看起来 Ansible 正在不同的环境/上下文中工作,并且正在尝试实际执行这段代码。 我如何逃避这个背景并实际打印出我想要的内容?

由于

1 个答案:

答案 0 :(得分:0)

如果您想在循环中使用template,我认为您首先需要将循环修复为此类:

- name: Debug Print my variable
  template: ........ {{ item }}  #you write your template here
  with_items: 
    - { name: "someObject", prop: "{{ '{{' }} variable.method {{ '}}' }}" }
  debug: ............