Ansible: How to run the for command through playbook

Below is the playbook using “for command”.

Playbook:

  • name: “Fetch the ip of all the servers from hosts.new file”
    shell: for i in awk '{print $1}' hosts.new
    do echo “$i”
    done
    args:
    chdir: “/home/dp794d/”
    failed_when: “output.rc > 1”
    register: output
  • debug: msg=“{{ output.stdout }}”

Actual output :

PLAY [myserver] ****************************************************************

TASK [setup] *******************************************************************
ok: [zlp12037]

TASK [Fetch the ip of all the servers from hosts.new file] *********************
changed: [zlp12037]

TASK [set_fact] ****************************************************************
ok: [zlp12037]

TASK [debug] *******************************************************************
ok: [zlp12037] => {
“output.stdout”: “”
Expected output :

12.82.240.174
12.82.240.166
12.82.224.62
12.82.224.70

I'm baffled that you didn't get an error message since your for loop is not valid syntax.

Try:

  shell: for i in `awk '{print $1}' hosts.new`;
         do echo "$i";
         done

Or on one line

  shell: for i in `awk '{print $1}' hosts.new`; do echo "$i"; done

Thanks for your help, it worked fine.