我需要根据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
答案 0 :(得分:4)
你应该使用Jinja2表达而不是声明。
您还应引用Ansible中以{
开头的任何字符串:
- debug:
msg: "{{ item }}"
with_items: "{{ csv_var.split(',') }}"
并且不需要将结果列表包装在另一个列表中(在元素之前破折号),尽管Ansible会自动处理它。