-
Notifications
You must be signed in to change notification settings - Fork 54
/
test-verify-volume-mount.yml
154 lines (140 loc) · 5.41 KB
/
test-verify-volume-mount.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
---
#
# MDRaid devices paths are returned as a symlinks.
# But sometimes we need their targets.
#
- name: Get expected mount device based on device type
set_fact:
storage_test_device_path: "{{ storage_test_volume._kernel_device
if _storage_test_volume_present and not
storage_test_volume.encryption and
storage_test_volume.raid_level and
(storage_test_pool is not defined or storage_test_pool is none)
else storage_test_volume._device }}"
- name: Set some facts
set_fact:
storage_test_mount_device_matches: "{{ ansible_mounts |
selectattr('device', 'match', '^' ~ storage_test_device_path ~ '$') |
list }}"
storage_test_mount_point_matches: "{{ ansible_mounts |
selectattr('mount', 'match',
'^' ~ mount_prefix ~ storage_test_volume.mount_point ~ '$') |
list if storage_test_volume.mount_point else [] }}"
storage_test_mount_expected_match_count: "{{ 1
if _storage_test_volume_present and storage_test_volume.mount_point and
storage_test_volume.mount_point.startswith('/')
else 0 }}"
storage_test_swap_expected_matches: "{{ 1 if
_storage_test_volume_present and
storage_test_volume.fs_type == 'swap' else 0 }}"
vars:
# assumes /opt which is /var/opt in ostree
mount_prefix: "{{ '/var' if __storage_is_ostree | d(false)
and storage_test_volume.mount_point
and storage_test_volume.mount_point.startswith('/opt') else '' }}"
- name: Get information about the mountpoint directory
stat:
path: "{{ storage_test_volume.mount_point }}"
register: storage_test_found_mount_stat
when: _storage_test_volume_present and
storage_test_volume.mount_point and
(storage_test_volume.mount_user or
storage_test_volume.mount_group or
storage_test_volume.mount_mode)
#
# Verify mount presence.
#
- name: Verify the current mount state by device
assert:
that: storage_test_mount_device_matches | length ==
storage_test_mount_expected_match_count | int
msg: >-
Found unexpected mount state for volume
'{{ storage_test_volume.name }}' device
when: _storage_test_volume_present and storage_test_volume.mount_point
#
# Verify mount directory (state, owner, group, permissions).
#
- name: Verify the current mount state by mount point
assert:
that: storage_test_mount_point_matches | length ==
storage_test_mount_expected_match_count | int
msg: >-
Found unexpected mount state for volume
'{{ storage_test_volume.name }}' mount point
- name: Verify mount directory user
assert:
that: storage_test_volume.mount_user ==
storage_test_found_mount_stat.stat.pw_name
msg: "Mount directory {{ storage_test_volume.mount_point }} of volume
{{ storage_test_volume.name }}) has unexpected owner
(expected: {{ storage_test_volume.mount_user }}, found:
{{ storage_test_found_mount_stat.stat.pw_name }})"
when: _storage_test_volume_present and
storage_test_volume.mount_point and
storage_test_volume.mount_user
- name: Verify mount directory group
assert:
that: storage_test_volume.mount_group ==
storage_test_found_mount_stat.stat.gr_name
msg: "Mount directory {{ storage_test_volume.mount_point }} of volume
{{ storage_test_volume.name }}) has unexpected group
(expected: {{ storage_test_volume.mount_group }}, found:
{{ storage_test_found_mount_stat.stat.gr_name }})"
when: _storage_test_volume_present and
storage_test_volume.mount_point and
storage_test_volume.mount_group
- name: Verify mount directory permissions
assert:
that: storage_test_volume.mount_mode ==
storage_test_found_mount_stat.stat.mode
msg: "Mount directory {{ storage_test_volume.mount_point }} of volume
{{ storage_test_volume.name }}) has unexpected permissions (expected:
{{ storage_test_volume.mount_mode }}, found:
{{ storage_test_found_mount_stat.stat.mode }})"
when: _storage_test_volume_present and
storage_test_volume.mount_point and
storage_test_volume.mount_mode
#
# Verify mount fs type.
#
- name: Verify the mount fs type
assert:
that: storage_test_mount_point_matches[0].fstype ==
storage_test_volume.fs_type
msg: >-
Found unexpected mount state for volume
'{{ storage_test_volume.name }} fs type
when: storage_test_mount_expected_match_count | int == 1
#
# Verify swap status.
#
- name: Get path of test volume device
command: realpath {{ storage_test_volume._device | quote }}
register: storage_test_sys_node
changed_when: false
when: storage_test_volume.fs_type == "swap"
- name: Gather swap info
command: cat /proc/swaps
register: storage_test_swaps
changed_when: false
when: storage_test_volume.fs_type == "swap"
- name: Verify swap status
assert:
that: storage_test_swaps.stdout |
regex_findall('^' + storage_test_sys_node.stdout + ' ', multiline=True) |
list | length | int == storage_test_swap_expected_matches | int
msg: Unexpected number of matching active swaps
when: storage_test_volume.fs_type == "swap"
#
# Verify mount options.
#
- name: Unset facts
set_fact:
storage_test_mount_device_matches: null
storage_test_mount_point_matches: null
storage_test_mount_expected_match_count: null
storage_test_swap_expected_matches: null
storage_test_sys_node: null
storage_test_swaps: null
storage_test_found_mount_stat: null