On Wed, 14 Jun 2023 04:07:38 -0700 (PDT) "[email protected]" <[email protected]> wrote:
> *My J2 file*
>
> select * from {{ item.id}} where {{ item.color}}
>
> *My input files*
>
> *File-1.yml :*
> Id: 1
> color: blue
>
> *File-2**.yml** :*
> Id: 2
> color: red
>
> *My Playbook – that is not working. *
> - hosts: localhost
> become: true
> gather_facts: yes
> tasks:
> - name:
> template:
> src: /opt/input.sql.j2
> dest: /opt//{{item.id}}.sql
> with_items:
> - file-1.yaml
>
> - file-2.yaml
>
> *The output files I wish to have *
>
> 1.sql
> select * from 1 where blue
>
> 2.sql
> select * from 2 where red
Given the files
shell> cat file-1.yaml
id: 1
color: blue
shell> cat file-2.yaml
id: 2
color: red
Read the files in the loop. Test it
shell> cat pb.yml
- hosts: localhost
tasks:
- debug:
var: i
loop:
- file-1.yaml
- file-2.yaml
vars:
i: "{{ lookup('file', item )|from_yaml }}"
gives (abridged)
TASK [debug]
****************************************************
ok: [localhost] => (item=file-1.yaml) => ansible_loop_var: item
i:
color: blue
id: 1
item: file-1.yaml
ok: [localhost] => (item=file-2.yaml) =>
ansible_loop_var: item
i:
color: red
id: 2
item: file-2.yaml
The variable *item* keeps the name of the current file in the loop.
You have to use the variable *i* both in the template file
shell> cat input.sql.j2
select * from {{ i.id }} where {{ i.color }}
and in the *template* task. The play
shell> cat pb.yml
- hosts: localhost
tasks:
- template:
src: input.sql.j2
dest: "/tmp/{{ i.id }}.sql"
loop:
- file-1.yaml
- file-2.yaml
vars:
i: "{{ lookup('file', item )|from_yaml }}"
creates the files
shell> cat /tmp/1.sql
select * from 1 where blue
shell> cat /tmp/2.sql
select * from 2 where red
--
Vladimir Botka
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/20230618085129.7afc8696%40gmail.com.
pgpSCcKQC7ffv.pgp
Description: OpenPGP digital signature
