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.

Attachment: pgpSCcKQC7ffv.pgp
Description: OpenPGP digital signature

Reply via email to