在ansible循环中的Jinja模板

时间:2018-06-19 01:49:39

标签: ansible jinja2

我需要根据CSV文件的输入运行ansible循环。我使用以下问题/ answer作为参考。但是,我似乎无法弄清楚在哪里实际包含循环的jinja部分。

到目前为止,这就是我所拥有的,但它会引发错误:

---
- hosts: localhost
  connection: local
  gather_facts: no

  vars:
    csv_var: "{{ lookup ('file', 'file.csv') }}"

  tasks:
  - debug:
      msg: "{{ item }}"
    with_items:
      - {% set list = csv_var.split(",") %}

file.csv具有以下内容:345,1234,1234

理想情况下,邮件应打印出上面的数字。

我得到的语法错误是:

The offending line appears to be:

    with_items:
      - {% set list = csv_var.split(",") %}
         ^ here

exception type: <class 'yaml.scanner.ScannerError'>
exception: while scanning for the next token
found character that cannot start any token
  in "<unicode string>", line 19, column 10

1 个答案:

答案 0 :(得分:4)

你应该使用Jinja2表达而不是声明。

您还应引用Ansible中以{开头的任何字符串:

- debug:
    msg: "{{ item }}"
  with_items: "{{ csv_var.split(',') }}"

并且不需要将结果列表包装在另一个列表中(在元素之前破折号),尽管Ansible会自动处理它。