- debug:
msg: "This is a database line: {{ item }}"
with_items: "{{ command_result.stdout_lines }}"- hosts: "{{ item.stdout.split('\t')[0] }}"
tasks:
- name: Check if reboot is required
shell: /home/ansible/scripts/check.sh "{{ item.stdout.split('\t')[1] }}"
register: output
- debug: var=output.stdout_lines
- add_host: name={{ item }}
groups=dest_nodes
ansible_user={{ USER }}
with_items: "{{ dest_ip.split(',') }}"So, if the database returns three records in "{{ command_result.stdout_lines }}" the shell script play should be invoked thrice with the details of each record in {{ item}} respectively.
For example: The database can return any number of rows and lets consider it returns three rows of type: <listofhosts>\t<somearguments>:
host5,host8\targ1
host6,host2\targ3
host9,host3,host4\targ4
What I need is the loop with_items: {{ command_result.stdout_lines }} would run three plays and each play to build dynamic host group of the host list for that run and its respective argument.
So, for the first run dynamic hosts group will be host5,host8 and the shell should get arg1
for second loop iteration dynamic hosts group will be host6,host2 and shell would get arg3
and so forth.
Hope this makes my requirement understood.
Can you please suggest.