Feat/separate functions (#19)

* chore: work save

* fix: refactor flavors

* fix: refactor pg user and database

* fix: refactor flavor parameters

* fix: refactor tf script

* chore: work save

* chore: work save

* chore: work save

---------

Co-authored-by: Marcel S. Henselin <marcel.henselin@stackit.cloud>
This commit is contained in:
Marcel S. Henselin 2026-01-13 12:19:12 +01:00 committed by GitHub
parent 910551f09d
commit 0150fea302
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
54 changed files with 6010 additions and 2826 deletions

View file

@ -1 +0,0 @@
# see other files

View file

@ -0,0 +1,3 @@
output "postgres_flavor" {
value = data.stackitprivatepreview_postgresflexalpha_flavor.pgsql_flavor.flavor_id
}

View file

@ -0,0 +1,79 @@
data "stackitprivatepreview_postgresflexalpha_flavor" "pgsql_flavor" {
project_id = var.project_id
region = "eu01"
cpu = 2
ram = 4
node_type = "Single"
storage_class = "premium-perf2-stackit"
}
resource "stackitprivatepreview_postgresflexalpha_instance" "msh-sna-pe-example" {
project_id = var.project_id
name = "msh-sna-pe-example"
backup_schedule = "0 0 * * *"
retention_days = 33
flavor_id = data.stackitprivatepreview_postgresflexalpha_flavor.pgsql_flavor.flavor_id
replicas = 1
storage = {
# class = "premium-perf2-stackit"
class = data.stackitprivatepreview_postgresflexalpha_flavor.pgsql_flavor.storage_class
size = 10
}
encryption = {
# key_id = stackit_kms_key.key.key_id
# keyring_id = stackit_kms_keyring.keyring.keyring_id
key_id = var.key_id
keyring_id = var.keyring_id
key_version = var.key_version
service_account = var.sa_email
}
network = {
acl = ["0.0.0.0/0", "193.148.160.0/19", "170.85.2.177/32"]
access_scope = "SNA"
}
version = 14
}
resource "stackitprivatepreview_postgresflexalpha_user" "ptlsdbadminuser" {
project_id = var.project_id
instance_id = stackitprivatepreview_postgresflexalpha_instance.msh-sna-pe-example.instance_id
username = var.db_admin_username
roles = ["createdb", "login"]
# roles = ["createdb", "login", "createrole"]
}
resource "stackitprivatepreview_postgresflexalpha_user" "ptlsdbuser" {
project_id = var.project_id
instance_id = stackitprivatepreview_postgresflexalpha_instance.msh-sna-pe-example.instance_id
username = var.db_username
roles = ["login"]
# roles = ["createdb", "login", "createrole"]
}
resource "stackitprivatepreview_postgresflexalpha_database" "example" {
depends_on = [stackitprivatepreview_postgresflexalpha_user.ptlsdbadminuser]
project_id = var.project_id
instance_id = stackitprivatepreview_postgresflexalpha_instance.msh-sna-pe-example.instance_id
name = var.db_name
owner = var.db_admin_username
}
data "stackitprivatepreview_postgresflexalpha_instance" "datapsql" {
project_id = var.project_id
instance_id = var.instance_id
region = "eu01"
}
output "psql_instance_id" {
value = data.stackitprivatepreview_postgresflexalpha_instance.datapsql.instance_id
}
output "psql_user_password" {
value = stackitprivatepreview_postgresflexalpha_user.ptlsdbuser.password
sensitive = true
}
output "psql_user_conn" {
value = stackitprivatepreview_postgresflexalpha_user.ptlsdbuser.connection_string
sensitive = true
}

View file

@ -20,5 +20,5 @@ terraform {
provider "stackitprivatepreview" {
default_region = "eu01"
enable_beta_resources = true
service_account_key_path = "./service_account.json"
service_account_key_path = "../service_account.json"
}

View file

@ -1,38 +0,0 @@
resource "stackitprivatepreview_postgresflexalpha_instance" "ptlsdbsrv" {
project_id = var.project_id
name = "pgsql-example-instance"
backup_schedule = "0 0 * * *"
retention_days = 33
flavor = {
cpu = 2
ram = 4
}
replicas = 1
storage = {
class = "premium-perf2-stackit"
size = 5
}
encryption = {
# key_id = stackit_kms_key.key.key_id
# keyring_id = stackit_kms_keyring.keyring.keyring_id
key_id = var.key_id
keyring_id = var.keyring_id
key_version = var.key_version
service_account = var.sa_email
}
network = {
acl = ["0.0.0.0/0", "193.148.160.0/19"]
access_scope = "SNA"
}
version = 14
}
# data "stackitprivatepreview_postgresflexalpha_instance" "datapsql" {
# project_id = var.project_id
# instance_id = "fdb6573e-2dea-4e1d-a638-9157cf90c3ba"
# region = "eu01"
# }
#
# output "sample_psqlinstance" {
# value = data.stackitprivatepreview_postgresflexalpha_instance.datapsql
# }

View file

@ -0,0 +1,12 @@
data "stackitprivatepreview_sqlserverflexalpha_flavor" "sqlserver_flavor" {
project_id = var.project_id
region = "eu01"
cpu = 4
ram = 16
node_type = "Single"
storage_class = "premium-perf2-stackit"
}
output "sqlserver_flavor" {
value = data.stackitprivatepreview_sqlserverflexalpha_flavor.sqlserver_flavor.flavor_id
}

View file

@ -0,0 +1,24 @@
terraform {
required_providers {
# stackit = {
# source = "registry.terraform.io/stackitcloud/stackit"
# version = "~> 0.70"
# }
stackitprivatepreview = {
source = "registry.terraform.io/mhenselin/stackitprivatepreview"
version = "~> 0.1"
}
}
}
# provider "stackit" {
# default_region = "eu01"
# enable_beta_resources = true
# service_account_key_path = "./service_account.json"
# }
provider "stackitprivatepreview" {
default_region = "eu01"
enable_beta_resources = true
service_account_key_path = "../service_account.json"
}

View file

@ -18,42 +18,12 @@
# value = stackit_kms_key.key.key_id
# }
# resource "stackitalpha_postgresflexalpha_instance" "ptlsdbsrv" {
# project_id = var.project_id
# name = "example-instance"
# acl = ["0.0.0.0/0"]
# backup_schedule = "0 0 * * *"
# flavor = {
# cpu = 2
# ram = 4
# }
# replicas = 1
# storage = {
# class = "premium-perf2-stackit"
# size = 5
# }
# version = 14
# encryption = {
# key_id = stackitalpha_kms_key.key.id
# keyring_id = stackitalpha_kms_keyring.keyring.keyring_id
# key_version = "1"
# service_account = var.sa_email
# }
# network = {
# access_scope = "SNA"
# }
# }
resource "stackitprivatepreview_sqlserverflexalpha_instance" "ptlsdbsqlsrv" {
resource "stackitprivatepreview_sqlserverflexalpha_instance" "sqlsrv" {
project_id = var.project_id
name = "msh-example-instance-002"
backup_schedule = "0 3 * * *"
retention_days = 31
flavor = {
cpu = 4
ram = 16
node_type = "Single"
}
flavor_id = data.stackitprivatepreview_sqlserverflexalpha_flavor.sqlserver_flavor.flavor_id
storage = {
class = "premium-perf2-stackit"
size = 50
@ -73,28 +43,27 @@ resource "stackitprivatepreview_sqlserverflexalpha_instance" "ptlsdbsqlsrv" {
}
}
# data "stackitalpha_sqlserverflexalpha_instance" "test" {
# data "stackitprivatepreview_sqlserverflexalpha_instance" "test" {
# project_id = var.project_id
# instance_id = var.instance_id
# region = "eu01"
# }
# output "test" {
# value = data.stackitalpha_sqlserverflexalpha_instance.test
# value = data.stackitprivatepreview_sqlserverflexalpha_instance.test
# }
# data "stackitalpha_sqlserverflexalpha_user" "testuser" {
# project_id = var.project_id
# instance_id = var.instance_id
# region = "eu01"
# }
resource "stackitprivatepreview_sqlserverflexalpha_user" "ptlsdbadminuser" {
project_id = var.project_id
instance_id = stackitprivatepreview_sqlserverflexalpha_instance.sqlsrv.instance_id
username = var.db_admin_username
roles = ["##STACKIT_LoginManager##", "##STACKIT_DatabaseManager##"]
}
resource "stackitprivatepreview_sqlserverflexalpha_user" "ptlsdbuser" {
project_id = var.project_id
instance_id = stackitprivatepreview_sqlserverflexalpha_instance.sqlsrv.instance_id
username = var.db_username
roles = ["##STACKIT_LoginManager##"]
}
# data "stackitprivatepreview_sqlserverflexalpha_instance" "existing" {
# project_id = var.project_id
# instance_id = "b31575e9-9dbd-4ff6-b341-82d89c34f14f"
# region = "eu01"
# }
#
# output "myinstance" {
# value = data.stackitprivatepreview_sqlserverflexalpha_instance.existing
# }

View file

@ -0,0 +1,11 @@
variable "project_id" {
default = "<PROJECT ID UUID>"
}
variable "sa_email" {
default = "<SERVICE ACCOUNT EMAIL>"
}
variable "db_username" {
default = "<DB USERNAME>"
}

View file

@ -3,28 +3,44 @@
# ./tf.sh apply > >(tee -a stdout.log) 2> >(tee -a stderr.log >&2)
# copy or rename sample.tfrc.example and adjust it
TERRAFORM_CONFIG=$(pwd)/sample.tfrc
export TERRAFORM_CONFIG
usage() {
echo "$0 usage:" && grep "[[:space:]].)\ #" "$0" | sed 's/#//' | sed -r 's/([a-z])\)/-\1/';
exit 0;
}
parsed_options=$(
getopt -n "$0" -o dil -- "$@"
) || exit
eval "set -- $parsed_options"
while [ "$#" -gt 0 ]; do
case $1 in
(-d) TF_LOG=DEBUG
export TF_LOG
shift;;
(-i) TF_LOG=INFO
export TF_LOG
shift;;
(-t) TF_LOG=TRACE
export TF_LOG
shift;;
(--) shift; break;;
(*) echo "Unknown option ${1}" # should never be reached.
[ $# -eq 0 ] && usage
CONFIG_FOLDER=$(dirname "$0")
BINARY=terraform
while getopts ":b:hdit" arg; do
case $arg in
b) # Set binary (default is terraform).
BINARY=${OPTARG}
shift 2
;;
d) # Set log level to DEBUG.
TF_LOG=DEBUG
export TF_LOG
shift
;;
i) # Set log level to INFO.
TF_LOG=INFO
export TF_LOG
shift
;;
t) # Set log level to TRACE.
TF_LOG=TRACE
export TF_LOG
shift
;;
h | *) # Display help.
usage
;;
esac
done
terraform "$*"
TERRAFORM_CONFIG=${CONFIG_FOLDER}/config.tfrc
export TERRAFORM_CONFIG
${BINARY} "$@"

View file

@ -1,24 +0,0 @@
#!/usr/bin/env bash
# ./tofu.sh apply > >(tee -a stdout.log) 2> >(tee -a stderr.log >&2)
# copy or rename sample.tfrc.example and adjust it
TERRAFORM_CONFIG=$(pwd)/sample.tfrc
export TERRAFORM_CONFIG
parsed_options=$(
getopt -n "$0" -o l -- "$@"
) || exit
eval "set -- $parsed_options"
while [ "$#" -gt 0 ]; do
case $1 in
(-l) TF_LOG=TRACE
export TF_LOG
shift;;
(--) shift; break;;
(*) echo "Unknown option ${1}" # should never be reached.
esac
done
tofu "$*"

View file

@ -1,20 +0,0 @@
# data "stackitprivatepreview_postgresflexalpha_user" "example" {
# project_id = stackitprivatepreview_postgresflexalpha_instance.ptlsdbsrv.project_id
# instance_id = stackitprivatepreview_postgresflexalpha_instance.ptlsdbsrv.instance_id
# user_id = 1
# }
#
# resource "stackitprivatepreview_postgresflexalpha_user" "ptlsdbuser" {
# project_id = stackitprivatepreview_postgresflexalpha_instance.ptlsdbsrv.project_id
# instance_id = stackitprivatepreview_postgresflexalpha_instance.ptlsdbsrv.instance_id
# username = var.db_username
# roles = ["createdb", "login"]
# # roles = ["createdb", "login", "createrole"]
# }
#
# resource "stackitprivatepreview_sqlserverflexalpha_user" "ptlsdbuser" {
# project_id = stackitprivatepreview_sqlserverflexalpha_instance.ptlsdbsqlsrv.project_id
# instance_id = stackitprivatepreview_sqlserverflexalpha_instance.ptlsdbsqlsrv.instance_id
# username = var.db_username
# roles = ["login"]
# }