I hope that it might be design of the add_host module. Is there any ways to
disable the BYPASS_HOST_LOOP = True parameter in add_host module to enable
the iteration or please suggest me if there any other ways to achieve my
requirement
Regards,
Suresh
On Friday, April 17, 2020 at 7:36:37 PM UTC+5:30, Suresh Karpurapu wrote:
>
> 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/90926768-b894-4379-8dfc-827fdda61aa0%40googlegroups.com.