generated from professional-service-best-practices/best-practice-template
89 lines
No EOL
2.9 KiB
Bash
Executable file
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 |