stackit-service-prefixes/create_rt_tf.sh
Markus Brunsch 63d5f3e346
All checks were successful
CI / Check License Header (push) Successful in 4s
CI / TruffleHog Secrets Scan (push) Successful in 5s
CI / Terraform CI (push) Successful in 8s
Update create_rt_tf.sh
2025-11-19 16:27:11 +01:00

89 lines
No EOL
2.9 KiB
Bash
Executable file

#
# Copyright 2025 STACKIT GmbH & Co. KG <markus.brunsch@stackit.cloud>
#
# Use of this source code is governed by an MIT-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/MIT.
#
# Script to generate a SKE Routing Table as Terraform Code
#
# Remove duplicate entries
if [[ $1 == "ske" ]]; then
cat eu01-stackit-ske.txt > ske_lb_s3_ips_uncleaned.tmp.txt
echo "" | cat - eu01-stackit-lb.txt >> ske_lb_s3_ips_uncleaned.tmp.txt
echo "" | cat - eu01-stackit-s3.txt >> ske_lb_s3_ips_uncleaned.tmp.txt
sort -u ske_lb_s3_ips_uncleaned.tmp.txt -o ske-routing-table-tmp.tf
elif [[ $1 == "lb" ]]; then
sort -u eu01-stackit-lb.txt -o ske-routing-table-tmp.tf
elif [[ $1 == "s3" ]]; then
sort -u eu01-stackit-s3.txt -o ske-routing-table-tmp.tf
else
echo "Provider parameter ske, lb or s3"
exit 0
fi
# Remove last linebreak
truncate -s -1 ske-routing-table-tmp.tf
# Prepare Regex
sed -i -E 's/$/9/g' ske-routing-table-tmp.tf
sed -i -E 's/^/9/g' ske-routing-table-tmp.tf
# Replacing start
sed -i -E 's/^[0-9]/resource \"stackit_routing_table_route\" \"routing-table-ske\" {\n organization_id = var.stackit_org_id\n network_area_id = var.stackit_sna_id\n routing_table_id = stackit_routing_table.rt-ske.routing_table_id\n destination = {\n type = \"cidrv4\"\n value = \"/g' ske-routing-table-tmp.tf
# Replace Ending
sed -i -E 's/[0-9]$/\/32\"\n }\n next_hop = {\n type = \"internet\"\n }\n}/g' ske-routing-table-tmp.tf
# Set Counter for Routes
perl -p -i -e 's/routing-table-ske/"rt-ske-".++$i/ge' ske-routing-table-tmp.tf
# Add Routing Table Header & Routes for Default Internet via Hub & Direct DNS connection
echo '/*
Copyright 2025 STACKIT GmbH & Co. KG <markus.brunsch@stackit.cloud>
Use of this source code is governed by an MIT-style
license that can be found in the LICENSE file or at
https://opensource.org/licenses/MIT.
*/
resource "stackit_routing_table" "rt-ske" {
organization_id = var.stackit_org_id
network_area_id = var.stackit_sna_id
name = "${var.routing_table_name}"
system_routes = false
}
resource "stackit_routing_table_route" "ske-internet" {
organization_id = var.stackit_org_id
network_area_id = var.stackit_sna_id
routing_table_id = stackit_routing_table.rt-ske.routing_table_id
destination = {
type = "cidrv4"
value = "0.0.0.0/0"
}
next_hop = {
type = "ipv4"
value = var.default_gateway
}
}
resource "stackit_routing_table_route" "ske-dns" {
organization_id = var.stackit_org_id
network_area_id = var.stackit_sna_id
routing_table_id = stackit_routing_table.rt-ske.routing_table_id
destination = {
type = "cidrv4"
value = "${var.dns_server}/32"
}
next_hop = {
type = "internet"
}
}' > main.tf
cat ske-routing-table-tmp.tf >> main.tf
# Cleanup
terraform fmt
rm ske-routing-table-tmp.tf
rm ske-routing-table-tmp.tf-E
rm ske_lb_s3_ips_uncleaned.tmp.txt