Would anyone please help me with this? Regards, Suresh
On Tue, 14 Apr 2020, 7:32 pm Suresh Karpurapu, <[email protected]> wrote: > Hi Vladimir, thanks for your help all the time. > > I tried using the logic, and it worked when apply the values to debug but > the same data is passing to mount module with additional quotes and > brackets which is causing the errors. Any suggestions please? > > Playbook and CSV details: > ========================= > > # cat mounts.csv > host,remote_path,mnt_path,python > > host1,nfsflr01:/volahcstg_www_masup_stg_data_01,/myasup/stg/data,/usr/bin/python2.6 > > host2,nfsflr01:/volahcstg_www_masup_stg_data_01,/myasup/stg/data,/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 }}" > path: "{{ var2 }}" > state: mounted > delegate_to: "{{ inventory_hostname }}" > ... > > > ================================================================================================================================================ > Playbook Verbose Output: > > ================================================================================================================================================ > > TASK [reading volume info from csv] > ************************************************************************************************************************************* > task path: /suresh/suresh_playbooks/mounts.yml:7 > <127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: root > <127.0.0.1> EXEC /bin/sh -c 'echo ~root && sleep 0' > <127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo > /root/.ansible/tmp/ansible-tmp-1586795492.17-47707210108532 `" && echo > ansible-tmp-1586795492.17-47707210108532="` echo > /root/.ansible/tmp/ansible-tmp-1586795492.17-47707210108532 `" ) && sleep 0' > Using module file > /usr/lib/python2.7/site-packages/ansible/modules/files/read_csv.py > <127.0.0.1> PUT /root/.ansible/tmp/ansible-local-26007iAx4cI/tmpxiOrdU TO > /root/.ansible/tmp/ansible-tmp-1586795492.17-47707210108532/AnsiballZ_read_csv.py > <127.0.0.1> EXEC /bin/sh -c 'chmod u+x > /root/.ansible/tmp/ansible-tmp-1586795492.17-47707210108532/ > /root/.ansible/tmp/ansible-tmp-1586795492.17-47707210108532/AnsiballZ_read_csv.py > && sleep 0' > <127.0.0.1> EXEC /bin/sh -c '/usr/bin/python2 > /root/.ansible/tmp/ansible-tmp-1586795492.17-47707210108532/AnsiballZ_read_csv.py > && sleep 0' > <127.0.0.1> EXEC /bin/sh -c 'rm -f -r > /root/.ansible/tmp/ansible-tmp-1586795492.17-47707210108532/ > /dev/null > 2>&1 && sleep 0' > ok: [localhost] => { > "changed": false, > "dict": {}, > "invocation": { > "module_args": { > "delimiter": null, > "dialect": "excel", > "fieldnames": null, > "key": null, > "path": "/suresh/suresh_playbooks/mounts.csv", > "skipinitialspace": null, > "strict": null, > "unique": true > } > }, > "list": [ > { > "host": "host1", > "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/data", > "python": "/usr/bin/python2.6", > "remote_path": "nfsflr01:/volahcstg_www_masup_stg_data_01" > } > ] > } > > TASK [Grouping host and volume information] > ***************************************************************************************************************************** > task path: /suresh/suresh_playbooks/mounts.yml:11 > 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'}]]) => { > "add_host": { > "groups": [ > "nfsgroup" > ], > "host_name": "host1", > "host_vars": { > "ansible_python_interpreter": "/usr/bin/python2.6", > "var1": [ > "nfsflr01:/volahcstg_www_masup_stg_data_01" > ], > "var2": [ > "/myasup/stg/data" > ] > } > }, > "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" > } > ] > ] > } > 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'}]]) => { > "add_host": { > "groups": [ > "nfsgroup" > ], > "host_name": "host2", > "host_vars": { > "ansible_python_interpreter": "/usr/bin/python2.6", > "var1": [ > "nfsflr01:/volahcstg_www_masup_stg_data_01" > ], > "var2": [ > "/myasup/stg/data" > ] > } > }, > "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" > } > ] > ] > } > META: ran handlers > META: ran handlers > > PLAY [list the volumes] > ************************************************************************************************************************************************* > META: ran handlers > > TASK [debug output] > ***************************************************************************************************************************************************** > task path: /suresh/suresh_playbooks/mounts.yml:24 > ok: [host2] => { > "msg": [ > "host2", > [ > "nfsflr01:/volahcstg_www_masup_stg_data_01" > ], > [ > "/myasup/stg/data" > ] > ] > } > ok: [host1] => { > "msg": [ > "host1", > [ > "nfsflr01:/volahcstg_www_masup_stg_data_01" > ], > [ > "/myasup/stg/data" > ] > ] > } > META: ran handlers > META: ran handlers > > PLAY [mounting the volume in the fstab file] > **************************************************************************************************************************** > META: ran handlers > > TASK [mounting the volume in the fstab file] ******* > > <host2> (0, '', '') > fatal: [host2]: FAILED! => { > "changed": false, > "invocation": { > "module_args": { > "backup": false, > "boot": true, > "dump": "0", > "fstab": null, > "fstype": "nfs", > "opts": > "rw,bg,hard,rsize=65536,wsize=65536,vers=3,actimeo=0,nointr,suid,timeo=600,tcp", > "passno": "0", > "path": "['/myasup/stg/data']", > "src": "['nfsflr01:/volahcstg_www_masup_stg_data_01']", > "state": "mounted" > } > }, > "msg": "Error mounting ['/myasup/stg/data']: mount: can't get address > for ['nfsflr01\n" > > fatal: [host1]: FAILED! => { > "changed": false, > "invocation": { > "module_args": { > "backup": false, > "boot": true, > "dump": "0", > "fstab": null, > "fstype": "nfs", > "opts": > "rw,bg,hard,rsize=65536,wsize=65536,vers=3,actimeo=0,nointr,suid,timeo=600,tcp", > "passno": "0", > "path": "['/myasup/stg/data']", > "src": "['nfsflr01:/volahcstg_www_masup_stg_data_01']", > "state": "mounted" > } > }, > "msg": "Error mounting ['/myasup/stg/data']: mount: can't get address > for ['nfsflr01\n" > } > > PLAY RECAP > ************************************************************************************************************************************************************** > localhost : ok=2 changed=1 unreachable=0 failed=0 > skipped=0 rescued=0 ignored=0 > host1 : ok=1 changed=0 unreachable=0 failed=1 > skipped=0 rescued=0 ignored=0 > host2 : ok=1 changed=0 unreachable=0 failed=1 > skipped=0 rescued=0 ignored=0 > > > > > > Result on target servers fstab file > =================================== > > # grep 'nfsflr01:/volahcstg_www_masup_stg_data_01' /etc/fstab > nfsflr01:/volahcstg_www_masup_stg_data_01 /myasup/stg/data nfs > vers=3,rw,nosuid,bg,hard,rsize=32768,wsize=32768,nointr,tcp,timeo=600 0 0 > ['nfsflr01:/volahcstg_www_masup_stg_data_01',\040'nasdurahc01spd02:/volahcstg_www_masup_stg_app_01'] > ['/myasup/stg/data',\040'/myasup/stg/app'] nfs > rw,bg,hard,rsize=65536,wsize=65536,vers=3,actimeo=0,nointr,suid,timeo=600,tcp > 0 0 > > On Thu, Apr 9, 2020 at 8:51 PM Vladimir Botka <[email protected]> wrote: > >> Hi Suresh, >> >> On Thu, 9 Apr 2020 17:46:42 +0530 >> Suresh Karpurapu <[email protected]> wrote: >> >> > Hi Vladimir, >> > >> > I have one more last question on the same request as we have different >> > python interpreter on some hosts. Is it possible to read the python >> > interpreter variable from CSV file while connecting the particular? >> > Prior to your solution, i use to use inventory to pass the variable to >> the >> > host as below. Now, i want to omit inventory file as i would like to use >> > your solution completely for host inventory. Can you please suggest >> same to >> > overcome this problem other than declaring variables host_vars? >> > >> > host4 ansible_python_interpreter=/usr/bin/python2.6 >> > >> > Regards, >> > Suresh >> >> Yes. It's possible. Simply put the path to Python into the CSV file. For >> example, put it into the first record of the particular host. Various >> paths >> don't make sense. Right? >> >> shell> cat mounts.csv >> host,remote_path,mnt_path,python >> host1,nfsvol1,mount1,/usr/bin/python2.6 >> host1,nfsvol2,mount2 >> host1,nfsvol3,mount3 >> host2,nfsvol1,mount1,/usr/bin/python3.7 >> host2,nfsvol2,mount2 >> host2,nfsvol3,mount3 >> >> Then simply assign "ansible_python_interpreter in the first play >> >> 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') }}" >> >> (It's not necessary to delegate_to localhost when the play is running at >> localhost "hosts: localhost"). >> >> HTH, >> vlado >> >> > >> On Wed, 8 Apr 2020 19:55:04 +0530 >> > >> Suresh Karpurapu <[email protected]> wrote: >> > >> > >> > >> > # cat mounts.csv >> > >> > host,remote_path,mnt_path >> > >> > host1,nfsvol1,mount1 >> > >> > host1,nfsvol2,mount2 >> > >> > host1,nfsvol3,mount3 >> > >> > host2,nfsvol1,mount1 >> > >> > host2,nfsvol2,mount2 >> > >> > host2,nfsvol3,mount3 >> > >> > >> > >> > - 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 >> > >> > delegate_to: localhost >> > >> > - 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') }}" >> > >> loop: "{{ sources.list|groupby('host') }}" >> > >> >> > >> > - name: list volume details >> > >> > hosts: nfsgroup >> > >> > become: yes >> > >> > gather_facts: false >> > >> > tasks: >> > >> > - debug: >> > >> > msg: >> > >> > - "{{ inventory_hostname }}" >> > >> > - "{{ var1 }}" >> > >> > - "{{ var2 }}" >> > >> >> > >> You should receive lists of "remote_path" and "mnt_path" in var1 and >> var2 >> > >> respectively. >> > >> >> > >> ok: [host1] => { >> > >> "msg": [ >> > >> "host1", >> > >> [ >> > >> "nfsvol1", >> > >> "nfsvol2", >> > >> "nfsvol3" >> > >> ], >> > >> [ >> > >> "mount1", >> > >> "mount2", >> > >> "mount3" >> > >> ] >> > >> ] >> > >> } >> > >> ok: [host2] => { >> > >> "msg": [ >> > >> "host2", >> > >> [ >> > >> "nfsvol1", >> > >> "nfsvol2", >> > >> "nfsvol3" >> > >> ], >> > >> [ >> > >> "mount1", >> > >> "mount2", >> > >> "mount3" >> > >> ] >> > >> ] >> > >> } >> > -- 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/CAHedzhL8yyAfRYT9K0VKotnyKHe0k_KNaF1EWBRQCUjHnRrsjQ%40mail.gmail.com.
