Before running any IUF stages that use sat bootprep, you must add the
csm-security layer to your bootprep input file.
(ncn-m001#) Locate your management node bootprep configuration.
If a previous CSM install or upgrade has been performed, the bootprep
file is typically already in your admin directory (e.g.,
/etc/cray/upgrade/csm/admin/). This may be a site-customized
version of the default recipe bootprep, or a completely custom file.
Identify whichever bootprep file is actively used for your
management node CFS configurations.
If no bootprep file exists yet, clone the recipe repo from Gitea:
WARNING: The recipe repo contains the default bootprep file. If any customizations were made to your bootprep configuration previously, using this default file will lose those customizations.
VCS_USERNAME=$(kubectl get secret -n services vcs-user-credentials -o jsonpath={.data.vcs_username} | base64 -d)
VCS_PASSWORD=$(kubectl get secret -n services vcs-user-credentials \
-o jsonpath={.data.vcs_password} | base64 -d)
git clone "https://${VCS_USERNAME}:${VCS_PASSWORD}@api-gw-service-nmn.local/vcs/cray/hpc-csm-software-recipe.git"
cd hpc-csm-software-recipe
git branch -r # list available recipe versions
git checkout cray/hpc-csm-software-recipe/<recipe-version>
cd bootprep
The recipe version branch corresponds to the software recipe release delivered with your CSM install.
(ncn-m001#) Edit the bootprep file to add the csm-security layer to
every configuration whose images should receive security patches —
typically both the management configuration (master/worker images) and
the storage configuration (storage images).
Important: Place the
csm-securitylayer immediately after the CSM base layer (ncn_nodes.yml) and before all other product layers andncn-initrd.yml. Security patches must be applied first so subsequent layers build on the patched base. Thencn-initrd.ymllayer must always remain last because it regenerates the initrd.
Example for master/worker nodes:
configurations:
- name: "{{default.note}}management-{{recipe.version}}{{default.suffix}}"
layers:
- name: csm-ncn-nodes-{{csm.version}}
playbook: ncn_nodes.yml
product:
name: csm
version: "{{csm.version}}"
# Add this layer immediately after the CSM base layer:
- name: csm-security
playbook: pb_cfs_security_install.yml
product:
name: csm-security
version: "{{csm_security.version}}"
# ... remaining product layers (SHS, USS, CSM-Diags, SMA, etc.)
# ncn-initrd.yml must remain last
- name: csm-ncn-initrd-{{csm.version}}
playbook: ncn-initrd.yml
product:
name: csm
version: "{{csm.version}}"
Example for storage nodes:
# this configuration can be used to personalize the storage nodes with SMA and Diags
- name: "{{default.note}}storage-{{recipe.version}}{{default.suffix}}"
layers:
- name: csm-ncn-nodes-{{csm.version}}
playbook: ncn_nodes.yml
product:
name: csm
version: "{{csm.version}}"
# Add this layer immediately after the CSM base layer:
- name: csm-security
playbook: pb_cfs_security_install.yml
product:
name: csm-security
version: "{{csm_security.version}}"
# ... remaining product layers (CSM-Diags, SMA, etc.)
# ncn-initrd.yml must remain last
- name: csm-ncn-initrd-{{csm.version}}
playbook: ncn-initrd.yml
product:
name: csm
version: "{{csm.version}}"
Example for minimal-management (if present in your bootprep):
- name: "{{default.note}}minimal-management-{{recipe.version}}{{default.suffix}}"
layers:
- name: csm-ncn-nodes-{{csm.version}}
playbook: ncn_nodes.yml
product:
name: csm
version: "{{csm.version}}"
# Add this layer immediately after the CSM base layer:
- name: csm-security
playbook: pb_cfs_security_install.yml
product:
name: csm-security
version: "{{csm_security.version}}"
# ... remaining product layers (if any)
# ncn-initrd.yml must remain last
- name: csm-ncn-initrd-{{csm.version}}
playbook: ncn-initrd.yml
product:
name: csm
version: "{{csm.version}}"
Note: Your bootprep file may contain additional configurations beyond the three shown above. Add the
csm-securitylayer to every configuration that produces images for management nodes — any node booting from these images requires the patched kernel.
The {{csm_security.version}} template variable resolves automatically
from the product catalog after IUF deliver-product registers the product —
no bootprep edit is needed between future csm-security updates.