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.

Reply via email to