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 ansible-project+unsubscr...@googlegroups.com.
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