remapping fstab entries from LABEL to UUID --- how?

I’m trying to read fstab and update any entry that uses “LABEL=” to use the UUID instead…

I can get the proper UUID mappings, but I can’t seem to wrap my head around the actual replacement…

playbook:

  • name: Gather UUID mappings
    shell: “blkid -s UUID -o value -t LABEL={{item}}”
    with_items:

  • “/home”

  • “/var”

  • “/”
    ignore_errors: true
    register: “UUID”

  • name: Convert fstab LABEL entries to UUID format
    replace:
    dest=/etc/fstab
    regexp=‘LABEL={{ item }}’
    replace=‘UUID={{UUID.item}}’
    backup=yes
    with_items:

  • “/”

  • “/home”

  • “/var”

For the highlighted lines, what should I be using - or is there a better way (I’ve looked at the mount module, but didn’t see a way to do this)

The issue is that with_ loops puts results in a list, under ‘results’ key, so UUID.item won’t work, you need an index that matches, this might help.

http://docs.ansible.com/ansible/playbooks_loops.html#looping-over-a-list-with-an-index

I would suggest just getting the whole output of “blkid”, then filtering the lines you want with the “search” filter, and then using “regex_replace” to get the bits you want, and finally passing those to the replace module.

Be aware, however, that “LABEL=/” is likely to match everything, so you probably want to put some whitespace around the regex.