The input data is not a fixed list but can be any number of lines returned
by the database and registered by variable "command_result" as below":
- name: "Play 1"
hosts: localhost
tasks:
- name: "Search DB"
command: > mysql --user=root --password=p@ssword deployment
--host=localhost -Ns -e "SELECT dest_ip,file_dets FROM deploy_dets
WHERE num LIKE '{{ CR_Number }}'"
register: command_result
Kindly suggest.
On Tuesday, September 24, 2019 at 2:01:17 PM UTC+5:30, Vladimir Botka wrote:
>
> On Mon, 23 Sep 2019 23:44:58 -0700 (PDT)
> Mohtashim S <[email protected] <javascript:>> wrote:
>
> > command_result variable has has data like below.
> >
> > host6,host5\targ3
> > host4,host3\targ1
> > host1,host2,host5\targ2
> > .....
> > .....
> >
> > I need to loop through each line of command_result. Pick the host list
> for
> > example host6,host5 and execute shell script using shell module by
> passing
> > respective argument string i.e arg3.
>
> Given the input is a list 'db_lines' normalise the data first. For example
> the loop below
>
> vars:
> separator: '\t'
> db_lines:
> - 'host6,host5\targ3'
> - 'host4,host3\targ1'
> - 'host1,host2,host5\targ2'
> tasks:
> - set_fact:
> my_data: "{{ my_data|default([]) +
> [{'host': item.split(separator)[0].split(','),
> 'arg': item.split(separator)[1].split(',')}] }}"
> loop: "{{ db_lines }}"
>
> gives
>
> my_data:
> - arg:
> - arg3
> host:
> - host6
> - host5
> - arg:
> - arg1
> host:
> - host4
> - host3
> - arg:
> - arg2
> host:
> - host1
> - host2
> - host5
>
> It should be trivial to use it in the loops.
>
> Cheers,
>
> -vlado
>
--
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/807413db-6585-49c5-a8f9-8a51b8d39f87%40googlegroups.com.