Vladimir Botka@ Thank you - it works
ב-יום ראשון, 18 ביוני 2023 בשעה 09:51:58 UTC+3, Vladimir Botka כתב/ה: > 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/34a83ba2-7f1c-4f21-bdb7-8af8bca633e5n%40googlegroups.com.
