I hope that it might be design of the add_host module. Is there any ways to 
disable the BYPASS_HOST_LOOP = True parameter in add_host module to enable 
the iteration or please suggest me if there any other ways to achieve my 
requirement

Regards,
Suresh

On Friday, April 17, 2020 at 7:36:37 PM UTC+5:30, Suresh Karpurapu wrote:
>
> Hi Ansible team,
>
> I am using the CSV file as below for nfs volume migration as we have 1000 
> servers with 100 volumes. Hence, i would like to make to host inventory 
> using add_host file instead using inventory file. However, the loop is 
> failing when i use add_host module, if the server has more than one 
> volume . would anyone please help me on this request as i would like to 
> mount all the volumes on respective servers as per CSV input?
>
> # cat mounts.csv
> host,remote_path,mnt_path,python
>
> host1,nfsflr01:/volahcstg_www_masup_stg_data_01,/myasup/stg/data,/usr/bin/python2.6
>
> host1,nfsflr02:/volahcstg_www_masup_stg_app_01,/myasup/stg/app,/usr/bin/python2.6
>
> host2,nfsflr01:/volahcstg_www_masup_stg_data_01,/myasup/stg/data,/usr/bin/python2.6
>
> host2,nfsflr02:/volahcstg_www_masup_stg_app_01,/myasup/stg/app,/usr/bin/python2.6
>
>
> # cat mounts.yml
> ---
> - name: mount the nfsshare in client side
>   hosts: localhost
>   gather_facts: false
>   become: yes
>   tasks:
>     - name: reading volume info from csv
>       read_csv:
>         path: "{{ playbook_dir }}/mounts.csv"
>       register: sources
>     - name: Grouping host and volume information
>       add_host:
>         name: "{{ item.0 }}"
>         groups: nfsgroup
>         var1: "{{ item.1|json_query('[].remote_path') }}"
>         var2: "{{ item.1|json_query('[].mnt_path') }}"
>         ansible_python_interpreter: "{{ item.1.0.python }}"
>       loop: "{{ sources.list|groupby('host') }}"
> - name: list the volumes
>   hosts: nfsgroup
>   become: yes
>   gather_facts: false
>   tasks:
>     - name: debug output
>       debug:
>         msg:
>           - "{{ inventory_hostname }}"
>           - "{{ var1 }}"
>           - "{{ var2 }}"
> - name: mounting the volume in the fstab file
>   hosts: nfsgroup
>   gather_facts: false
>   become: yes
>   tasks:
>     - name: mounting the volume in the fstab file
>       mount:
>         fstype: nfs
>         opts: 
> "rw,bg,hard,rsize=65536,wsize=65536,vers=3,actimeo=0,nointr,suid,timeo=600,tcp"
>         dump: "0"
>         passno: "0"
>         src: "{{ var1[0] }}"
>         path: "{{ var2[0] }}"
>         state: mounted
>       delegate_to: "{{ inventory_hostname }}"
> ...
>
>
> Result:
>
>
> TASK [Grouping host and volume information] 
> *****************************************************************************************************************************
> task path: /suresh/suresh_playbooks/mounts.yml:12
>
> creating host via 'add_host': hostname=host1
> changed: [localhost] => (item=[u'host1', [{u'python': 
> u'/usr/bin/python2.6', u'host': u'host1', u'mnt_path': u'/myasup/stg/data', 
> u'remote_path': u'nfsflr01:/volahcstg_www_masup_stg_data_01'}, {u'python': 
> u'/usr/bin/python2.6', u'host': u'host1', u'mnt_path': u'/myasup/stg/app', 
> u'remote_path': u'nfsflr02:/volahcstg_www_masup_stg_app_01'}]]) => {
>
>     "add_host": {
>         "groups": [
>             "nfsgroup"
>         ],
>         "host_name": "host1",
>         "host_vars": {
>             "ansible_python_interpreter": "/usr/bin/python2.6",
>             "var1": [
>                 "nfsflr01:/volahcstg_www_masup_stg_data_01",
>                 "nfsflr02:/volahcstg_www_masup_stg_app_01"
>             ],
>             "var2": [
>                 "/myasup/stg/data",
>                 "/myasup/stg/app"
>             ]
>
>         }
>     },
>     "ansible_loop_var": "item",
>     "changed": true,
>     "item": [
>         "host1",
>         [
>             {
>                 "host": "host1",
>                 "mnt_path": "/myasup/stg/data",
>                 "python": "/usr/bin/python2.6",
>                 "remote_path": "nfsflr01:/volahcstg_www_masup_stg_data_01"
>             },
>             {
>                 "host": "host1",
>                 "mnt_path": "/myasup/stg/app",
>                 "python": "/usr/bin/python2.6",
>                 "remote_path": "nfsflr02:/volahcstg_www_masup_stg_app_01"
>             }
>         ]
>     ]
>
> }
> creating host via 'add_host': hostname=host2
> changed: [localhost] => (item=[u'host2', [{u'python': 
> u'/usr/bin/python2.6', u'host': u'host2', u'mnt_path': u'/myasup/stg/data', 
> u'remote_path': u'nfsflr01:/volahcstg_www_masup_stg_data_01'}, {u'python': 
> u'/usr/bin/python2.6', u'host': u'host2', u'mnt_path': u'/myasup/stg/app', 
> u'remote_path': u'nfsflr02:/volahcstg_www_masup_stg_app_01'}]]) => {
>
>     "add_host": {
>         "groups": [
>             "nfsgroup"
>         ],
>         "host_name": "host2",
>         "host_vars": {
>             "ansible_python_interpreter": "/usr/bin/python2.6",
>             "var1": [
>                 "nfsflr01:/volahcstg_www_masup_stg_data_01",
>                 "nfsflr02:/volahcstg_www_masup_stg_app_01"
>             ],
>             "var2": [
>                 "/myasup/stg/data",
>                 "/myasup/stg/app"
>             ]
>
>         }
>     },
>     "ansible_loop_var": "item",
>     "changed": true,
>     "item": [
>         "host2",
>         [
>             {
>                 "host": "host2",
>                 "mnt_path": "/myasup/stg/data",
>                 "python": "/usr/bin/python2.6",
>                 "remote_path": "nfsflr01:/volahcstg_www_masup_stg_data_01"
>             },
>             {
>                 "host": "host2",
>                 "mnt_path": "/myasup/stg/app",
>                 "python": "/usr/bin/python2.6",
>                 "remote_path": "nfsflr02:/volahcstg_www_masup_stg_app_01"
>             }
>         ]
>     ]
>
> }
> META: ran handlers
> META: ran handlers
>
>
> TASK [debug output] 
> *****************************************************************************************************************************************************
> task path: /suresh/suresh_playbooks/mounts.yml:25
>
> ok: [host1] => {
>     "msg": [
>         "host1",
>         [
>             "nfsflr01:/volahcstg_www_masup_stg_data_01",
>             "nfsflr02:/volahcstg_www_masup_stg_app_01"
>         ],
>         [
>             "/myasup/stg/data",
>             "/myasup/stg/app"
>         ]
>     ]
>
> }
> ok: [host2] => {
>     "msg": [
>         "host2",
>         [
>             "nfsflr01:/volahcstg_www_masup_stg_data_01",
>             "nfsflr02:/volahcstg_www_masup_stg_app_01"
>         ],
>         [
>             "/myasup/stg/data",
>             "/myasup/stg/app"
>         ]
>     ]
> }
>
> TASK [mounting the volume in the fstab file] 
> ****************************************************************************************************************************
> changed: [host1 -> host1] => {
>     "changed": true,
>     "dump": "0",
>     "fstab": "/etc/fstab",
>     "fstype": "nfs",
>
>     "invocation": {
>         "module_args": {
>             "backup": false,
>             "boot": true,
>             "dump": "0",
>             "fstab": null,
>             "fstype": "nfs",
>             "opts": 
> "vers=3,rw,nosuid,bg,hard,rsize=32768,wsize=32768,nointr,tcp,timeo=600",
>
>             "passno": "0",
>             "path": "/myasup/stg/data",
>             "src": "nfsflr01:/volahcstg_www_masup_stg_data_01",
>             "state": "mounted"
>         }
>     },
>     "name": "/myasup/stg/data",
>     "opts": 
> "vers=3,rw,nosuid,bg,hard,rsize=32768,wsize=32768,nointr,tcp,timeo=600",
>     "passno": "0",
>     "src": "nfsflr01:/volahcstg_www_masup_stg_data_01"
> }
> <host2> (0, '', '')
> changed: [host2 -> host2] => {
>     "changed": true,
>     "dump": "0",
>     "fstab": "/etc/fstab",
>     "fstype": "nfs",
>
>     "invocation": {
>         "module_args": {
>             "backup": false,
>             "boot": true,
>             "dump": "0",
>             "fstab": null,
>             "fstype": "nfs",
>             "opts": 
> "vers=3,rw,nosuid,bg,hard,rsize=32768,wsize=32768,nointr,tcp,timeo=600",
>
>             "passno": "0",
>             "path": "/myasup/stg/data",
>             "src": "nfsflr01:/volahcstg_www_masup_stg_data_01",
>             "state": "mounted"
>         }
>     },
>     "name": "/myasup/stg/data",
>     "opts": 
> "vers=3,rw,nosuid,bg,hard,rsize=32768,wsize=32768,nointr,tcp,timeo=600",
>     "passno": "0",
>     "src": "nfsflr01:/volahcstg_www_masup_stg_data_01"
>
> }
> META: ran handlers
> META: ran handlers
>
> PLAY RECAP 
> **************************************************************************************************************************************************************
> localhost        : ok=2    changed=1    unreachable=0    failed=0    
> skipped=0    rescued=0    ignored=0
> host1            : ok=2    changed=1    unreachable=0    failed=0    
> skipped=0    rescued=0    ignored=0
> host2            : ok=2    changed=1    unreachable=0    failed=0    
> skipped=0    rescued=0    ignored=0
>

-- 
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/90926768-b894-4379-8dfc-827fdda61aa0%40googlegroups.com.

Reply via email to