×
Rollback Netprobe
The RollbackNetprobe.yaml
CloudFormation template rolls back Netprobe on existing EC2 instances using AWS Systems Manager (SSM) by restoring the most recent backup archive created under <NetprobeInstallDirectory>/backup/netprobe/
and restarting netprobe.service
.
Prerequisites Copied
- Target EC2 instances must have SSM Agent installed and running
- Target instances must have an IAM instance profile attached with permissions:
AmazonSSMManagedInstanceCore
(for SSM communication)
- The
netprobe.service
systemd unit should already exist on the instances - A backup archive must exist at
<NetprobeInstallDirectory>/backup/netprobe/netprobe-*.tar.gz
(created by the update process)
Input Parameters Copied
Parameter | Description | Default | Required |
---|---|---|---|
Target EC2 Configuration | |||
InstanceIds |
Comma-separated list of existing EC2 Instance IDs | - | ✓ |
AWS Credentials | |||
AWSRegion |
AWS Region (e.g., ap-southeast-1, us-west-2) | ap-southeast-1 | |
Netprobe Configuration | |||
NetprobeInstallDirectory |
Directory where Netprobe is installed | ~/geneos |
Configuration Copied
AWSTemplateFormatVersion: '2010-09-09'
Description: Roll back Netprobe on existing EC2 instances by restoring the latest backup using AWS Systems Manager
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
- Label:
default: "Target EC2 Configuration"
Parameters:
- InstanceIds
- Label:
default: "AWS Credentials"
Parameters:
- AWSRegion
- Label:
default: "Netprobe Configuration"
Parameters:
- NetprobeInstallDirectory
ParameterLabels:
InstanceIds:
default: "Target EC2 Instance IDs"
AWSRegion:
default: "AWS Region"
NetprobeInstallDirectory:
default: "Netprobe Installation Directory"
Parameters:
InstanceIds:
Type: CommaDelimitedList
Description: Comma-separated list of existing EC2 Instance IDs
AWSRegion:
Type: String
Description: AWS Region for CLI configuration (e.g., ap-southeast-1, us-west-2)
Default: ap-southeast-1
NetprobeInstallDirectory:
Type: String
Description: Directory where Netprobe was installed
Default: "~/geneos"
Resources:
NetprobeRollbackDocument:
Type: AWS::SSM::Document
Properties:
DocumentType: Command
DocumentFormat: YAML
Content:
schemaVersion: '2.2'
description: Roll back Netprobe by restoring the most recent backup
parameters:
AWSRegion:
type: String
description: AWS Region
NetprobeInstallDirectory:
type: String
description: Netprobe installation directory
mainSteps:
- action: aws:runShellScript
name: rollbackNetprobe
inputs:
timeoutSeconds: '3600'
runCommand:
- |
#!/bin/bash
set -e
echo "=== Starting Netprobe Rollback ==="
# Identify OS and version
echo "--- Identifying OS and version ---"
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$ID
VERSION_ID=$VERSION_ID
elif [ -f /etc/redhat-release ]; then
OS=$(awk '{print tolower($1)}' /etc/redhat-release)
VERSION_ID=$(awk '{print $3}' /etc/redhat-release)
else
echo "ERROR: Unsupported OS"
exit 1
fi
echo "Detected OS: $OS $VERSION_ID"
# Detect default user
if [ "$OS" = "ubuntu" ]; then
DEFAULT_USER="ubuntu"
else
DEFAULT_USER="ec2-user"
fi
echo "Default user: $DEFAULT_USER"
# Check if SSM agent user exists, fallback to detected user
if id "ssm-user" &>/dev/null; then
INSTALL_USER="ssm-user"
else
INSTALL_USER="$DEFAULT_USER"
fi
echo "Installation user: $INSTALL_USER"
# Set default values for optional parameters if they're empty
AWS_REGION="{{AWSRegion}}"
if [ -z "$AWS_REGION" ]; then
AWS_REGION="ap-southeast-1"
fi
export AWS_DEFAULT_REGION="$AWS_REGION"
# Parse the netprobe install directory (handle ~ expansion)
NETPROBE_DIR="{{NetprobeInstallDirectory}}"
if [ -z "$NETPROBE_DIR" ]; then
NETPROBE_DIR="~/geneos"
fi
if [[ "$NETPROBE_DIR" == ~* ]]; then
NETPROBE_DIR=${NETPROBE_DIR:1}
NETPROBE_DIR="/home/$INSTALL_USER$NETPROBE_DIR"
fi
echo "--- Locating latest backup archive ---"
BACKUP_DIR="$NETPROBE_DIR/backup/netprobe"
if [ ! -d "$BACKUP_DIR" ]; then
echo "ERROR: Backup directory '$BACKUP_DIR' not found. Cannot rollback."
exit 1
fi
LATEST_BACKUP=$(ls -1t "$BACKUP_DIR"/netprobe-*.tar.gz 2>/dev/null | head -n 1 || true)
if [ -z "$LATEST_BACKUP" ]; then
echo "ERROR: No backup archives found in '$BACKUP_DIR'. Cannot rollback."
exit 1
fi
echo "Found backup: $LATEST_BACKUP"
echo "--- Stopping netprobe service ---"
sudo systemctl stop netprobe.service || true
echo "--- Removing current netprobe directory ---"
sudo rm -rf "$NETPROBE_DIR/netprobe"
echo "--- Restoring netprobe from backup ---"
sudo tar -xzf "$LATEST_BACKUP" -C "$NETPROBE_DIR"
sudo chown -R $INSTALL_USER:$INSTALL_USER "$NETPROBE_DIR/"
echo "--- Restarting netprobe service ---"
sudo systemctl daemon-reload
sudo systemctl enable netprobe.service || true
sudo systemctl restart netprobe.service || true
sleep 3
if sudo systemctl is-active --quiet netprobe.service; then
echo "SUCCESS: Netprobe service is running after rollback"
else
echo "WARNING: Netprobe service is not active after rollback"
sudo systemctl status netprobe.service || true
fi
echo "=== Netprobe Rollback Complete ==="
NetprobeRollbackByInstanceIds:
Type: AWS::SSM::Association
Properties:
Name: !Ref NetprobeRollbackDocument
Targets:
- Key: InstanceIds
Values: !Ref InstanceIds
Parameters:
AWSRegion:
- !Ref AWSRegion
NetprobeInstallDirectory:
- !Ref NetprobeInstallDirectory
Outputs:
SSMDocumentName:
Description: Name of the SSM Document created for Netprobe rollback
Value: !Ref NetprobeRollbackDocument
Export:
Name: !Sub "${AWS::StackName}-RollbackSSMDocument"
AssociationId:
Description: SSM Association ID for the Netprobe rollback
Value: !Ref NetprobeRollbackByInstanceIds
Export:
Name: !Sub "${AWS::StackName}-RollbackAssociationId"
["Geneos"]
["Geneos > Netprobe"]
["User Guide"]