================================================================================ NetApp ONTAP NDU Code Update - Method of Procedure (MOP) Plain-Text Template - Fill via Find and Replace ================================================================================ HOW TO USE THIS TEMPLATE -------------------------------------------------------------------------------- This file is plain text. Do NOT print it and hand-write values. Instead: 1. Save a working copy named after your change (for example: CHG0012345-cluster01-ndu.txt). 2. Open the working copy in Notepad, Notepad++, VS Code, Sublime, or any text editor. Use "Find and Replace" (Ctrl+H in most editors) to substitute every token below with your real value. Replace ALL occurrences. 3. The remaining "[ ]" checkboxes are meant to be edited DURING the change: change "[ ]" to "[x]" once each step is verified. Add notes after the command line if helpful. 4. Save the completed copy and attach it to the change ticket as evidence. -------------------------------------------------------------------------------- TOKEN MANIFEST - Replace each of these BEFORE the maintenance window -------------------------------------------------------------------------------- <> Change/ticket ID (e.g. CHG0012345) <> ONTAP cluster name (e.g. cluster01) <> Cluster management LIF or IP <> Currently installed ONTAP version <> Version you are upgrading to (e.g. 9.17.1P3) <> Same as CURRENT, used by backout section <> First node name in HA pair <> Second node name in HA pair <> Example SVM used in commands (post-validation) <> Example LIF name (post-validation) <> Maintenance date (YYYY-MM-DD) <> Maintenance start time (HH:MM) <> Length of maintenance window in hours (e.g. 4) <> Time zone (e.g. America/New_York) <> Engineer performing the change <> Change approver / CAB rep <> Hostname or IP serving the ONTAP image <> Full path or URL to the image file <> Image filename (e.g. 9.17.1P3_q_image.tgz) <> MD5 hash published on NetApp Support Site DURING-CHANGE FIELDS (filled in as you go - leave token until then if you like): <> Actual start time recorded at SECTION 4 <> Actual end time recorded at SECTION 10 <> Free-form notes about any validation warnings <> Notes if any LIFs needed to be reverted <> Engineer sign-off time <> Approver sign-off time ================================================================================ HEADER ================================================================================ Change ID : <> Cluster : <> Current Version : <> Target Version : <> Maintenance Date : <> <> <> Window Length : <> hours Engineer : <> Approver : <> ================================================================================ SECTION 1 - PRE-CHANGE STAGING (T-7 to T-1 days) ================================================================================ 1.1 Download the target ONTAP image from the NetApp Support Site. [ ] Image file: <> [ ] Published MD5: <> 1.2 Stage the image on <> at <> so the cluster can reach it over HTTP/HTTPS. [ ] Image staged and reachable from <> 1.3 Pre-stage the image on the cluster (does NOT activate it): cluster image package get -url http://<>/<> cluster image package show-repository [ ] Package present in repository [ ] MD5 reported by ONTAP matches <> 1.4 Confirm change ticket <> is approved and the maintenance window is communicated. [ ] Ticket approved [ ] Stakeholders notified (date/time/window/impact) ================================================================================ SECTION 2 - COMMUNICATIONS - STARTING MAINTENANCE ================================================================================ 2.1 Send pre-maintenance notification. [ ] Email sent to storage operations stakeholders [ ] Chat notification posted: "<> - <> NetApp ONTAP Code Update - Starting now. Expected window: <> hours." 2.2 Disable monitoring noise during the window. [ ] AIQUM cluster maintenance mode enabled for <> [ ] Pager / alerting suppressed for the maintenance window ================================================================================ SECTION 3 - PRE-CHANGE HEALTH CHECKS ================================================================================ Run from the cluster management LIF (<>). Capture ALL output and attach to <> as pre-state evidence. 3.1 version -v [ ] Current version matches <> 3.2 cluster image show cluster image show-update-history [ ] No prior upgrade in a failed/in-progress state 3.3 storage failover show [ ] All HA pairs: Connected, Takeover possible: true 3.4 storage aggregate show -state !online [ ] No aggregates in degraded/offline state 3.5 storage disk show -broken storage disk show -container-type spare [ ] No broken disks [ ] Sufficient spare coverage 3.6 cluster show system node show -fields health [ ] All nodes healthy, eligible, and in quorum 3.7 net int show -is-home false [ ] No output (all LIFs on home ports) 3.8 system health alert show [ ] No active alerts 3.9 Send pre-maintenance AutoSupport with maintenance window length: system node autosupport invoke -node * -type all \ -message "MAINT=<>h" [ ] AutoSupport sent ================================================================================ SECTION 4 - VALIDATION ================================================================================ Maintenance start time recorded: <> 4.1 Run the cluster image validation against the staged target: cluster image validate -version <> 4.2 Review the validation output carefully. [ ] No "blocking" issues reported [ ] All "required" actions completed prior to running update Notes / warnings observed: <> ================================================================================ SECTION 5 - EXECUTE THE NDU ================================================================================ 5.1 Open a SECOND SSH session for monitoring before issuing the update. [ ] Second session connected to <> 5.2 From the primary session, start the nondisruptive upgrade: cluster image update -version <> \ -pause-after none \ -ignore-validation-warning false \ -skip-confirmation false \ -stabilize-minutes 4 \ -nodes * [ ] Command accepted - upgrade running NOTE: The upgrade continues even if your SSH session disconnects. Do NOT manually fail over nodes during the upgrade. ================================================================================ SECTION 6 - MONITORING ================================================================================ 6.1 Monitor progress from the second SSH session (run repeatedly): cluster image show-update-progress 6.2 Review completed phases and timestamps: cluster image show-update-history 6.3 Watch HA status during each node's upgrade cycle: storage failover show [ ] Each node returns to "Takeover possible: true" before the next node starts Expected sequence per HA pair: <>: takeover -> activate image -> boot -> giveback -> stabilize (4 min) <>: takeover -> activate image -> boot -> giveback -> stabilize (4 min) ================================================================================ SECTION 7 - BACKOUT PLAN ================================================================================ IMPORTANT: Only execute if the automated upgrade fails and cannot be resumed. Engage NetApp Support BEFORE starting any backout action. 7.1 Set boot image to the previous version: system image modify -node * -image <> system node image show 7.2 Verify revert preconditions (switch to advanced privilege first): set -privilege advanced system node revert-to -node <> -check-only true \ -version <> [ ] No blocking issues reported 7.3 Execute revert: system node revert-to -node <> -version <> 7.4 Filesystem revert (only if directed by NetApp Support): system node run -node <> revert_to <> boot_ontap 7.5 Repeat steps 7.2 - 7.4 for each remaining node (<>, ...). 7.6 Restore HA configuration after all nodes are reverted: cluster ha modify -configured true storage failover modify -node <> -enabled true ================================================================================ SECTION 8 - POST-VALIDATION ================================================================================ Attach all command output to <> as after-state evidence. 8.1 version -v [ ] Output shows: <> 8.2 cluster image show cluster image show-update-history [ ] All nodes on <> [ ] Update history shows completed with no failures 8.3 storage failover show [ ] All HA pairs: Connected, Takeover possible: true 8.4 net int show -is-home false [ ] No output (all LIFs on home ports) If any LIFs are off home ports: network interface revert -vserver <> -lif <> Notes: <> 8.5 system health alert show [ ] No new active alerts 8.6 cluster show system node show -fields health [ ] All nodes healthy 8.7 Send end-maintenance AutoSupport: system node autosupport invoke -node * -type all -message "MAINT=END" [ ] AutoSupport sent ================================================================================ SECTION 9 - RESUME MONITORING ================================================================================ [ ] AIQUM maintenance mode disabled for <> [ ] Monitoring dashboards showing green [ ] No unexpected alerts after maintenance mode lifted ================================================================================ SECTION 10 - COMMUNICATIONS - COMPLETING MAINTENANCE ================================================================================ [ ] Email notification sent to storage operations stakeholders [ ] Chat notification posted: "<> - <> NetApp ONTAP Code Update - Completed" [ ] Pre/post validation output attached to <> as evidence [ ] Change ticket <> transitioned to: Implemented [ ] Maintenance end time recorded: <> ================================================================================ SIGN-OFF ================================================================================ Engineer: <> Time: <> Approver: <> Time: <> ================================================================================ END OF MOP ================================================================================