Hi Ansible Guru's

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. Hence, i tried using json_query as 
suggested by vladimar, and it is working for debug output but same is not 
working for mount module as i would like to update /etc/fstab and mount the 
volumes using this playbook. would you suggest the logic?

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:
================================================================================================================================================
            "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

-- 
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/28178b9a-5e29-4fff-ada4-6f368fe33079%40googlegroups.com.

Reply via email to