Cuando necesitamos montar una imagen iso, también conocida como «iso9660» (CD o DVD) con ansible dependiendo de la distribución deberemos configurar la «task» de una forma u otra.

En este caso necesitaba actualizar más de 100 equipos (Ubuntu y CentOs) con la última versión de XenTools (que viene en una iso con un script y paquetes para diferentes distribuciones). Para automatizar la tarea utilicé Ansible con el módulo mount. Después de crear la task en el playbook este se ejecutó sin problemas en los equipos Ubuntu:

- name: Mount iso de xen tools
mount:
path: /mnt/xentools
src: /tmp/xentools7-4.iso
opts: ro
fstype: iso9660
state: mounted

Sin embargo al ejecutarlo en equipos CentOs retorna un error:

            "path": "/mnt/xentools", 
            "src": "/tmp/xentools7-4.iso", 
            "state": "mounted"
        }
    }, 
    "msg": "Error mounting /mnt/xentools: mount: /tmp/xentools7-4.iso is not a block device (maybe try `-o loop'?)\n"

Entonces agregamos la opción loop:

- name: Mount iso de xen tools
  mount:
    path: /mnt/xentools
    src: /tmp/xentools7-4.iso
    opts: ro,loop
    fstype: iso9660
    state: mounted

¡Y al ejecutar el playbook todo funciona! La iso se montó sin problemas y veo que el parámetro fue pasado por ansible correctamente:

changed: [ONEOFTHESERVERS12] => {
    "changed": true, 
    "dump": "0", 
    "fstab": "/etc/fstab", 
    "fstype": "iso9660", 
    "invocation": {
        "module_args": {
            "boot": "yes", 
            "dump": null, 
            "fstab": null, 
            "fstype": "iso9660", 
            "name": "/mnt/xentools", 
            "opts": "ro,loop=", 
            "passno": null, 
            "path": "/mnt/xentools", 
            "src": "/tmp/xentools7-4.iso", 
            "state": "mounted"
        }
    }, 
    "path": "/mnt/xentools", 
    "opts": "ro,loop=", 
    "passno": "0", 
    "src": "/tmp/xentools7-4.iso"
}