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/c901390c-96a0-4d1f-ab60-a510e6c5576c%40googlegroups.com.

Reply via email to