Last two fields in fstab are optional (fixes #43855) (#43941)

* Last two fields in fstab are optional
* Add changelog
pull/53163/head
Jiri Tyr 6 years ago committed by Sam Doran
parent ec4cf26d60
commit 7739b5e96c

@ -0,0 +1,2 @@
minor_changes:
- mount - make last two fields optional (https://github.com/ansible/ansible/issues/43855)

@ -208,10 +208,14 @@ def set_mount(module, args):
continue continue
fields = line.split()
# Check if we got a valid line for splitting # Check if we got a valid line for splitting
# (on Linux the 5th and the 6th field is optional)
if ( if (
get_platform() == 'SunOS' and len(line.split()) != 7 or get_platform() == 'SunOS' and len(fields) != 7 or
get_platform() != 'SunOS' and len(line.split()) != 6): get_platform() == 'Linux' and len(fields) not in [4, 5, 6] or
get_platform() not in ['SunOS', 'Linux'] and len(fields) != 6):
to_write.append(line) to_write.append(line)
continue continue
@ -227,16 +231,17 @@ def set_mount(module, args):
ld['passno'], ld['passno'],
ld['boot'], ld['boot'],
ld['opts'] ld['opts']
) = line.split() ) = fields
else: else:
( fields_labels = ['src', 'name', 'fstype', 'opts', 'dump', 'passno']
ld['src'],
ld['name'], # The last two fields are optional on Linux so we fill in default values
ld['fstype'], ld['dump'] = 0
ld['opts'], ld['passno'] = 0
ld['dump'],
ld['passno'] # Fill in the rest of the available fields
) = line.split() for i, field in enumerate(fields):
ld[fields_labels[i]] = field
# Check if we found the correct line # Check if we found the correct line
if ( if (

@ -119,8 +119,6 @@
shell: mount | grep mount_dest | grep -E -w '(ro|read-only)' | wc -l shell: mount | grep mount_dest | grep -E -w '(ro|read-only)' | wc -l
register: remount_options register: remount_options
- debug: var=remount_options
- name: Make sure the filesystem now has the new opts - name: Make sure the filesystem now has the new opts
assert: assert:
that: that:
@ -248,3 +246,33 @@
- "swap2_removed['changed']" - "swap2_removed['changed']"
- "not swap2_removed_again['changed']" - "not swap2_removed_again['changed']"
when: ansible_system in ('Linux') when: ansible_system in ('Linux')
- name: Create fstab record with missing last two fields
copy:
dest: /etc/fstab
content: |
//nas/photo /home/jik/pictures cifs defaults,credentials=/etc/security/nas.creds,uid=jik,gid=users,forceuid,forcegid,noserverino,_netdev
when: ansible_system in ('Linux')
- name: Try to change the fstab record with the missing last two fields
mount:
src: //nas/photo
path: /home/jik/pictures
fstype: cifs
opts: defaults,credentials=/etc/security/nas.creds,uid=jik,gid=users,forceuid,forcegid,noserverino,_netdev,x-systemd.mount-timeout=0
state: present
register: optional_fields_update
when: ansible_system in ('Linux')
- name: Get the content of the fstab file
shell: cat /etc/fstab
register: optional_fields_content
when: ansible_system in ('Linux')
- name: Check if the line containing the missing last two fields was changed
assert:
that:
- "optional_fields_update['changed']"
- "' 0 0' in optional_fields_content.stdout"
- "1 == optional_fields_content.stdout_lines | length"
when: ansible_system in ('Linux')

Loading…
Cancel
Save