Skip to content

Commit f98ad66

Browse files
committed
Updated sed tpm vars and play logic
Signed-off-by: Dhananjay Sonawane <[email protected]>
1 parent 81639e5 commit f98ad66

File tree

14 files changed

+163
-197
lines changed

14 files changed

+163
-197
lines changed

.ansible/.lock

Whitespace-only changes.

.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"ansible.python.interpreterPath": "/Users/dhananjay/.pyenv/versions/3.11.8/bin/python"
3+
}

roles/sed_configure/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Role Definition
44
- Definition:
55
- The self-encrypting drives (SED) support protects data at rest on IBM Storage Scale System drives.
66
- TPM is a specialized hardware security chip that provides secure cryptographic functions.
7-
- mmvdisk tpm , esstpm and esstpm key provides options to setup the tpm ,generate keys, enroll drives with the generated keys in the IBM Storage Scale cluster.
7+
- mmvdisk tpm , esstpm and esstpmkey provides options to setup the tpm ,generate keys, enroll drives with the generated keys in the IBM Storage Scale cluster.
88
- These operations are performed on the I/O nodes and the keys generated are also backed up on the utility node.
99

1010

roles/sed_configure/defaults/main.yml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,18 @@ new_tpm_password_file: "/path/to/newpassword.txt"
33
disable_clear: true
44
change_password: false
55
nv_slot_id: "0x01500000"
6-
nv_slot_count: 2
6+
nv_slot_count: 4
77
recovery_group: "RecoveryGroupName"
88
enroll_drive: true
99
rekey_drive: false
1010
generate: true
1111
migrate: true
1212
backup_key: true
13-
restore_key: true
14-
15-
13+
restore_key: false
14+
io_nodes:
15+
- ionode1
16+
- ionode2
17+
utility_nodes:
18+
- utilitynode
19+
emsvm:
20+
- emsvmnode

roles/sed_configure/meta/main.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@ galaxy_info:
1111
platforms:
1212
- name: EL
1313
versions:
14-
- 7
15-
- 8
14+
- 9
1615

1716
galaxy_tags: []
1817

19-
dependencies:
18+
dependencies: []
Lines changed: 50 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,50 @@
1-
---
2-
- block:
3-
# Check the OpenSSL version and fail if the version is < 3
4-
- name: Check OpenSSL version
5-
command: openssl version
6-
register: openssl_version_output
7-
changed_when: false
8-
failed_when: openssl_version_output.stdout | regex_search('OpenSSL\s([0-2]\\.[0-9]+)')
9-
10-
- debug:
11-
msg: "{{(openssl_version_output.rc == 0) | ternary(openssl_version_output.stdout.split('\n'), openssl_version_output.stderr.split('\n')) }}"
12-
13-
# Check the OS version and fail if the version is < RHEL 9
14-
- name: Check OS version
15-
command: cat /etc/redhat-release
16-
register: os_version_output
17-
changed_when: false
18-
failed_when: os_version_output.stdout | regex_search('release\s([0-8])')
19-
20-
- debug:
21-
msg: "{{(os_version_output.rc == 0) | ternary(os_version_output.stdout.split('\n'), os_version_output.stderr.split('\n')) }}"
22-
when: inventory_hostname == 'localhost' or inventory_hostname in scale_io_nodes_list
23-
24-
- block:
25-
- name: Check TPM presence
26-
stat:
27-
path: /dev/tpm0
28-
register: tpm_device
29-
30-
- debug:
31-
msg: "TPM device present"
32-
when: tpm_device.stat.exists
33-
34-
- fail:
35-
msg: "TPM is not enabled in BIOS. Please enable it manually before proceeding."
36-
when: not tpm_device.stat.exists
37-
38-
- name: Check if tpm2-tools is installed
39-
command: rpm -q tpm2-tools
40-
register: tpm2_tools_check
41-
ignore_errors: true
42-
changed_when: false
43-
44-
- name: Install tpm2-tools if not present
45-
yum:
46-
name: tpm2-tools
47-
state: present
48-
when: tpm2_tools_check.rc != 0
49-
when: inventory_hostname in scale_io_nodes_list
50-
51-
52-
53-
1+
---
2+
- block:
3+
# Check the OpenSSL version and fail if the version is < 3
4+
- name: Check OpenSSL version
5+
command: openssl version
6+
register: openssl_version_output
7+
changed_when: false
8+
failed_when: openssl_version_output.stdout | regex_search('OpenSSL\s([0-2]\\.[0-9]+)')
9+
10+
- debug:
11+
msg: "{{(openssl_version_output.rc == 0) | ternary(openssl_version_output.stdout.split('\n'), openssl_version_output.stderr.split('\n')) }}"
12+
13+
# Check the OS version and fail if the version is < RHEL 9
14+
- name: Check OS version
15+
command: cat /etc/redhat-release
16+
register: os_version_output
17+
changed_when: false
18+
failed_when: os_version_output.stdout | regex_search('release\s([0-8])')
19+
20+
- debug:
21+
msg: "{{(os_version_output.rc == 0) | ternary(os_version_output.stdout.split('\n'), os_version_output.stderr.split('\n')) }}"
22+
delegate_to: "{{ item }}"
23+
24+
- block:
25+
- name: Check TPM presence
26+
stat:
27+
path: /dev/tpm0
28+
register: tpm_device
29+
30+
- debug:
31+
msg: "TPM device present"
32+
when: tpm_device.stat.exists
33+
34+
- fail:
35+
msg: "TPM is not enabled in BIOS. Please enable it manually before proceeding."
36+
when: not tpm_device.stat.exists
37+
38+
- name: Check if tpm2-tools is installed
39+
command: rpm -q tpm2-tools
40+
register: tpm2_tools_check
41+
ignore_errors: true
42+
changed_when: false
43+
44+
- name: Install tpm2-tools if not present
45+
yum:
46+
name: tpm2-tools
47+
state: present
48+
when: tpm2_tools_check.rc != 0
49+
delegate_to: "{{ item }}"
50+
when: item in io_nodes
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
- block:
2+
- block:
33
# Creation of NV slots on IO nodes
44
- name: Create NV slots
55
command: mmvdisk tpm createSlots --number-of-slots {{ nv_slot_count }} --nv-slot-id {{ nv_slot_id }} --password-file {{ tpm_password_file }}
@@ -8,9 +8,10 @@
88

99
- debug:
1010
msg: "{{(nv_slot_creation_io.rc == 0) | ternary(nv_slot_creation_io.stdout.split('\n'), nv_slot_creation_io.stderr.split('\n')) }}"
11-
when: inventory_hostname in hostvars[groups['emsvm'][0]]['scale_io_nodes_list']
12-
13-
- block:
11+
delegate_to: "{{ item }}"
12+
when: item in io_nodes
13+
14+
- block:
1415
# Creation of NV slots on utility nodes
1516
- name: Create NV slots on utility node
1617
command: /opt/ibm/ess/tools/bin/.TPM/./esstpm createslot --nv-slot-id {{nv_slot_id}} --password-file {{ tpm_password_file }}
@@ -19,4 +20,5 @@
1920

2021
- debug:
2122
msg: "{{(nv_slot_creation_utility.rc == 0) | ternary(nv_slot_creation_utility.stdout.split('\n'), nv_slot_creation_utility.stderr.split('\n')) }}"
22-
when: inventory_hostname in hostvars[groups['emsvm'][0]]['scale_utility_nodes_list']
23+
delegate_to: "{{ item }}"
24+
when: item in utility_nodes

roles/sed_configure/tasks/enroll_sed_drive.yml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,25 @@
22
- block:
33
# Enrolling the SED with the generated TPM key
44
- name: Enroll drives with TPM key
5-
command: mmvdisk sed enroll --recovery-group {{ recovery_group }} --tpm-slot-id {{ nv_slot_id }}
5+
command: mmvdisk sed enroll --recovery-group {{ recovery_group }} --tpm-slot-id {{ nv_slot_id }} --confirm
66
register: drive_enrollment
77

88
- debug:
99
msg: "{{(drive_enrollment.rc == 0) | ternary(drive_enrollment.stdout.split('\n'), drive_enrollment.stderr.split('\n')) }}"
1010
failed_when: drive_enrollment.rc != 0
11-
when: enroll_drive and inventory_hostname in hostvars[groups['emsvm'][0]]['scale_io_nodes_list']
11+
delegate_to: "{{ item }}"
1212
run_once: true
13+
when: enroll_drive
1314

1415
- block:
1516
# Rekeying the SED with the a new TPM key
1617
- name: Rekey drives with new TPM key
17-
command: mmvdisk sed rekey --recovery-group {{ recovery_group }} --tpm-slot-id {{ nv_slot_id }}
18+
command: mmvdisk sed rekey --recovery-group {{ recovery_group }} --tpm-slot-id {{ nv_slot_id }} --confirm
1819
register: drive_rekey
1920

2021
- debug:
2122
msg: "{{(drive_rekey.rc == 0) | ternary(drive_rekey.stdout.split('\n'), drive_rekey.stderr.split('\n')) }}"
2223
failed_when: drive_rekey.rc != 0
23-
when: rekey_drives and inventory_hostname in hostvars[groups['emsvm'][0]]['scale_io_nodes_list']
24-
run_once: true
24+
delegate_to: "{{ item }}"
25+
run_once: true
26+
when: rekey_drive
Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,28 @@
11
---
2-
# Generate only on one node. migrate to others.
3-
# Run both commands only on one single io node.
4-
52
- block:
6-
# Generate a TPM key
3+
# Generate a TPM key
74
- name: Generate TPM key
85
command: mmvdisk tpm genkey --nv-slot-id {{ nv_slot_id }} --password-file {{ tpm_password_file }}
96
register: tpm_key_generate
10-
7+
118
- debug:
129
msg: "{{(tpm_key_generate.rc == 0) | ternary(tpm_key_generate.stdout.split('\n'), tpm_key_generate.stderr.split('\n')) }}"
13-
failed_when: tpm_key_generate.rc != 0
14-
when: generate and inventory_hostname in hostvars[groups['emsvm'][0]]['scale_io_nodes_list']
10+
failed_when: tpm_key_generate.rc != 0
11+
delegate_to: "{{ item }}"
12+
when: generate
1513
run_once: true
16-
17-
- block:
14+
15+
- block:
1816
# Migrate the generated TPM key to other io nodes
1917
- name: Migrate TPM key to other nodes
20-
command: mmvdisk tpm migratekey --nv-slot-id {{ nv_slot_id }} -s {{ inventory_hostname }} -N {{ target_nodes | join(',') }}
21-
vars:
22-
target_nodes: "{{ (hostvars[groups['emsvm'][0]]['scale_io_nodes_list'])[1:]}}"
18+
command: mmvdisk tpm migratekey --nv-slot-id {{ nv_slot_id }} -s {{ io_nodes.0 }} -N {{ target_nodes | join(',') }}
19+
vars:
20+
target_nodes: "{{ io_nodes[1:] }}"
2321
register: tpm_key_migrate
2422

2523
- debug:
2624
msg: "{{ (tpm_key_migrate.rc == 0) | ternary(tpm_key_migrate.stdout.split('\n'),tpm_key_migrate.stderr.split('\n')) }}"
2725
failed_when: tpm_key_migrate.rc != 0
28-
when: migrate and inventory_hostname in hostvars[groups['emsvm'][0]]['scale_io_nodes_list']
26+
delegate_to: "{{ io_nodes.0 }}"
27+
when: migrate
2928
run_once: true

roles/sed_configure/tasks/main.yml

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
---
2-
- import_tasks: check_prereq.yml
2+
- include_tasks: check_prereq.yml
33
tags: check prerequisites
4+
loop: "{{ io_nodes + utility_nodes }}"
45

5-
- import_tasks: tpm_ownership.yml
6+
- include_tasks: tpm_ownership.yml
67
tags: tpm ownership
8+
loop: "{{ io_nodes + utility_nodes }}"
79

8-
- import_tasks: create_nv_slot.yml
10+
- include_tasks: create_nv_slot.yml
911
tags: create nv slot
12+
loop: "{{ io_nodes + utility_nodes }}"
1013

11-
- import_tasks: generate_tpm_key.yml
12-
tags: generate tpm key
14+
- include_tasks: generate_tpm_key.yml
15+
tags: generate tpm key
1316

14-
- import_tasks: enroll_sed_drive.yml
17+
- include_tasks: enroll_sed_drive.yml
1518
tags: enroll sed drive
1619

17-
- import_tasks: manage_key.yml
20+
- include_tasks: manage_key.yml
1821
tags: restore and backup key
19-
20-
21-
22+
loop: "{{ emsvm }}"

0 commit comments

Comments
 (0)