-
Notifications
You must be signed in to change notification settings - Fork 70
/
Copy pathstorage_disk.yml
153 lines (132 loc) · 4.99 KB
/
storage_disk.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
---
# Define Network Shared Disks (NSDs)
#
# Inspect existing, free, and defined NSDs
#
- block: ## run_once: true
- name: storage | Find existing NSDs
shell: /usr/lpp/mmfs/bin/mmlsnsd -a -Y | grep -v HEADER | cut -d ':' -f 8
register: scale_storage_existing_nsds
changed_when: false
failed_when: false
- name: storage | Find free NSDs
shell: /usr/lpp/mmfs/bin/mmlsnsd -F -Y | grep -v HEADER | cut -d ':' -f 8
register: scale_storage_free_nsds
changed_when: false
failed_when: false
run_once: true
delegate_to: "{{ groups['scale_cluster_admin_nodes'].0 }}"
- name: storage | Initialize undefined variables
set_fact:
scale_disks: []
scale_storage_nsddefs: []
scale_storage_nsdservers: []
when: scale_disks is undefined
- name: storage | Find defined NSDs
set_fact:
scale_storage_nsddefs:
"{{ scale_storage_nsddefs | default([]) + [ item.nsd | default('nsd_' + (item.servers.split(',')[0] | regex_replace('\\W', '_')) + '_' + item.device | basename) ] }}"
scale_storage_nsdservers:
"{{ scale_storage_nsdservers | default([]) + [ item.servers | default(scale_daemon_nodename) ] }}"
when:
- item.device is defined
- scale_disks is defined
with_items:
- "{{ scale_disks }}"
#
# NSD device discovery script
#
- block: ## run_once: true
- name: install | Stat user defined nsddevice disk discovery script
stat:
path: "{{ scale_user_created_nsddevices_file_path }}"
register: scale_user_creatednsddevices
run_once: true
delegate_to: localhost
- name: install | Check user defined nsddevice disk discovery script
assert:
that: scale_user_creatednsddevices.stat.exists
msg: >-
Please set the variable 'scale_user_created_nsddevices_file_path' to point to the
correct user defined nsddevices script (accessible on Ansible control machine)!
run_once: true
delegate_to: localhost
#
# Copy nsd device script to the /var/mmfs/etc/
#
- name: install | Copy user defined nsddevice disk discovery script to the node
copy:
src: "{{ scale_user_created_nsddevices_file_path }}"
dest: "{{ scale_user_created_nsddevices_systems_path }}"
mode: a+x
when: scale_user_creatednsddevices.stat.exists
when: scale_user_defined_nsddevices_discovery | bool
- block: ## run_once: true
- name: storage | Consolidate defined filesystem parameters
set_fact:
scale_storage_fsparams:
"{{ scale_storage_fsparams | default({}) | combine({ item.filesystem:item }, recursive=true) }}"
with_items: "{{ ansible_play_hosts | map('extract', hostvars, 'scale_filesystem') | sum(start=[]) }}"
when: scale_filesystem is defined
#
# Create new NSDs
#
- name: storage | Cleanup existing NSD StanzaFile(s)
file:
path: /var/mmfs/tmp/StanzaFile.new.nsd
state: absent
- name: storage | Prepare StanzaFile(s) for NSD creation
vars:
current_nsds:
# only non-existing NSDs
"{{ scale_storage_nsddefs | difference(scale_storage_existing_nsds.stdout_lines) }}"
template:
src: StanzaFile_nsd.j2
dest: /var/mmfs/tmp/StanzaFile.new.nsd
register: scale_storage_stanzafile_new
- name: storage | Accept server license for NSD servers
command: /usr/lpp/mmfs/bin/mmchlicense server --accept -N "{{ scale_storage_nsdservers | join(',') }}"
when:
- scale_storage_stanzafile_new.size > 1
- scale_storage_stanzafile_new is changed
- name: storage | Create new NSDs
vars:
verify: "{{ 'no' if overwriteNSDs | default(scale_storage_filesystem_defaults.overwriteNSDs) else 'yes' }}"
command: /usr/lpp/mmfs/bin/mmcrnsd -F /var/mmfs/tmp/StanzaFile.new.nsd -v {{ verify }}
register: scale_nsd_create
when:
- scale_storage_stanzafile_new.size > 1
#- item.item not in scale_storage_existing_nsds.stdout_lines
- scale_storage_stanzafile_new is changed
- debug:
msg: "{{ scale_nsd_create.stderr }}"
when:
- scale_nsd_create.stderr is defined
- scale_nsd_create.stderr_lines is defined and scale_nsd_create.stderr_lines | length > 0
ignore_errors: yes
- debug:
msg: "{{ scale_nsd_create.cmd }}"
when: scale_nsd_create.cmd is defined
ignore_errors: yes
- name: storage | Wait for NSD configuration to be synced across cluster
wait_for:
timeout: 30
#
# Cleanup
#
- name: storage | Copy NSDs stanza file
copy:
src: /var/mmfs/tmp/StanzaFile.new.nsd
dest: /usr/lpp/mmfs/
mode: a+x
remote_src: yes
ignore_errors: yes
when:
- scale_storage_stanzafile_new.size > 1
- scale_storage_stanzafile_new is changed
- name: storage | Cleanup new NSD StanzaFile(s)
file:
path: /var/mmfs/tmp/StanzaFile.new.nsd
state: absent
run_once: true
delegate_to: "{{ groups['scale_cluster_admin_nodes'].0 }}"