2022-05-31-16

This commit is contained in:
Hideki Saito 2022-05-31 12:05:58 +09:00
parent 995ba14046
commit 4d35f6421c

View file

@ -1,412 +1,405 @@
#- name: Create the mount point
# file:
# state: directory
# path: '{{ output_dir }}/mount_dest'
#
#- name: Create a directory to bind mount
# file:
# state: directory
# path: '{{ output_dir }}/mount_source'
#
#- name: Put something in the directory so we see that it worked
# copy:
# content: 'Testing
#
# '
# dest: '{{ output_dir }}/mount_source/test_file'
# register: orig_info
#
#- name: Bind mount a filesystem (Linux)
# mount:
# src: '{{ output_dir }}/mount_source'
# name: '{{ output_dir }}/mount_dest'
# state: mounted
# fstype: None
# opts: bind
# when: ansible_system == 'Linux'
# register: bind_result_linux
#
#- name: Bind mount a filesystem (FreeBSD)
# mount:
# src: '{{ output_dir }}/mount_source'
# name: '{{ output_dir }}/mount_dest'
# state: mounted
# fstype: nullfs
# when: ansible_system == 'FreeBSD'
# register: bind_result_freebsd
#
#- name: get checksum for bind mounted file
# stat:
# path: '{{ output_dir }}/mount_dest/test_file'
# when: ansible_system in ('FreeBSD', 'Linux')
# register: dest_stat
#
#- name: assert the bind mount was successful
# assert:
# that:
# - (ansible_system == 'Linux' and bind_result_linux['changed']) or (ansible_system == 'FreeBSD' and bind_result_freebsd['changed'])
# - dest_stat['stat']['exists']
# - orig_info['checksum'] == dest_stat['stat']['checksum']
# when: ansible_system in ('FreeBSD', 'Linux')
#
#- name: Bind mount a filesystem (Linux)
# mount:
# src: '{{ output_dir }}/mount_source'
# name: '{{ output_dir }}/mount_dest'
# state: mounted
# fstype: None
# opts: bind
# when: ansible_system == 'Linux'
# register: bind_result_linux
#
#- name: Bind mount a filesystem (FreeBSD)
# mount:
# src: '{{ output_dir }}/mount_source'
# name: '{{ output_dir }}/mount_dest'
# state: mounted
# fstype: nullfs
# when: ansible_system == 'FreeBSD'
# register: bind_result_freebsd
#
#- name: Make sure we didn't mount a second time
# assert:
# that:
# - (ansible_system == 'Linux' and not bind_result_linux['changed']) or (ansible_system == 'FreeBSD' and not bind_result_freebsd['changed'])
# when: ansible_system in ('FreeBSD', 'Linux')
#
#- name: Remount filesystem with different opts (Linux)
# mount:
# src: '{{ output_dir }}/mount_source'
# name: '{{ output_dir }}/mount_dest'
# state: mounted
# fstype: None
# opts: bind,ro
# when: ansible_system == 'Linux'
# register: bind_result_linux
#
#- name: Remount filesystem with different opts (FreeBSD)
# mount:
# src: '{{ output_dir }}/mount_source'
# name: '{{ output_dir }}/mount_dest'
# state: mounted
# fstype: nullfs
# opts: ro
# when: ansible_system == 'FreeBSD'
# register: bind_result_freebsd
#
#- name: Get mount options
# shell: mount | grep mount_dest | grep -E -w '(ro|read-only)' | wc -l
# register: remount_options
#
#- name: Make sure the filesystem now has the new opts
# assert:
# that:
# - (ansible_system == 'Linux' and bind_result_linux['changed']) or (ansible_system == 'FreeBSD' and bind_result_freebsd['changed'])
# - '''1'' in remount_options.stdout'
# - 1 == remount_options.stdout_lines | length
# when: ansible_system in ('FreeBSD', 'Linux')
#
#- name: Unmount the bind mount
# mount:
# name: '{{ output_dir }}/mount_dest'
# state: absent
# when: ansible_system in ('Linux', 'FreeBSD')
# register: unmount_result
#
#- name: Make sure the file no longer exists in dest
# stat:
# path: '{{ output_dir }}/mount_dest/test_file'
# when: ansible_system in ('FreeBSD', 'Linux')
# register: dest_stat
#
#- name: Check that we unmounted
# assert:
# that:
# - unmount_result['changed']
# - not dest_stat['stat']['exists']
# when: ansible_system in ('FreeBSD', 'Linux')
#
#- name: Block to test remounted option
# block:
# - name: Create fstab record for the first swap file
# mount:
# name: none
# src: /tmp/swap1
# opts: sw
# fstype: swap
# state: present
# register: swap1_created
#
# - name: Try to create fstab record for the first swap file again
# mount:
# name: none
# src: /tmp/swap1
# opts: sw
# fstype: swap
# state: present
# register: swap1_created_again
#
# - name: Check that we created the swap1 record
# assert:
# that:
# - swap1_created['changed']
# - not swap1_created_again['changed']
#
# - name: Create fstab record for the second swap file
# mount:
# name: none
# src: /tmp/swap2
# opts: sw
# fstype: swap
# state: present
# register: swap2_created
#
# - name: Try to create fstab record for the second swap file again
# mount:
# name: none
# src: /tmp/swap1
# opts: sw
# fstype: swap
# state: present
# register: swap2_created_again
#
# - name: Check that we created the swap2 record
# assert:
# that:
# - swap2_created['changed']
# - not swap2_created_again['changed']
#
# - name: Remove the fstab record for the first swap file
# mount:
# name: none
# src: /tmp/swap1
# state: absent
# register: swap1_removed
#
# - name: Try to remove the fstab record for the first swap file again
# mount:
# name: none
# src: /tmp/swap1
# state: absent
# register: swap1_removed_again
#
# - name: Check that we removed the swap1 record
# assert:
# that:
# - swap1_removed['changed']
# - not swap1_removed_again['changed']
#
# - name: Remove the fstab record for the second swap file
# mount:
# name: none
# src: /tmp/swap2
# state: absent
# register: swap2_removed
#
# - name: Try to remove the fstab record for the second swap file again
# mount:
# name: none
# src: /tmp/swap2
# state: absent
# register: swap2_removed_again
#
# - name: Check that we removed the swap2 record
# assert:
# that:
# - swap2_removed['changed']
# - not swap2_removed_again['changed']
#
# - 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
#
# '
#
# - 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
#
# - name: Get the content of the fstab file
# shell: cat /etc/fstab
# register: optional_fields_content
#
# - 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
#
# - name: Create empty file
# community.general.filesize:
# path: /tmp/myfs.img
# size: 20M
#
# - name: Format FS
# community.general.filesystem:
# fstype: ext3
# dev: /tmp/myfs.img
#
# - name: Mount the FS for the first time
# mount:
# path: /tmp/myfs
# src: /tmp/myfs.img
# fstype: ext2
# state: mounted
#
# - name: Get the last write time
# shell: 'dumpe2fs /tmp/myfs.img 2>/dev/null | grep -i last write time: |cut -d: -f2-'
# register: last_write_time
#
# - name: Wait 2 second
# pause:
# seconds: 2
#
# - name: Test if the FS is remounted
# mount:
# path: /tmp/myfs
# state: remounted
#
# - name: Get again the last write time
# shell: 'dumpe2fs /tmp/myfs.img 2>/dev/null | grep -i last write time: |cut -d: -f2-'
# register: last_write_time2
#
# - name: Fail if they are the same
# fail:
# msg: Filesytem was not remounted, testing of the module failed!
# when: last_write is defined and last_write_time2 is defined and last_write_time.stdout == last_write_time2.stdout
#
# - name: Remount filesystem with different opts using remounted option (Linux only)
# mount:
# path: /tmp/myfs
# state: remounted
# opts: rw,noexec
#
# - name: Get remounted options (Linux only)
# shell: mount | grep myfs | grep -E -w 'noexec' | wc -l
# register: remounted_options
#
# - name: Make sure the filesystem now has the new opts after using remounted (Linux only)
# assert:
# that:
# - "'1' in remounted_options.stdout"
# - "1 == remounted_options.stdout_lines | length"
#
# - name: Mount the FS again to test backup
# mount:
# path: /tmp/myfs
# src: /tmp/myfs.img
# fstype: ext2
# state: mounted
# backup: yes
# register: mount_backup_out
#
# - name: ensure backup_file in returned output
# assert:
# that:
# - "'backup_file' in mount_backup_out"
#
# always:
# - name: Umount the test FS
# mount:
# path: /tmp/myfs
# src: /tmp/myfs.img
# opts: loop
# state: absent
#
# - name: Remove the test FS
# file:
# path: '{{ item }}'
# state: absent
# loop:
# - /tmp/myfs.img
# - /tmp/myfs
# when: ansible_system in ('Linux')
#
#- name: Block to test boot option for Linux
# block:
# - name: Create empty file
# community.general.filesize:
# path: /tmp/myfs.img
# size: 20M
#
# - name: Format FS
# community.general.filesystem:
# fstype: ext3
# dev: /tmp/myfs.img
#
# - name: Mount the FS with noauto option
# mount:
# path: /tmp/myfs
# src: /tmp/myfs.img
# fstype: ext3
# state: mounted
# boot: no
# opts: rw,user,async
# register: mount_info
#
# - name: assert the mount without noauto was successful
# assert:
# that:
# - mount_info['opts'] == 'rw,user,async,noauto'
#
# - name: Unmount FS
# mount:
# path: /tmp/myfs
# state: absent
#
# - name: Remove the test FS
# file:
# path: '{{ item }}'
# state: absent
# loop:
# - /tmp/myfs.img
# - /tmp/myfs
# when: ansible_system in ('Linux')
#
#- name: Block to test missing newline at the EOF of fstab
# block:
# - name: Create empty file
# community.general.filesize:
# path: /tmp/myfs1.img
# size: 20M
# - name: Format FS
# community.general.filesystem:
# fstype: ext3
# dev: /tmp/myfs1.img
# - name: Create custom fstab file without newline
# copy:
# content: '#TEST COMMENT WITHOUT NEWLINE'
# dest: /tmp/test_fstab
# - name: Mount the FS using the custom fstab
# mount:
# path: /tmp/myfs1
# src: /tmp/myfs1.img
# fstype: ext3
# state: mounted
# opts: defaults
# fstab: /tmp/test_fstab
# - name: Unmount the mount point in the custom fstab
# mount:
# path: /tmp/myfs1
# state: absent
# fstab: /tmp/test_fstab
# - name: Remove the test FS and the custom fstab
# file:
# path: '{{ item }}'
# state: absent
# loop:
# - /tmp/myfs1.img
# - /tmp/myfs1
# - /tmp/test_fstab
# when: ansible_system in ('Linux')
- name: Create the mount point
file:
state: directory
path: '{{ output_dir }}/mount_dest'
- name: Create empty file
command: dd if=/dev/zero of=/tmp/myfs.img bs=1048576 count=20
- name: Create a directory to bind mount
file:
state: directory
path: '{{ output_dir }}/mount_source'
- name: Put something in the directory so we see that it worked
copy:
content: 'Testing
'
dest: '{{ output_dir }}/mount_source/test_file'
register: orig_info
- name: Bind mount a filesystem (Linux)
mount:
src: '{{ output_dir }}/mount_source'
name: '{{ output_dir }}/mount_dest'
state: mounted
fstype: None
opts: bind
when: ansible_system == 'Linux'
register: bind_result_linux
- name: Bind mount a filesystem (FreeBSD)
mount:
src: '{{ output_dir }}/mount_source'
name: '{{ output_dir }}/mount_dest'
state: mounted
fstype: nullfs
when: ansible_system == 'FreeBSD'
register: bind_result_freebsd
- name: get checksum for bind mounted file
stat:
path: '{{ output_dir }}/mount_dest/test_file'
when: ansible_system in ('FreeBSD', 'Linux')
register: dest_stat
- name: assert the bind mount was successful
assert:
that:
- (ansible_system == 'Linux' and bind_result_linux['changed']) or (ansible_system == 'FreeBSD' and bind_result_freebsd['changed'])
- dest_stat['stat']['exists']
- orig_info['checksum'] == dest_stat['stat']['checksum']
when: ansible_system in ('FreeBSD', 'Linux')
- name: Bind mount a filesystem (Linux)
mount:
src: '{{ output_dir }}/mount_source'
name: '{{ output_dir }}/mount_dest'
state: mounted
fstype: None
opts: bind
when: ansible_system == 'Linux'
register: bind_result_linux
- name: Bind mount a filesystem (FreeBSD)
mount:
src: '{{ output_dir }}/mount_source'
name: '{{ output_dir }}/mount_dest'
state: mounted
fstype: nullfs
when: ansible_system == 'FreeBSD'
register: bind_result_freebsd
- name: Make sure we didn't mount a second time
assert:
that:
- (ansible_system == 'Linux' and not bind_result_linux['changed']) or (ansible_system == 'FreeBSD' and not bind_result_freebsd['changed'])
when: ansible_system in ('FreeBSD', 'Linux')
- name: Remount filesystem with different opts (Linux)
mount:
src: '{{ output_dir }}/mount_source'
name: '{{ output_dir }}/mount_dest'
state: mounted
fstype: None
opts: bind,ro
when: ansible_system == 'Linux'
register: bind_result_linux
- name: Remount filesystem with different opts (FreeBSD)
mount:
src: '{{ output_dir }}/mount_source'
name: '{{ output_dir }}/mount_dest'
state: mounted
fstype: nullfs
opts: ro
when: ansible_system == 'FreeBSD'
register: bind_result_freebsd
- name: Get mount options
shell: mount | grep mount_dest | grep -E -w '(ro|read-only)' | wc -l
register: remount_options
- name: Make sure the filesystem now has the new opts
assert:
that:
- (ansible_system == 'Linux' and bind_result_linux['changed']) or (ansible_system == 'FreeBSD' and bind_result_freebsd['changed'])
- '''1'' in remount_options.stdout'
- 1 == remount_options.stdout_lines | length
when: ansible_system in ('FreeBSD', 'Linux')
- name: Unmount the bind mount
mount:
name: '{{ output_dir }}/mount_dest'
state: absent
when: ansible_system in ('Linux', 'FreeBSD')
register: unmount_result
- name: Make sure the file no longer exists in dest
stat:
path: '{{ output_dir }}/mount_dest/test_file'
when: ansible_system in ('FreeBSD', 'Linux')
register: dest_stat
- name: Check that we unmounted
assert:
that:
- unmount_result['changed']
- not dest_stat['stat']['exists']
when: ansible_system in ('FreeBSD', 'Linux')
- name: Block to test remounted option
block:
- name: Create fstab record for the first swap file
mount:
name: none
src: /tmp/swap1
opts: sw
fstype: swap
state: present
register: swap1_created
- name: Try to create fstab record for the first swap file again
mount:
name: none
src: /tmp/swap1
opts: sw
fstype: swap
state: present
register: swap1_created_again
- name: Check that we created the swap1 record
assert:
that:
- swap1_created['changed']
- not swap1_created_again['changed']
- name: Create fstab record for the second swap file
mount:
name: none
src: /tmp/swap2
opts: sw
fstype: swap
state: present
register: swap2_created
- name: Try to create fstab record for the second swap file again
mount:
name: none
src: /tmp/swap1
opts: sw
fstype: swap
state: present
register: swap2_created_again
- name: Check that we created the swap2 record
assert:
that:
- swap2_created['changed']
- not swap2_created_again['changed']
- name: Remove the fstab record for the first swap file
mount:
name: none
src: /tmp/swap1
state: absent
register: swap1_removed
- name: Try to remove the fstab record for the first swap file again
mount:
name: none
src: /tmp/swap1
state: absent
register: swap1_removed_again
- name: Check that we removed the swap1 record
assert:
that:
- swap1_removed['changed']
- not swap1_removed_again['changed']
- name: Remove the fstab record for the second swap file
mount:
name: none
src: /tmp/swap2
state: absent
register: swap2_removed
- name: Try to remove the fstab record for the second swap file again
mount:
name: none
src: /tmp/swap2
state: absent
register: swap2_removed_again
- name: Check that we removed the swap2 record
assert:
that:
- swap2_removed['changed']
- not swap2_removed_again['changed']
- 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
'
- 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
- name: Get the content of the fstab file
shell: cat /etc/fstab
register: optional_fields_content
- 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
- name: Create empty file
command: dd if=/dev/zero of=/tmp/myfs.img bs=1048576 count=20
when: ansible_system in ('Linux')
- name: Format FS
community.general.filesystem:
fstype: ext3
dev: /tmp/myfs.img
- name: Mount the FS for the first time
mount:
path: /tmp/myfs
src: /tmp/myfs.img
fstype: ext2
state: mounted
- name: Get the last write time
shell: 'dumpe2fs /tmp/myfs.img 2>/dev/null | grep -i last write time: |cut -d: -f2-'
register: last_write_time
- name: Wait 2 second
pause:
seconds: 2
- name: Test if the FS is remounted
mount:
path: /tmp/myfs
state: remounted
- name: Get again the last write time
shell: 'dumpe2fs /tmp/myfs.img 2>/dev/null | grep -i last write time: |cut -d: -f2-'
register: last_write_time2
- name: Fail if they are the same
fail:
msg: Filesytem was not remounted, testing of the module failed!
when: last_write is defined and last_write_time2 is defined and last_write_time.stdout == last_write_time2.stdout
- name: Remount filesystem with different opts using remounted option (Linux only)
mount:
path: /tmp/myfs
state: remounted
opts: rw,noexec
- name: Get remounted options (Linux only)
shell: mount | grep myfs | grep -E -w 'noexec' | wc -l
register: remounted_options
- name: Make sure the filesystem now has the new opts after using remounted (Linux only)
assert:
that:
- "'1' in remounted_options.stdout"
- "1 == remounted_options.stdout_lines | length"
- name: Mount the FS again to test backup
mount:
path: /tmp/myfs
src: /tmp/myfs.img
fstype: ext2
state: mounted
backup: yes
register: mount_backup_out
- name: ensure backup_file in returned output
assert:
that:
- "'backup_file' in mount_backup_out"
always:
- name: Umount the test FS
mount:
path: /tmp/myfs
src: /tmp/myfs.img
opts: loop
state: absent
- name: Remove the test FS
file:
path: '{{ item }}'
state: absent
loop:
- /tmp/myfs.img
- /tmp/myfs
when: ansible_system in ('Linux')
- name: Block to test boot option for Linux
block:
- name: Create empty file
command: dd if=/dev/zero of=/tmp/myfs.img bs=1048576 count=20
when: ansible_system in ('Linux')
- name: Format FS
community.general.filesystem:
fstype: ext3
dev: /tmp/myfs.img
- name: Mount the FS with noauto option
mount:
path: /tmp/myfs
src: /tmp/myfs.img
fstype: ext3
state: mounted
boot: no
opts: rw,user,async
register: mount_info
- name: assert the mount without noauto was successful
assert:
that:
- mount_info['opts'] == 'rw,user,async,noauto'
- name: Unmount FS
mount:
path: /tmp/myfs
state: absent
- name: Remove the test FS
file:
path: '{{ item }}'
state: absent
loop:
- /tmp/myfs.img
- /tmp/myfs
when: ansible_system in ('Linux')
- name: Block to test missing newline at the EOF of fstab
block:
- name: Create empty file
command: dd if=/dev/zero of=/tmp/myfs1.img bs=1048576 count=20
when: ansible_system in ('Linux')
- name: Format FS
community.general.filesystem:
fstype: ext3
dev: /tmp/myfs1.img
- name: Create custom fstab file without newline
copy:
content: '#TEST COMMENT WITHOUT NEWLINE'
dest: /tmp/test_fstab
- name: Mount the FS using the custom fstab
mount:
path: /tmp/myfs1
src: /tmp/myfs1.img
fstype: ext3
state: mounted
opts: defaults
fstab: /tmp/test_fstab
- name: Unmount the mount point in the custom fstab
mount:
path: /tmp/myfs1
state: absent
fstab: /tmp/test_fstab
- name: Remove the test FS and the custom fstab
file:
path: '{{ item }}'
state: absent
loop:
- /tmp/myfs1.img
- /tmp/myfs1
- /tmp/test_fstab
when: ansible_system in ('Linux')