Skip to content

Commit

Permalink
seperation of concerns
Browse files Browse the repository at this point in the history
  • Loading branch information
RichardTMiles committed Jan 25, 2025
1 parent 4692d80 commit b80c5be
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 41 deletions.
2 changes: 1 addition & 1 deletion .github/assets/shell/getSubnets.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ set -eEBx

# Usage: ./script.sh <VPC_ID> <REGION> <ACCOUNT_ID> <PRIVATE_AZA_SUBNET_BLOCK> <PUBLIC_AZA_SUBNET_BLOCK> <DATA_AZA_SUBNET_BLOCK> ...

if [[ "$#" -ne 12 ]]; then
if [[ "$#" -ne 13 ]]; then
echo "Usage: $0 <VPC_ID> <REGION> <ACCOUNT_ID> <PRIVATE_AZA_SUBNET_BLOCK> <PUBLIC_AZA_SUBNET_BLOCK> <DATA_AZA_SUBNET_BLOCK> <PRIVATE_AZB_SUBNET_BLOCK> <PUBLIC_AZB_SUBNET_BLOCK> <DATA_AZB_SUBNET_BLOCK> <PRIVATE_AZC_SUBNET_BLOCK> <PUBLIC_AZC_SUBNET_BLOCK> <DATA_AZC_SUBNET_BLOCK>"
exit 1
fi
Expand Down
61 changes: 61 additions & 0 deletions .github/assets/shell/setSubnets.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#!/bin/bash

# Input parameters
SUBNET_IDENTIFIER=$1
HIGHLY_AVAILABLE_NAT=$2
ENABLE_VPC_FLOW_LOGS=$3
GITHUB_OUTPUT_FILE=$4

# Validate that SUBNET_IDENTIFIER is a number
if ! [[ "$SUBNET_IDENTIFIER" =~ ^[0-9]+$ ]]; then
echo "Error: subnetIdentifier must be a number."
exit 1
fi

# Convert SUBNET_IDENTIFIER to an integer and validate its range (0-255)
SUBNET_ID=$((SUBNET_IDENTIFIER))
if [[ $SUBNET_ID -lt 0 || $SUBNET_ID -gt 255 ]]; then
echo "Error: subnetIdentifier must be between 0 and 255."
exit 1
fi

# Define VPC and subnet CIDR blocks based on the SUBNET_ID
VPC_CIDR="10.${SUBNET_ID}.0.0/16"
PRIVATE_AZA_SUBNET="10.${SUBNET_ID}.0.0/19"
PUBLIC_AZA_SUBNET="10.${SUBNET_ID}.32.0/20"
DATA_AZA_SUBNET="10.${SUBNET_ID}.48.0/21"
PRIVATE_AZB_SUBNET="10.${SUBNET_ID}.64.0/19"
PUBLIC_AZB_SUBNET="10.${SUBNET_ID}.96.0/20"
DATA_AZB_SUBNET="10.${SUBNET_ID}.112.0/21"
PRIVATE_AZC_SUBNET="10.${SUBNET_ID}.128.0/19"
PUBLIC_AZC_SUBNET="10.${SUBNET_ID}.160.0/20"
DATA_AZC_SUBNET="10.${SUBNET_ID}.176.0/21"

# Ensure GITHUB_OUTPUT_FILE is provided and writable
if [[ -z "$GITHUB_OUTPUT_FILE" ]]; then
echo "Error: GITHUB_OUTPUT file path is required."
exit 1
fi

if [[ ! -w "$GITHUB_OUTPUT_FILE" && ! -e "$GITHUB_OUTPUT_FILE" ]]; then
echo "Error: GITHUB_OUTPUT file does not exist or is not writable."
exit 1
fi

# Output all parameters to the GitHub output file
cat <<EOL >>"$GITHUB_OUTPUT_FILE"
vpcCidrParam=${VPC_CIDR}
privateAZASubnetBlock=${PRIVATE_AZA_SUBNET}
publicAZASubnetBlock=${PUBLIC_AZA_SUBNET}
dataAZASubnetBlock=${DATA_AZA_SUBNET}
privateAZBSubnetBlock=${PRIVATE_AZB_SUBNET}
publicAZBSubnetBlock=${PUBLIC_AZB_SUBNET}
dataAZBSubnetBlock=${DATA_AZB_SUBNET}
privateAZCSubnetBlock=${PRIVATE_AZC_SUBNET}
publicAZCSubnetBlock=${PUBLIC_AZC_SUBNET}
dataAZCSubnetBlock=${DATA_AZC_SUBNET}
highlyAvailableNat=${HIGHLY_AVAILABLE_NAT}
enableVpcFlowLogs=${ENABLE_VPC_FLOW_LOGS}
EOL

echo "Subnet configuration successfully written to $GITHUB_OUTPUT_FILE"
47 changes: 7 additions & 40 deletions .github/workflows/aws.yml
Original file line number Diff line number Diff line change
Expand Up @@ -345,46 +345,13 @@ jobs:
- name: Set AWS Subnet Blocks
id: network
run: |
SUBNET_ID=${{ inputs.subnetIdentifier }}
# Validate SUBNET_ID is a number
if ! [[ "$SUBNET_ID" =~ ^[0-9]+$ ]]; then
echo "Error: subnetIdentifier must be a number."
exit 1
fi
# Convert SUBNET_ID to an integer and check range
SUBNET_ID_INT=$(($SUBNET_ID + 0))
if [[ $SUBNET_ID_INT -lt 0 || $SUBNET_ID_INT -gt 255 ]]; then
echo "Error: subnetIdentifier must be between 0 and 255."
exit 1
fi
VPC_CIDR="10.${SUBNET_ID}.0.0/16"
PRIVATE_AZA_SUBNET="10.${SUBNET_ID}.0.0/19"
PUBLIC_AZA_SUBNET="10.${SUBNET_ID}.32.0/20"
DATA_AZA_SUBNET="10.${SUBNET_ID}.48.0/21"
PRIVATE_AZB_SUBNET="10.${SUBNET_ID}.64.0/19"
PUBLIC_AZB_SUBNET="10.${SUBNET_ID}.96.0/20"
DATA_AZB_SUBNET="10.${SUBNET_ID}.112.0/21"
PRIVATE_AZC_SUBNET="10.${SUBNET_ID}.128.0/19"
PUBLIC_AZC_SUBNET="10.${SUBNET_ID}.160.0/20"
DATA_AZC_SUBNET="10.${SUBNET_ID}.176.0/21"
HIGHLY_AVAILABLE_NAT="${{ inputs.highlyAvailableNat }}"
ENABLE_VPC_FLOW_LOGS="${{ inputs.enableVpcFlowLogs }}"
echo "vpcCidrParam=${VPC_CIDR}" >> $GITHUB_OUTPUT
echo "privateAZASubnetBlock=${PRIVATE_AZA_SUBNET}" >> $GITHUB_OUTPUT
echo "publicAZASubnetBlock=${PUBLIC_AZA_SUBNET}" >> $GITHUB_OUTPUT
echo "dataAZASubnetBlock=${DATA_AZA_SUBNET}" >> $GITHUB_OUTPUT
echo "privateAZBSubnetBlock=${PRIVATE_AZB_SUBNET}" >> $GITHUB_OUTPUT
echo "publicAZBSubnetBlock=${PUBLIC_AZB_SUBNET}" >> $GITHUB_OUTPUT
echo "dataAZBSubnetBlock=${DATA_AZB_SUBNET}" >> $GITHUB_OUTPUT
echo "privateAZCSubnetBlock=${PRIVATE_AZC_SUBNET}" >> $GITHUB_OUTPUT
echo "publicAZCSubnetBlock=${PUBLIC_AZC_SUBNET}" >> $GITHUB_OUTPUT
echo "dataAZCSubnetBlock=${DATA_AZC_SUBNET}" >> $GITHUB_OUTPUT
echo "highlyAvailableNat=${HIGHLY_AVAILABLE_NAT}" >> $GITHUB_OUTPUT
echo "enableVpcFlowLogs=${ENABLE_VPC_FLOW_LOGS}" >> $GITHUB_OUTPUT
set -eEBx
chmod +x ./.github/assets/shell/setSubnets.sh
./.github/assets/shell/setSubnets.sh \
"${{ inputs.subnetIdentifier }}" \
"${{ inputs.highlyAvailableNat }}" \
"${{ inputs.enableVpcFlowLogs }}" \
"$GITHUB_OUTPUT"
- name: Process Regions
id: regions
Expand Down

0 comments on commit b80c5be

Please sign in to comment.