Question: Is it possible to have few .yml files and then read them as separate items for task?

Example:

```
 - name: write templates
   template: src=template.j2 dest=/some/path
   with_items: ./configs/*.yml

```

Answer: 
I have found pretty elegant solution:

```
---
- hosts: localhost
  vars:
    my_items: "{{ lookup('fileglob', './configs/*.yml',  wantlist=True) }}"
  tasks:
  - name: write templates
    template: src=template.j2 dest=/some/path/{{ (item | from_yaml).name }}
    with_file: "{{ my_items }}"

```

And then in template you have to add `{% set item = (item | from_yaml) %}` at the beginning.
Well, yes and no. You can loop over files and even use their content as variables. But the `template` module does not take parameters. There is an ugly workaround by using an `include` statement. Includes do take parameters and if the `template` task is inside the included file it will have access to them.

Something like this should work:

```
- include: other_file.yml parameters={{ lookup('file', item) | from_yaml }}
  with_fileglob: ./configs/*.yml

```

And in `other_file.yml` then the template task:

```
- name: write template
  template: src=template.j2 dest=/some/path

```

The ugly part here, beside the additional include, is that the include statement only takes parameters in the format of key=value. that's what you see in above task as `parameters=...`. `parameters` here has no special meaning, it just is the name of the variable with which the content of the file will be available inside the include.

So if your vars files have a variable `foo` defined, you would be able to access it in the template as `{{ parameters.foo }}`.