Can you suggest what is the issue with this code ?

   - name: Add hosts
     include_tasks: "{{ playbook_dir }}/gethosts.yml"
       dest_ip: "{{ item.split('\t')[0] }}"
       groups: dest_nodes
       file_dets: "{{ item.split('\t')[1] }}"
       ansible_host: localhost
       ansible_connection: local
     with_items: "{{ command_result.stdout_lines }}"


And below is my get_hosts.yml file

     add_host:
       name: {{ item }}   
     with_items: "{{ dest_ip.split(',') }}"



On Tuesday, September 24, 2019 at 2:51:40 PM UTC+5:30, Mohtashim S wrote:
>
> 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]> 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/53e52a27-15fc-42d0-adfd-d66bf1afdb79%40googlegroups.com.

Reply via email to