diff --git a/clouds/common/lib.sh.inc b/clouds/common/lib.sh.inc
index 64611f7ba93b8421a2d17d9f6910aebf74452c4c..00a4bdc26eaf6b21cfd5bd6710de243804506a4f 100644
--- a/clouds/common/lib.sh.inc
+++ b/clouds/common/lib.sh.inc
@@ -8,7 +8,7 @@ function report_tools() {
     local commands=("openstack --version" "bash --version" "awk -W version"
         "ssh -V" "which ssh-keygen" "ncat --version" "grep --version" )
     local err_cnt=0
-    for i_cmd in "${commands[@]}"; do
+    for i_cmd in "${commands[@]}" "$@"; do
         echo "${i_cmd}:"
         ${i_cmd} |& head -1 | awk '{print "  " $0}'
         [ "${PIPESTATUS[0]}" != "0" ] && let "err_cnt++"
@@ -165,12 +165,19 @@ function log_section_keypress() {
 }
 
 function is_personal_project() {
-    local project_id="$(openstack application credential show ${OS_APPLICATION_CREDENTIAL_ID} -f value -c project_id)"
-    local user_id="$(openstack application credential show ${OS_APPLICATION_CREDENTIAL_ID} -f value -c user_id)"
-    local project_name="$(openstack project show "${project_id}" -fvalue -c name)"
-    local user_name="$(openstack user show "${user_id}" -fvalue -c name)"
-    echo "${project_name}"
-    test "${project_name}" == "${user_name}"
+    if [ -n "${OS_APPLICATION_CREDENTIAL_ID}" ]; then
+        local project_id="$(openstack application credential show ${OS_APPLICATION_CREDENTIAL_ID} -f value -c project_id)"
+        local user_id="$(openstack application credential show ${OS_APPLICATION_CREDENTIAL_ID} -f value -c user_id)"
+        local project_name="$(openstack project show "${project_id}" -fvalue -c name)"
+        local user_name="$(openstack user show "${user_id}" -fvalue -c name)"
+        echo "${project_name}"
+        [[ "${project_name}" == "${user_name}" && "${user_name}" =~ [a-fA-F0-9]+@[a-z.]+ ]]
+    elif [ -n "${OS_USERNAME}" -a -n "${OS_PROJECT_NAME}" ]; then
+        echo "${OS_PROJECT_NAME}"
+        [[ "${OS_PROJECT_NAME}" == "${OS_USERNAME}" && "${OS_USERNAME}" =~ [a-fA-F0-9]+@[a-z.]+ ]]
+    else
+        return 2
+    fi
 }
 
 function myexit() {
diff --git a/clouds/g2/ostrava/general/commandline/cmdline-demo.sh b/clouds/g2/ostrava/general/commandline/cmdline-demo.sh
index bf665597be03aa1f186bc9c8706c1d8e2f574de0..d9ee9f4b0f2e08abdb9b226c39d6d7aadd3d0391 100755
--- a/clouds/g2/ostrava/general/commandline/cmdline-demo.sh
+++ b/clouds/g2/ostrava/general/commandline/cmdline-demo.sh
@@ -95,8 +95,8 @@ if [ "${project_type}" == "group" ]; then
   NETWORK_ID=$(openstack network show "${NETWORK_NAME}" -f value -c id)
   openstack subnet create "${SUBNET_NAME}" --network "${NETWORK_ID}" --subnet-range "${SUBNET_CIDR}" --dns-nameserver 8.8.4.4 --dns-nameserver 8.8.8.8
 else
-  log_section_keypress "Re-use existing network (${NETWORK_NAME}) and subnet (${SUBNET_NAME})"
   NETWORK_ID=$(openstack network show "${NETWORK_NAME}" -f value -c id)
+  log_section_keypress "Re-use existing network (${NETWORK_NAME}) and subnet (${SUBNET_NAME})"
 fi
 # ---------------------------------------------------------------------------
 
diff --git a/clouds/g2/ostrava/general/terraform/README.md b/clouds/g2/ostrava/general/terraform/README.md
index 90ae2fa1eefdfee911d63524570f10cacb30028c..a69aac4e7c67d10a3e0b6aa1545256c60462f6ab 100644
--- a/clouds/g2/ostrava/general/terraform/README.md
+++ b/clouds/g2/ostrava/general/terraform/README.md
@@ -1,39 +1,56 @@
 # Terraform demonstration
 
-This Terraform module creates up to two kind of VMs:
- - public facing small bastion VM
- - private VM farm
-
-Cloud-init add following:
- - Add ssh keys, disable SSH password auth
- - Create partition and filesystemand mount extra data from extra volume
+This Terraform module is able to demonstrate creation of two most used cloud infrastructure patterns:
 
-## Infrastructure schema
+## Two tier infrastructure: public bastion and private VM farm
 
-### Two tier infrastructure: public bastion and private VM farm
+Infrastructure consist of:
+ - public facing small bastion VM (sometimes called as jump VM)
+ - private VM farm
 
 ![two-tier-infra.png](/clouds/common/pictures/two-tier-infra.png)
 
-### Single tier infrastructure: public VM farm
+## Single tier infrastructure i.e. public facing VM farm
+
+Infrastructure consist of:
+ - public facing VM farm
 
 ![single-tier-infra.png](/clouds/common/pictures/single-tier-infra.png)
 
-## Create Infrastructure
+
+## Cloud VM configuration during system boot using cloud-init
+Terraform demonstrates [how to configure VM servers on creation with cloud-init](modules/common/nodes-cloudinit.txt):
+ - Add ssh keys, disable SSH password auth
+ - Create partition and filesystemand mount extra data from extra volume
+
+## Handling different project restrictions (quotas, shared networks, ...)
+
+e-INFRA.CZ OpenStack cloud distinguishes between two project types: personal and group
+([more the topic](https://docs.e-infra.cz/compute/openstack/technical-reference/brno-site/get-access/#personal-project)).
+Terraform demo code with additional variable file [`personal-projects.tfvars`](./personal-projects.tfvars) shows how to support both project types i.e. how to parametrize infrastructure definition with minimal code duplications.
+
+There is thin terraform wrapper [`terraform.sh`](./terraform.sh) abstracting the fact which project type you are on. It is not necessary to use the [`terraform.sh`](./terraform.sh) wrapper when you keep in mind that additional terraform variables file [`personal-projects.tfvars`](./personal-projects.tfvars) has to be passed at plan step when you are on personal project.
+
+## Using the terraform demo
 
 1. Clone the repository.
 1. Load you OpenStack application credentials to environment variables `source project_openrc.sh.inc`
-1. Override any infrastructure variables in [main.tf](main.tf) file if needed. Full set of variables can be found in [modules/2tier_public_bastion_private_vm_farm/variables.tf](modules/2tier_public_bastion_private_vm_farm/variables.tf) or [modules/1tier-public-vm-farm/variables.tf](modules/1tier-public-vm-farm/variables.tf).
-1. In the [terraform root directory](/clouds/g1/brno/general/terraform) run following commands to initiate and validate environment
-   * `terraform init`
-   * `terraform validate`
+1. Override any infrastructure variables in [main.tf](main.tf) file if needed. Full set of variables can be found in [modules/common/variables.tf](modules/common/variables.tf).
+1. In the [terraform root directory](/clouds/g2/ostrava/general/terraform) run following commands to initiate and validate environment
+   * `./terraform.sh validate-tools`
+   * `./terraform.sh detect-cloud`
+   * `./terraform.sh detect-project`
+   * `./terraform.sh init`
+   * `./terraform.sh validate`
 1. In the [same directory](/clouds/g2/ostrava/general/terraform) run commands to deploy cloud infrastructure
-   * `terraform plan --out plan`
-   * `terraform apply plan`
+   * `./terraform.sh plan --out plan`
+   * `./terraform.sh apply plan`
 1. Once you need to change the infrastructure, first modify the infrastructure declaration and repeat above steps to deploy changes.
-1. Similarly for resource teardown, once you want to clean-up cloud resources issue `terraform destroy`.
+1. Cloud resources can be deleted with `./terraform.sh destroy`.
 
+> You may use terraform directly without the [`terraform.sh`](./terraform.sh) wrapper, but then keep in your mind that just for personal project type you should pass additional variable file [`personal-projects.tfvars`](./personal-projects.tfvars) at plan step (i.e. `terraform plan --out personal-project.plan --var-file=personal-projects.tfvars`)
 
-Detailed terminal transcript can be found in [terminal-transcript.log](./terminal-transcript.log).
+Detailed terminal transcripts show how to run terraform demo inside personal project ([with](./terraform-2tier_public_bastion_private_vm_farm-personal-project-wrapper.log) / [without the wrapper](./terraform-2tier_public_bastion_private_vm_farm-personal-project-no-wrapper.log)) as well as under group project([with](./terraform-2tier_public_bastion_private_vm_farm-group-project-wrapper.log) / [without the wrapper](./terraform-2tier_public_bastion_private_vm_farm-group-project-no-wrapper.log)).
 
 
 ## Access to the VM nodes
diff --git a/clouds/g2/ostrava/general/terraform/main.tf b/clouds/g2/ostrava/general/terraform/main.tf
index 6d7d02fb127a27b8ab7bfa0370890776f64d6744..08a4e6741d260b529be1621c3cff814fb528f79d 100644
--- a/clouds/g2/ostrava/general/terraform/main.tf
+++ b/clouds/g2/ostrava/general/terraform/main.tf
@@ -3,6 +3,8 @@ terraform {
 }
 
 module "toplevel" {
+  # infrastructure type:
+  # -------------------------------------------------------------------------
   # two tier infrastructure (2tier_public_bastion_private_vm_farm module):
   # * single public facing tiny bastion VM
   # * <nodes_count> private HPC VM farm
@@ -18,4 +20,14 @@ module "toplevel" {
   nodes_image             = "ubuntu-jammy-x86_64"
   public_external_network = "external-ipv4-general-public"
   nodes_extra_volume_size = 0  # extra volume size in GB
+
+  # OpenStack project type:
+  # -------------------------------------------------------------------------
+  # root variables wired 1:1 to "toplevel" module to be able to toggle between
+  # group and personal project infrastructure
+  router_creation_enable           = var.router_creation_enable
+  internal_network_creation_enable = var.internal_network_creation_enable
+  internal_network_name            = var.internal_network_name
+  internal_subnet_creation_enable  = var.internal_subnet_creation_enable
+  internal_subnet_name             = var.internal_subnet_name
 }
diff --git a/clouds/g2/ostrava/general/terraform/modules/1tier_public_vm_farm/variables.tf b/clouds/g2/ostrava/general/terraform/modules/1tier_public_vm_farm/variables.tf
deleted file mode 100644
index 9cc600610c1a8b2696a7de7a5f0af64d722c8603..0000000000000000000000000000000000000000
--- a/clouds/g2/ostrava/general/terraform/modules/1tier_public_vm_farm/variables.tf
+++ /dev/null
@@ -1,81 +0,0 @@
-variable "infra_name" {
-  description = "Infrastructure (profile) name. Used as a name prefix. Must match [a-zA-Z0-9-]+ regexp."
-  default     = "general-tf-demo"
-}
-
-variable "ssh_public_key" {
-  default = "~/.ssh/id_rsa.pub"
-}
-
-
-#########################
-# master nodes settings #
-#########################
-
-variable "nodes_count" {
-  default = 1
-}
-
-variable "nodes_name" {
-  description = "Name of the nodes. Must match [a-zA-Z0-9-]+ regexp."
-  default = "server"
-}
-
-variable "bastion_name" {
-  description = "Name of the bastion VM. Must match [a-zA-Z0-9-]+ regexp."
-  default = "bastion-server"
-}
-
-variable "bastion_flavor" {
-  default = "standard.small"
-}
-
-variable "nodes_flavor" {
-  default = "standard.large"
-}
-
-
-variable "int_network" {
-  description = "Internal network address, use CIDR notation"
-  default     = "10.10.10.0/24"
-}
-
-variable "public_external_network" {
-  description = "Cloud public external network pool"
-  default     = "public-cesnet-195-113-167-GROUP"
-}
-
-
-variable "bastion_image" {
-  description = "Bastion OS: Image name"
-  default     = "ubuntu-jammy-x86_64"
-}
-
-variable "nodes_image" {
-  description = "nodes OS: Image name"
-  default     = "ubuntu-jammy-x86_64"
-}
-
-variable "bastion_ssh_user_name" {
-  default = "ubuntu"
-}
-
-variable "nodes_ssh_user_name" {
-  default = "ubuntu"
-}
-
-
-variable "nodes_volume_size" {
-  description = "The size of the volume to create (in gigabytes) for root filesystem. "
-  default     = "10"
-}
-
-variable "nodes_extra_volume_size" {
-  description = "The size of the volume to create (in gigabytes) for extra data. 0 to disable extra volume."
-  default     = "10"
-}
-
-variable "nodes_extra_volume_type" {
-  description = "The type of extra volume."
-  default     = null
-}
diff --git a/clouds/g2/ostrava/general/terraform/modules/1tier_public_vm_farm/variables.tf b/clouds/g2/ostrava/general/terraform/modules/1tier_public_vm_farm/variables.tf
new file mode 120000
index 0000000000000000000000000000000000000000..72202b3e76544e476d963b935ac4b724149c5504
--- /dev/null
+++ b/clouds/g2/ostrava/general/terraform/modules/1tier_public_vm_farm/variables.tf
@@ -0,0 +1 @@
+../common/variables.tf
\ No newline at end of file
diff --git a/clouds/g2/ostrava/general/terraform/modules/2tier_public_bastion_private_vm_farm/bastion-instance.tf b/clouds/g2/ostrava/general/terraform/modules/2tier_public_bastion_private_vm_farm/bastion-instance.tf
index 4aad5371fd76a15e0567960432230daa9980482e..66920b6f84312fdfeee8f96f31d301f3d715f9a7 100644
--- a/clouds/g2/ostrava/general/terraform/modules/2tier_public_bastion_private_vm_farm/bastion-instance.tf
+++ b/clouds/g2/ostrava/general/terraform/modules/2tier_public_bastion_private_vm_farm/bastion-instance.tf
@@ -7,7 +7,7 @@ resource "openstack_compute_instance_v2" "bastion" {
   user_data       = "#cloud-config\nhostname: ${var.infra_name}-${var.bastion_name}.local\n${file("${path.module}/bastion-cloudinit.txt")}"
 
   network {
-    uuid = openstack_networking_network_v2.network_default.id
+    uuid = var.internal_network_creation_enable ? openstack_networking_network_v2.network_default[0].id : data.openstack_networking_network_v2.internal_shared_personal_network[0].id
     port = openstack_networking_port_v2.bastion_port.id
   }
 }
diff --git a/clouds/g2/ostrava/general/terraform/modules/2tier_public_bastion_private_vm_farm/bastion-networks.tf b/clouds/g2/ostrava/general/terraform/modules/2tier_public_bastion_private_vm_farm/bastion-networks.tf
index c7962e107fc13a10755d1ef22494f94e05fbf205..bca943b25f13fee8e6ed4e15e66491eb9f9d2989 100644
--- a/clouds/g2/ostrava/general/terraform/modules/2tier_public_bastion_private_vm_farm/bastion-networks.tf
+++ b/clouds/g2/ostrava/general/terraform/modules/2tier_public_bastion_private_vm_farm/bastion-networks.tf
@@ -11,10 +11,10 @@ resource "openstack_compute_floatingip_associate_v2" "bastion_fip_associate" {
 # Ports
 resource "openstack_networking_port_v2" "bastion_port" {
   name               = "${var.infra_name}-${var.bastion_name}-port"
-  network_id         = openstack_networking_network_v2.network_default.id
+  network_id         = var.internal_network_creation_enable ? openstack_networking_network_v2.network_default[0].id : data.openstack_networking_network_v2.internal_shared_personal_network[0].id
   admin_state_up     = "true"
   security_group_ids = [openstack_networking_secgroup_v2.secgroup_default.id]
   fixed_ip {
-    subnet_id = openstack_networking_subnet_v2.subnet_default.id
+    subnet_id = var.internal_subnet_creation_enable ? openstack_networking_subnet_v2.subnet_default[0].id : data.openstack_networking_subnet_v2.internal_shared_personal_subnet[0].id
   }
 }
diff --git a/clouds/g2/ostrava/general/terraform/modules/2tier_public_bastion_private_vm_farm/variables.tf b/clouds/g2/ostrava/general/terraform/modules/2tier_public_bastion_private_vm_farm/variables.tf
deleted file mode 100644
index b30728900968eb59ffc42a9f94b26dca5158ea77..0000000000000000000000000000000000000000
--- a/clouds/g2/ostrava/general/terraform/modules/2tier_public_bastion_private_vm_farm/variables.tf
+++ /dev/null
@@ -1,81 +0,0 @@
-variable "infra_name" {
-  description = "Infrastructure (profile) name. Used as a name prefix. Must match [a-zA-Z0-9-]+ regexp."
-  default     = "general-tf-demo"
-}
-
-variable "ssh_public_key" {
-  default = "~/.ssh/id_rsa.pub"
-}
-
-
-#########################
-# master nodes settings #
-#########################
-
-variable "nodes_count" {
-  default = 1
-}
-
-variable "nodes_name" {
-  description = "Name of the nodes. Must match [a-zA-Z0-9-]+ regexp."
-  default = "server"
-}
-
-variable "bastion_name" {
-  description = "Name of the bastion VM. Must match [a-zA-Z0-9-]+ regexp."
-  default = "bastion-server"
-}
-
-variable "bastion_flavor" {
-  default = "standard.small"
-}
-
-variable "nodes_flavor" {
-  default = "standard.large"
-}
-
-
-variable "int_network" {
-  description = "Internal network address, use CIDR notation"
-  default     = "10.10.10.0/24"
-}
-
-variable "public_external_network" {
-  description = "Cloud public external network pool"
-  default     = "public-cesnet-195-113-167-GROUP"
-}
-
-
-variable "bastion_image" {
-  description = "Bastion OS: Image name"
-  default     = "ubuntu-jammy-x86_64"
-}
-
-variable "nodes_image" {
-  description = "nodes OS: Image name"
-  default     = "ubuntu-jammy-x86_64"
-}
-
-variable "bastion_ssh_user_name" {
-  default = "ubuntu"
-}
-
-variable "nodes_ssh_user_name" {
-  default = "ubuntu"
-}
-
-
-variable "nodes_volume_size" {
-  description = "The size of the volume to create (in gigabytes) for root filesystem. "
-  default     = "10"
-}
-
-variable "nodes_extra_volume_size" {
-  description = "The size of the volume to create (in gigabytes) for extra data."
-  default     = "10"
-}
-
-variable "nodes_extra_volume_type" {
-  description = "The type of extra volume."
-  default     = null
-}
diff --git a/clouds/g2/ostrava/general/terraform/modules/2tier_public_bastion_private_vm_farm/variables.tf b/clouds/g2/ostrava/general/terraform/modules/2tier_public_bastion_private_vm_farm/variables.tf
new file mode 120000
index 0000000000000000000000000000000000000000..72202b3e76544e476d963b935ac4b724149c5504
--- /dev/null
+++ b/clouds/g2/ostrava/general/terraform/modules/2tier_public_bastion_private_vm_farm/variables.tf
@@ -0,0 +1 @@
+../common/variables.tf
\ No newline at end of file
diff --git a/clouds/g2/ostrava/general/terraform/modules/common/instances.tf b/clouds/g2/ostrava/general/terraform/modules/common/instances.tf
index 82aa9fe251287cd0f36b4f56944e4f8768d51c55..1e93d03e7298014f15629bb29ffc33c79acf7f0d 100644
--- a/clouds/g2/ostrava/general/terraform/modules/common/instances.tf
+++ b/clouds/g2/ostrava/general/terraform/modules/common/instances.tf
@@ -16,7 +16,7 @@ resource "openstack_compute_instance_v2" "nodes" {
   user_data       = "#cloud-config\nhostname: ${var.infra_name}-${var.nodes_name}-${count.index+1}.local\n${file("${path.module}/nodes-cloudinit.txt")}"
 
   network {
-    uuid = openstack_networking_network_v2.network_default.id
+    uuid = var.internal_network_creation_enable ? openstack_networking_network_v2.network_default[0].id : data.openstack_networking_network_v2.internal_shared_personal_network[0].id
     port = element(openstack_networking_port_v2.nodes_ports.*.id, count.index)
   }
 
diff --git a/clouds/g2/ostrava/general/terraform/modules/common/networks.tf b/clouds/g2/ostrava/general/terraform/modules/common/networks.tf
index 641864a441b6ac575051de8b6cc92338cec3aaaf..0ea32e1ea70ad712c299da7e5d7f16d54b6836f3 100644
--- a/clouds/g2/ostrava/general/terraform/modules/common/networks.tf
+++ b/clouds/g2/ostrava/general/terraform/modules/common/networks.tf
@@ -1,12 +1,14 @@
 resource "openstack_networking_network_v2" "network_default" {
+  count          = var.internal_network_creation_enable ? 1 : 0
   name           = "${var.infra_name}_network"
   admin_state_up = "true"
 }
 
 resource "openstack_networking_subnet_v2" "subnet_default" {
+  count           = var.internal_subnet_creation_enable ? 1 : 0
   name            = "${var.infra_name}_subnet"
-  network_id      = openstack_networking_network_v2.network_default.id
-  cidr            = var.int_network
+  network_id      = openstack_networking_network_v2.network_default[0].id
+  cidr            = var.internal_network_cidr
   ip_version      = 4
   dns_nameservers = ["1.1.1.1", "8.8.8.8"]
 }
@@ -15,24 +17,36 @@ data "openstack_networking_network_v2" "external_network" {
   name = var.public_external_network
 }
 
+data "openstack_networking_network_v2" "internal_shared_personal_network" {
+  count = var.internal_network_creation_enable == false ? 1 : 0
+  name = var.internal_network_name
+}
+
+data "openstack_networking_subnet_v2" "internal_shared_personal_subnet" {
+  count = var.internal_subnet_creation_enable == false ? 1 : 0
+  name  = var.internal_subnet_name
+}
+
 resource "openstack_networking_router_v2" "router_default" {
+  count               = var.router_creation_enable ? 1 : 0
   name                = "${var.infra_name}_infra-test"
   admin_state_up      = "true"
   external_network_id = data.openstack_networking_network_v2.external_network.id
 }
 
 resource "openstack_networking_router_interface_v2" "router_default_interface" {
-  router_id = openstack_networking_router_v2.router_default.id
-  subnet_id = openstack_networking_subnet_v2.subnet_default.id
+  count     = var.router_creation_enable ? 1 : 0
+  router_id = openstack_networking_router_v2.router_default[0].id
+  subnet_id = openstack_networking_subnet_v2.subnet_default[0].id
 }
 
 resource "openstack_networking_port_v2" "nodes_ports" {
   count              = var.nodes_count
   name               = "${var.infra_name}_${var.nodes_name}_port_${count.index+1}"
-  network_id         = openstack_networking_network_v2.network_default.id
+  network_id         = var.internal_network_creation_enable ? openstack_networking_network_v2.network_default[0].id : data.openstack_networking_network_v2.internal_shared_personal_network[0].id
   admin_state_up     = "true"
   security_group_ids = [openstack_networking_secgroup_v2.secgroup_default.id]
   fixed_ip {
-    subnet_id = openstack_networking_subnet_v2.subnet_default.id
+    subnet_id = var.internal_subnet_creation_enable ? openstack_networking_subnet_v2.subnet_default[0].id : data.openstack_networking_subnet_v2.internal_shared_personal_subnet[0].id
   }
 }
diff --git a/clouds/g2/ostrava/general/terraform/modules/common/providers.tf b/clouds/g2/ostrava/general/terraform/modules/common/providers.tf
index 411e68d2f037e32cb6c42beed58affa79a819964..94a7048da394e7d883ea417cee3aded73cf12520 100644
--- a/clouds/g2/ostrava/general/terraform/modules/common/providers.tf
+++ b/clouds/g2/ostrava/general/terraform/modules/common/providers.tf
@@ -2,7 +2,7 @@ terraform {
   required_providers {
     openstack = {
       source  = "terraform-provider-openstack/openstack"
-      version = "~> 1.51.1"
+      version = "~> 1.52.1"
     }
   }
 }
diff --git a/clouds/g2/ostrava/general/terraform/modules/common/secgroup_rules.tf b/clouds/g2/ostrava/general/terraform/modules/common/secgroup_rules.tf
index 1d4da810fc06110b5486ed101d67ad46671e40d7..a722fd76af025a896a93d8e3c665c4d5de9ad547 100644
--- a/clouds/g2/ostrava/general/terraform/modules/common/secgroup_rules.tf
+++ b/clouds/g2/ostrava/general/terraform/modules/common/secgroup_rules.tf
@@ -17,7 +17,7 @@ resource "openstack_networking_secgroup_v2" "secgroup_default" {
   protocol          = "tcp"
   port_range_min    = 1
   port_range_max    = 65535
-  remote_ip_prefix  = var.int_network
+  remote_ip_prefix  = var.internal_network_cidr
   security_group_id = openstack_networking_secgroup_v2.secgroup_default.id
 }
 
@@ -27,7 +27,7 @@ resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_alludp4" {
   protocol          = "udp"
   port_range_min    = 1
   port_range_max    = 65535
-  remote_ip_prefix  = var.int_network
+  remote_ip_prefix  = var.internal_network_cidr
   security_group_id = openstack_networking_secgroup_v2.secgroup_default.id
 } */
 
diff --git a/clouds/g2/ostrava/general/terraform/modules/common/variables.tf b/clouds/g2/ostrava/general/terraform/modules/common/variables.tf
new file mode 100644
index 0000000000000000000000000000000000000000..c7674a82399679b7d0213674681c59119546f5b1
--- /dev/null
+++ b/clouds/g2/ostrava/general/terraform/modules/common/variables.tf
@@ -0,0 +1,109 @@
+#########################
+# general configuration #
+#########################
+variable "infra_name" {
+  description = "Infrastructure (profile) name. Used as a name prefix. Must match [a-zA-Z0-9-]+ regexp."
+  default     = "general-tf-demo"
+}
+
+variable "ssh_public_key" {
+  default = "~/.ssh/id_rsa.pub"
+}
+
+variable "internal_network_cidr" {
+  description = "Internal network address, use CIDR notation"
+  default     = "10.10.10.0/24"
+}
+
+variable "public_external_network" {
+  description = "Cloud public external network pool"
+  default     = "public-cesnet-195-113-167-GROUP"
+}
+
+variable "router_creation_enable" {
+  description = "Create dedicated router instance. true/false ~ create new / reuse existing personal router"
+  default     = true
+}
+
+variable "internal_network_creation_enable" {
+  description = "Create dedicated internal network. true/false ~ create new / reuse existing personal network"
+  default     = true
+}
+
+variable "internal_network_name" {
+  description = "Internal network name. Either dedicated new network or existing personal network name"
+  default     = "<var.infra_name>_network"
+}
+
+variable "internal_subnet_creation_enable" {
+  description = "Create dedicated subnet instance. true/false ~ create new / reuse existing personal subnet"
+  default     = true
+}
+
+variable "internal_subnet_name" {
+  description = "Internal network subnet name. Either dedicated new subnet or existing personal subnet name"
+  default     = "<var.infra_name>_subnet"
+}
+
+####################
+# bastion settings #
+####################
+variable "bastion_name" {
+  description = "Name of the bastion VM. Must match [a-zA-Z0-9-]+ regexp."
+  default = "bastion-server"
+}
+
+variable "bastion_flavor" {
+  default = "standard.small"
+}
+
+variable "bastion_image" {
+  description = "Bastion OS: Image name"
+  default     = "ubuntu-jammy-x86_64"
+}
+
+variable "bastion_ssh_user_name" {
+  default = "ubuntu"
+}
+
+#########################
+# master nodes settings #
+#########################
+
+variable "nodes_count" {
+  default = 1
+}
+
+variable "nodes_name" {
+  description = "Name of the nodes. Must match [a-zA-Z0-9-]+ regexp."
+  default = "server"
+}
+
+variable "nodes_flavor" {
+  default = "standard.large"
+}
+
+variable "nodes_image" {
+  description = "nodes OS: Image name"
+  default     = "ubuntu-jammy-x86_64"
+}
+
+variable "nodes_ssh_user_name" {
+  default = "ubuntu"
+}
+
+variable "nodes_volume_size" {
+  description = "The size of the volume to create (in gigabytes) for root filesystem. "
+  default     = "10"
+}
+
+variable "nodes_extra_volume_size" {
+  description = "The size of the volume to create (in gigabytes) for extra data. 0 to disable extra volume."
+  default     = "10"
+}
+
+variable "nodes_extra_volume_type" {
+  description = "The type of extra volume."
+  default     = null
+}
+
diff --git a/clouds/g2/ostrava/general/terraform/personal-projects.tfvars b/clouds/g2/ostrava/general/terraform/personal-projects.tfvars
new file mode 100644
index 0000000000000000000000000000000000000000..7472fcf1efb855836f0c0d326712d954703fb402
--- /dev/null
+++ b/clouds/g2/ostrava/general/terraform/personal-projects.tfvars
@@ -0,0 +1,6 @@
+# extra variabes for an OpenStack personal project
+router_creation_enable           = false
+internal_network_creation_enable = false
+internal_network_name            = "internal-ipv4-general-private"
+internal_subnet_creation_enable  = false
+internal_subnet_name             = "internal-ipv4-general-private-172-22-0-0"
diff --git a/clouds/g2/ostrava/general/terraform/terraform-2tier_public_bastion_private_vm_farm-group-project-no-wrapper.log b/clouds/g2/ostrava/general/terraform/terraform-2tier_public_bastion_private_vm_farm-group-project-no-wrapper.log
new file mode 100644
index 0000000000000000000000000000000000000000..8fdf927416c837e8edf5782dadb27c498d25363b
--- /dev/null
+++ b/clouds/g2/ostrava/general/terraform/terraform-2tier_public_bastion_private_vm_farm-group-project-no-wrapper.log
@@ -0,0 +1,1008 @@
+# ###########################################################################
+# terminal A
+# ###########################################################################
+[freznicek@lenovo-t14 terraform 0]$ source ~/conf/g2-prod-ostrava-meta-cloud-training-all-roles-openrc.sh
+[freznicek@lenovo-t14 terraform 0]$ terraform init
+
+Initializing the backend...
+Initializing modules...
+
+Initializing provider plugins...
+- Reusing previous version of terraform-provider-openstack/openstack from the dependency lock file
+- Using previously-installed terraform-provider-openstack/openstack v1.52.1
+
+Terraform has been successfully initialized!
+
+You may now begin working with Terraform. Try running "terraform plan" to see
+any changes that are required for your infrastructure. All Terraform commands
+should now work.
+
+If you ever set or change modules or backend configuration for Terraform,
+rerun this command to reinitialize your working directory. If you forget, other
+commands will detect it and remind you to do so if necessary.
+[freznicek@lenovo-t14 terraform 0]$ terraform validate
+Success! The configuration is valid.
+
+[freznicek@lenovo-t14 terraform 0]$ terraform plan --out group-project.plan
+module.toplevel.data.openstack_images_image_v2.nodes_image: Reading...
+module.toplevel.data.openstack_networking_network_v2.external_network: Reading...
+module.toplevel.data.openstack_images_image_v2.nodes_image: Read complete after 1s [id=9a071dba-67d5-445f-9d32-0f56360fb10f]
+module.toplevel.data.openstack_networking_network_v2.external_network: Read complete after 1s [id=5a778b8d-4194-48fd-880d-181aaf7222c2]
+
+Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with
+the following symbols:
+  + create
+
+Terraform will perform the following actions:
+
+  # module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate will be created
+  + resource "openstack_compute_floatingip_associate_v2" "bastion_fip_associate" {
+      + floating_ip = (known after apply)
+      + id          = (known after apply)
+      + instance_id = (known after apply)
+      + region      = (known after apply)
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.bastion will be created
+  + resource "openstack_compute_instance_v2" "bastion" {
+      + access_ip_v4        = (known after apply)
+      + access_ip_v6        = (known after apply)
+      + all_metadata        = (known after apply)
+      + all_tags            = (known after apply)
+      + availability_zone   = (known after apply)
+      + created             = (known after apply)
+      + flavor_id           = (known after apply)
+      + flavor_name         = "standard.small"
+      + force_delete        = false
+      + id                  = (known after apply)
+      + image_id            = (known after apply)
+      + image_name          = "ubuntu-jammy-x86_64"
+      + key_pair            = "general-tf-demo-keypair"
+      + name                = "general-tf-demo-bastion-server"
+      + power_state         = "active"
+      + region              = (known after apply)
+      + security_groups     = [
+          + "general-tf-demo_security_group",
+        ]
+      + stop_before_destroy = false
+      + updated             = (known after apply)
+      + user_data           = "c875cd218164c30103ab9399e7237ce0745df6ef"
+
+      + network {
+          + access_network = false
+          + fixed_ip_v4    = (known after apply)
+          + fixed_ip_v6    = (known after apply)
+          + floating_ip    = (known after apply)
+          + mac            = (known after apply)
+          + name           = (known after apply)
+          + port           = (known after apply)
+          + uuid           = (known after apply)
+        }
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.nodes[0] will be created
+  + resource "openstack_compute_instance_v2" "nodes" {
+      + access_ip_v4        = (known after apply)
+      + access_ip_v6        = (known after apply)
+      + all_metadata        = (known after apply)
+      + all_tags            = (known after apply)
+      + availability_zone   = (known after apply)
+      + created             = (known after apply)
+      + flavor_id           = (known after apply)
+      + flavor_name         = "e1.small"
+      + force_delete        = false
+      + id                  = (known after apply)
+      + image_id            = (known after apply)
+      + image_name          = "ubuntu-jammy-x86_64"
+      + key_pair            = "general-tf-demo-keypair"
+      + name                = "general-tf-demo-server-1"
+      + power_state         = "active"
+      + region              = (known after apply)
+      + security_groups     = [
+          + "general-tf-demo_security_group",
+        ]
+      + stop_before_destroy = false
+      + updated             = (known after apply)
+      + user_data           = "4f71dc6cb6cef198c6b7be755b918c12ed196042"
+
+      + block_device {
+          + boot_index            = 0
+          + delete_on_termination = true
+          + destination_type      = "local"
+          + multiattach           = false
+          + source_type           = "image"
+          + uuid                  = "9a071dba-67d5-445f-9d32-0f56360fb10f"
+          + volume_size           = 10
+        }
+
+      + network {
+          + access_network = false
+          + fixed_ip_v4    = (known after apply)
+          + fixed_ip_v6    = (known after apply)
+          + floating_ip    = (known after apply)
+          + mac            = (known after apply)
+          + name           = (known after apply)
+          + port           = (known after apply)
+          + uuid           = (known after apply)
+        }
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.nodes[1] will be created
+  + resource "openstack_compute_instance_v2" "nodes" {
+      + access_ip_v4        = (known after apply)
+      + access_ip_v6        = (known after apply)
+      + all_metadata        = (known after apply)
+      + all_tags            = (known after apply)
+      + availability_zone   = (known after apply)
+      + created             = (known after apply)
+      + flavor_id           = (known after apply)
+      + flavor_name         = "e1.small"
+      + force_delete        = false
+      + id                  = (known after apply)
+      + image_id            = (known after apply)
+      + image_name          = "ubuntu-jammy-x86_64"
+      + key_pair            = "general-tf-demo-keypair"
+      + name                = "general-tf-demo-server-2"
+      + power_state         = "active"
+      + region              = (known after apply)
+      + security_groups     = [
+          + "general-tf-demo_security_group",
+        ]
+      + stop_before_destroy = false
+      + updated             = (known after apply)
+      + user_data           = "02ba299fe90493a6657b8efdc54727f3ceceb1eb"
+
+      + block_device {
+          + boot_index            = 0
+          + delete_on_termination = true
+          + destination_type      = "local"
+          + multiattach           = false
+          + source_type           = "image"
+          + uuid                  = "9a071dba-67d5-445f-9d32-0f56360fb10f"
+          + volume_size           = 10
+        }
+
+      + network {
+          + access_network = false
+          + fixed_ip_v4    = (known after apply)
+          + fixed_ip_v6    = (known after apply)
+          + floating_ip    = (known after apply)
+          + mac            = (known after apply)
+          + name           = (known after apply)
+          + port           = (known after apply)
+          + uuid           = (known after apply)
+        }
+    }
+
+  # module.toplevel.openstack_compute_keypair_v2.pubkey will be created
+  + resource "openstack_compute_keypair_v2" "pubkey" {
+      + fingerprint = (known after apply)
+      + id          = (known after apply)
+      + name        = "general-tf-demo-keypair"
+      + private_key = (sensitive value)
+      + public_key  = <<-EOT
+            ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCh5m8MwPW2mSXPFj0P3SSnAjukeQinvdESJfUeVqxOLozx3uAprm+ghPlun4V0mqfIfs6SmJM2wN8oDjd18yJVgCc1tfaSTDYDnVdrVPzWQYDdCqca0a3z+fXuK/sffv+9SH4LdNGqm6wA6xjJAbp8HbsnUNbcxs9bt9GJToxRjVCHjawJxlBBUemuYU7x7B8tdq3W5Fxtc9dIEcpO7NLvVujSSzbTwxVANSpOsbhroN6IQP299hB7Ggoa7P0MNaJa9VHJSU4Z6N7lYDrMG5gkm6LxL6s37ljyQS7IVDNKbhj1WrWfxAWrYtQy5alzisa7uuaxb1dOwEEWzZI5Z59T79cZActsJJPf6e4zurYo8Tqw9vpJId8ohDEQVnmb5asDGMz5G8xXa4G98McVYL1766fN1FxflYLIVRi7uPTLjN76COh/Q/ZxYuByFYl62VY+vT3CxcYInsqOkhwgfmHMbepq3ndRRIrN97IDDMutT5peTLSwpsmME+202Tg12TL7aGMyeNfcRxJkm3nHvXXKSAu1fJKXPvTQZZRxctX9GQ+2iYBhB57WnmtvfzgfcrAdZTXH3Mh08xRB+Uv/VqupLhm9Fgs/+IVUyi0AezsL6NrGItyPVcVU2HXF6xdsIFyHgb2Jhbdm2PzN/n7lcRa6lkltPBpLSWZb0N0DSHbrJw== freznicek@fedora
+        EOT
+      + region      = (known after apply)
+      + user_id     = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_floatingip_v2.bastion_fip will be created
+  + resource "openstack_networking_floatingip_v2" "bastion_fip" {
+      + address    = (known after apply)
+      + all_tags   = (known after apply)
+      + dns_domain = (known after apply)
+      + dns_name   = (known after apply)
+      + fixed_ip   = (known after apply)
+      + id         = (known after apply)
+      + pool       = "external-ipv4-general-public"
+      + port_id    = (known after apply)
+      + region     = (known after apply)
+      + subnet_id  = (known after apply)
+      + tenant_id  = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_network_v2.network_default[0] will be created
+  + resource "openstack_networking_network_v2" "network_default" {
+      + admin_state_up          = true
+      + all_tags                = (known after apply)
+      + availability_zone_hints = (known after apply)
+      + dns_domain              = (known after apply)
+      + external                = (known after apply)
+      + id                      = (known after apply)
+      + mtu                     = (known after apply)
+      + name                    = "general-tf-demo_network"
+      + port_security_enabled   = (known after apply)
+      + qos_policy_id           = (known after apply)
+      + region                  = (known after apply)
+      + shared                  = (known after apply)
+      + tenant_id               = (known after apply)
+      + transparent_vlan        = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_port_v2.bastion_port will be created
+  + resource "openstack_networking_port_v2" "bastion_port" {
+      + admin_state_up         = true
+      + all_fixed_ips          = (known after apply)
+      + all_security_group_ids = (known after apply)
+      + all_tags               = (known after apply)
+      + device_id              = (known after apply)
+      + device_owner           = (known after apply)
+      + dns_assignment         = (known after apply)
+      + dns_name               = (known after apply)
+      + id                     = (known after apply)
+      + mac_address            = (known after apply)
+      + name                   = "general-tf-demo-bastion-server-port"
+      + network_id             = (known after apply)
+      + port_security_enabled  = (known after apply)
+      + qos_policy_id          = (known after apply)
+      + region                 = (known after apply)
+      + security_group_ids     = (known after apply)
+      + tenant_id              = (known after apply)
+
+      + fixed_ip {
+          + subnet_id = (known after apply)
+        }
+    }
+
+  # module.toplevel.openstack_networking_port_v2.nodes_ports[0] will be created
+  + resource "openstack_networking_port_v2" "nodes_ports" {
+      + admin_state_up         = true
+      + all_fixed_ips          = (known after apply)
+      + all_security_group_ids = (known after apply)
+      + all_tags               = (known after apply)
+      + device_id              = (known after apply)
+      + device_owner           = (known after apply)
+      + dns_assignment         = (known after apply)
+      + dns_name               = (known after apply)
+      + id                     = (known after apply)
+      + mac_address            = (known after apply)
+      + name                   = "general-tf-demo_server_port_1"
+      + network_id             = (known after apply)
+      + port_security_enabled  = (known after apply)
+      + qos_policy_id          = (known after apply)
+      + region                 = (known after apply)
+      + security_group_ids     = (known after apply)
+      + tenant_id              = (known after apply)
+
+      + fixed_ip {
+          + subnet_id = (known after apply)
+        }
+    }
+
+  # module.toplevel.openstack_networking_port_v2.nodes_ports[1] will be created
+  + resource "openstack_networking_port_v2" "nodes_ports" {
+      + admin_state_up         = true
+      + all_fixed_ips          = (known after apply)
+      + all_security_group_ids = (known after apply)
+      + all_tags               = (known after apply)
+      + device_id              = (known after apply)
+      + device_owner           = (known after apply)
+      + dns_assignment         = (known after apply)
+      + dns_name               = (known after apply)
+      + id                     = (known after apply)
+      + mac_address            = (known after apply)
+      + name                   = "general-tf-demo_server_port_2"
+      + network_id             = (known after apply)
+      + port_security_enabled  = (known after apply)
+      + qos_policy_id          = (known after apply)
+      + region                 = (known after apply)
+      + security_group_ids     = (known after apply)
+      + tenant_id              = (known after apply)
+
+      + fixed_ip {
+          + subnet_id = (known after apply)
+        }
+    }
+
+  # module.toplevel.openstack_networking_router_interface_v2.router_default_interface[0] will be created
+  + resource "openstack_networking_router_interface_v2" "router_default_interface" {
+      + force_destroy = false
+      + id            = (known after apply)
+      + port_id       = (known after apply)
+      + region        = (known after apply)
+      + router_id     = (known after apply)
+      + subnet_id     = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_router_v2.router_default[0] will be created
+  + resource "openstack_networking_router_v2" "router_default" {
+      + admin_state_up          = true
+      + all_tags                = (known after apply)
+      + availability_zone_hints = (known after apply)
+      + distributed             = (known after apply)
+      + enable_snat             = (known after apply)
+      + external_gateway        = (known after apply)
+      + external_network_id     = "5a778b8d-4194-48fd-880d-181aaf7222c2"
+      + id                      = (known after apply)
+      + name                    = "general-tf-demo_infra-test"
+      + region                  = (known after apply)
+      + tenant_id               = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4 will be created
+  + resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_http4" {
+      + direction         = "ingress"
+      + ethertype         = "IPv4"
+      + id                = (known after apply)
+      + port_range_max    = 80
+      + port_range_min    = 80
+      + protocol          = "tcp"
+      + region            = (known after apply)
+      + remote_group_id   = (known after apply)
+      + remote_ip_prefix  = "0.0.0.0/0"
+      + security_group_id = (known after apply)
+      + tenant_id         = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4 will be created
+  + resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_https4" {
+      + direction         = "ingress"
+      + ethertype         = "IPv4"
+      + id                = (known after apply)
+      + port_range_max    = 443
+      + port_range_min    = 443
+      + protocol          = "tcp"
+      + region            = (known after apply)
+      + remote_group_id   = (known after apply)
+      + remote_ip_prefix  = "0.0.0.0/0"
+      + security_group_id = (known after apply)
+      + tenant_id         = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4 will be created
+  + resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_icmp4" {
+      + direction         = "ingress"
+      + ethertype         = "IPv4"
+      + id                = (known after apply)
+      + port_range_max    = 0
+      + port_range_min    = 0
+      + protocol          = "icmp"
+      + region            = (known after apply)
+      + remote_group_id   = (known after apply)
+      + remote_ip_prefix  = "0.0.0.0/0"
+      + security_group_id = (known after apply)
+      + tenant_id         = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4 will be created
+  + resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_ssh4" {
+      + direction         = "ingress"
+      + ethertype         = "IPv4"
+      + id                = (known after apply)
+      + port_range_max    = 22
+      + port_range_min    = 22
+      + protocol          = "tcp"
+      + region            = (known after apply)
+      + remote_group_id   = (known after apply)
+      + remote_ip_prefix  = "0.0.0.0/0"
+      + security_group_id = (known after apply)
+      + tenant_id         = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_secgroup_v2.secgroup_default will be created
+  + resource "openstack_networking_secgroup_v2" "secgroup_default" {
+      + all_tags    = (known after apply)
+      + description = "general-tf-demo Security group"
+      + id          = (known after apply)
+      + name        = "general-tf-demo_security_group"
+      + region      = (known after apply)
+      + tenant_id   = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_subnet_v2.subnet_default[0] will be created
+  + resource "openstack_networking_subnet_v2" "subnet_default" {
+      + all_tags          = (known after apply)
+      + cidr              = "10.10.10.0/24"
+      + dns_nameservers   = [
+          + "1.1.1.1",
+          + "8.8.8.8",
+        ]
+      + enable_dhcp       = true
+      + gateway_ip        = (known after apply)
+      + id                = (known after apply)
+      + ip_version        = 4
+      + ipv6_address_mode = (known after apply)
+      + ipv6_ra_mode      = (known after apply)
+      + name              = "general-tf-demo_subnet"
+      + network_id        = (known after apply)
+      + no_gateway        = false
+      + region            = (known after apply)
+      + service_types     = (known after apply)
+      + tenant_id         = (known after apply)
+    }
+
+Plan: 18 to add, 0 to change, 0 to destroy.
+
+───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
+
+Saved the plan to: group-project.plan
+
+To perform exactly these actions, run the following command to apply:
+    terraform apply "group-project.plan"
+[freznicek@lenovo-t14 terraform 0]$ terraform apply "group-project.plan"
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Creating...
+module.toplevel.openstack_networking_router_v2.router_default[0]: Creating...
+module.toplevel.openstack_compute_keypair_v2.pubkey: Creating...
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Creating...
+module.toplevel.openstack_networking_network_v2.network_default[0]: Creating...
+module.toplevel.openstack_compute_keypair_v2.pubkey: Creation complete after 1s [id=general-tf-demo-keypair]
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Creation complete after 1s [id=30bc1a97-d150-4d52-9e5e-b54f46e85caa]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Creating...
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Creating...
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Creating...
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Creating...
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Creation complete after 0s [id=663be34f-2171-4999-9f79-7f3a9d985106]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Creation complete after 1s [id=b0bbf3bb-e071-464e-8998-e615e9637ee4]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Creation complete after 1s [id=ba11b2f0-4a09-4774-a185-6b29980591e2]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Creation complete after 1s [id=7404a85d-9bb9-41c9-9f78-5a225f03012f]
+module.toplevel.openstack_networking_network_v2.network_default[0]: Creation complete after 7s [id=52a1637a-9950-46c5-8044-99c02fd608dd]
+module.toplevel.openstack_networking_subnet_v2.subnet_default[0]: Creating...
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Creation complete after 7s [id=c8ea0ba8-4c69-45ac-96dd-d08270d53e39]
+module.toplevel.openstack_networking_router_v2.router_default[0]: Creation complete after 8s [id=7e061d3c-90c6-488c-9e8a-78d122fc0088]
+module.toplevel.openstack_networking_subnet_v2.subnet_default[0]: Creation complete after 5s [id=8be2ddeb-bf42-465f-a828-af67beafea23]
+module.toplevel.openstack_networking_router_interface_v2.router_default_interface[0]: Creating...
+module.toplevel.openstack_networking_port_v2.bastion_port: Creating...
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Creating...
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Creating...
+module.toplevel.openstack_networking_port_v2.bastion_port: Creation complete after 6s [id=43c96551-3600-4244-b6d9-35a5ff4f5363]
+module.toplevel.openstack_compute_instance_v2.bastion: Creating...
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Creation complete after 6s [id=31851ec6-83ae-40f6-b108-c6742b5bdd42]
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Creation complete after 6s [id=d8144013-bf87-427b-b546-6bd17f4b749c]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Creating...
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Creating...
+module.toplevel.openstack_networking_router_interface_v2.router_default_interface[0]: Creation complete after 7s [id=1fbc50d1-50e7-4de8-8e0b-e919d12685b9]
+module.toplevel.openstack_compute_instance_v2.bastion: Still creating... [10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Still creating... [10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Still creating... [10s elapsed]
+module.toplevel.openstack_compute_instance_v2.bastion: Creation complete after 11s [id=b4621741-7b87-4d4f-af14-c8764be41209]
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Creating...
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Creation complete after 11s [id=f3d1409a-3dc6-48a8-916b-088bc3c967ab]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Creation complete after 11s [id=505d5414-53e4-4736-a886-992e16ab7a13]
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Creation complete after 1s [id=195.113.243.33/b4621741-7b87-4d4f-af14-c8764be41209/]
+
+Apply complete! Resources: 18 added, 0 changed, 0 destroyed.
+[freznicek@lenovo-t14 terraform 0]$ openstack server list
++--------------------------------------+--------------------------------+--------+-----------------------------------------------------------+---------------------+----------------+
+| ID                                   | Name                           | Status | Networks                                                  | Image               | Flavor         |
++--------------------------------------+--------------------------------+--------+-----------------------------------------------------------+---------------------+----------------+
+| 505d5414-53e4-4736-a886-992e16ab7a13 | general-tf-demo-server-1       | ACTIVE | general-tf-demo_network=10.10.10.116                      | ubuntu-jammy-x86_64 | e1.small       |
+| b4621741-7b87-4d4f-af14-c8764be41209 | general-tf-demo-bastion-server | ACTIVE | general-tf-demo_network=10.10.10.171, 195.113.243.33      | ubuntu-jammy-x86_64 | standard.small |
+| f3d1409a-3dc6-48a8-916b-088bc3c967ab | general-tf-demo-server-2       | ACTIVE | general-tf-demo_network=10.10.10.210                      | ubuntu-jammy-x86_64 | e1.small       |
++--------------------------------------+--------------------------------+--------+-----------------------------------------------------------+---------------------+----------------+
+
+# ###########################################################################
+# in terminal B
+# ###########################################################################
+[freznicek@lenovo-t14 terraform 0]$ sshuttle -r ubuntu@195.113.243.33 10.10.10.0/24
+[local sudo] Password:
+The authenticity of host '195.113.243.33 (195.113.243.33)' can't be established.
+ED25519 key fingerprint is SHA256:e1D3sQga3lEGh85d3GkFvM8nCkQNLGGWS6MRZgF2U7I.
+This key is not known by any other names
+Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
+Warning: Permanently added '195.113.243.33' (ED25519) to the list of known hosts.
+c : Connected to server.
+^Cc :
+c : Keyboard interrupt: exiting.
+
+# ###########################################################################
+# terminal A continues
+# ###########################################################################
+[freznicek@lenovo-t14 terraform 0]$ for i_ip in 10.10.10.{171,116,210}; do ssh ubuntu@$i_ip 'uname -a;uptime'; doneThe authenticity of host '10.10.10.171 (10.10.10.171)' can't be established.
+ED25519 key fingerprint is SHA256:e1D3sQga3lEGh85d3GkFvM8nCkQNLGGWS6MRZgF2U7I.
+This host key is known by the following other names/addresses:
+    ~/.ssh/known_hosts:1296: 195.113.243.33
+Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
+Warning: Permanently added '10.10.10.171' (ED25519) to the list of known hosts.
+Linux general-tf-demo-bastion-server 5.15.0-73-generic #80-Ubuntu SMP Mon May 15 15:18:26 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
+ 17:40:38 up 1 min,  0 users,  load average: 0.24, 0.17, 0.07
+The authenticity of host '10.10.10.116 (10.10.10.116)' can't be established.
+ED25519 key fingerprint is SHA256:76kTPJmYHOhA/EtqUA2C2pW2DF4FyF81J2x/k0P/DII.
+This key is not known by any other names
+Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
+Warning: Permanently added '10.10.10.116' (ED25519) to the list of known hosts.
+Linux general-tf-demo-server-1 5.15.0-73-generic #80-Ubuntu SMP Mon May 15 15:18:26 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
+ 17:40:44 up 1 min,  0 users,  load average: 0.19, 0.12, 0.05
+The authenticity of host '10.10.10.210 (10.10.10.210)' can't be established.
+ED25519 key fingerprint is SHA256:oH7tIMZLj6MtZuMYqoc3SOIGJFsSHn5oF2KDNishmsk.
+This key is not known by any other names
+Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
+Warning: Permanently added '10.10.10.210' (ED25519) to the list of known hosts.
+Linux general-tf-demo-server-2 5.15.0-73-generic #80-Ubuntu SMP Mon May 15 15:18:26 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
+ 17:40:48 up 2 min,  0 users,  load average: 0.34, 0.26, 0.10
+[freznicek@lenovo-t14 terraform 0]$ terraform destroy
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Refreshing state... [id=30bc1a97-d150-4d52-9e5e-b54f46e85caa]
+module.toplevel.data.openstack_networking_network_v2.external_network: Reading...
+module.toplevel.data.openstack_images_image_v2.nodes_image: Reading...
+module.toplevel.openstack_compute_keypair_v2.pubkey: Refreshing state... [id=general-tf-demo-keypair]
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Refreshing state... [id=c8ea0ba8-4c69-45ac-96dd-d08270d53e39]
+module.toplevel.openstack_networking_network_v2.network_default[0]: Refreshing state... [id=52a1637a-9950-46c5-8044-99c02fd608dd]
+module.toplevel.data.openstack_images_image_v2.nodes_image: Read complete after 0s [id=9a071dba-67d5-445f-9d32-0f56360fb10f]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Refreshing state... [id=b0bbf3bb-e071-464e-8998-e615e9637ee4]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Refreshing state... [id=7404a85d-9bb9-41c9-9f78-5a225f03012f]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Refreshing state... [id=663be34f-2171-4999-9f79-7f3a9d985106]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Refreshing state... [id=ba11b2f0-4a09-4774-a185-6b29980591e2]
+module.toplevel.openstack_networking_subnet_v2.subnet_default[0]: Refreshing state... [id=8be2ddeb-bf42-465f-a828-af67beafea23]
+module.toplevel.data.openstack_networking_network_v2.external_network: Read complete after 0s [id=5a778b8d-4194-48fd-880d-181aaf7222c2]
+module.toplevel.openstack_networking_router_v2.router_default[0]: Refreshing state... [id=7e061d3c-90c6-488c-9e8a-78d122fc0088]
+module.toplevel.openstack_networking_router_interface_v2.router_default_interface[0]: Refreshing state... [id=1fbc50d1-50e7-4de8-8e0b-e919d12685b9]
+module.toplevel.openstack_networking_port_v2.bastion_port: Refreshing state... [id=43c96551-3600-4244-b6d9-35a5ff4f5363]
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Refreshing state... [id=31851ec6-83ae-40f6-b108-c6742b5bdd42]
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Refreshing state... [id=d8144013-bf87-427b-b546-6bd17f4b749c]
+module.toplevel.openstack_compute_instance_v2.bastion: Refreshing state... [id=b4621741-7b87-4d4f-af14-c8764be41209]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Refreshing state... [id=505d5414-53e4-4736-a886-992e16ab7a13]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Refreshing state... [id=f3d1409a-3dc6-48a8-916b-088bc3c967ab]
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Refreshing state... [id=195.113.243.33/b4621741-7b87-4d4f-af14-c8764be41209/]
+
+Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with
+the following symbols:
+  - destroy
+
+Terraform will perform the following actions:
+
+  # module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate will be destroyed
+  - resource "openstack_compute_floatingip_associate_v2" "bastion_fip_associate" {
+      - floating_ip = "195.113.243.33" -> null
+      - id          = "195.113.243.33/b4621741-7b87-4d4f-af14-c8764be41209/" -> null
+      - instance_id = "b4621741-7b87-4d4f-af14-c8764be41209" -> null
+      - region      = "Ostrava" -> null
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.bastion will be destroyed
+  - resource "openstack_compute_instance_v2" "bastion" {
+      - access_ip_v4        = "10.10.10.171" -> null
+      - all_metadata        = {} -> null
+      - all_tags            = [] -> null
+      - availability_zone   = "nova" -> null
+      - created             = "2023-08-06 17:38:32 +0000 UTC" -> null
+      - flavor_id           = "f5bb56cc-297d-4f1b-bf17-202fa0a8e9a3" -> null
+      - flavor_name         = "standard.small" -> null
+      - force_delete        = false -> null
+      - id                  = "b4621741-7b87-4d4f-af14-c8764be41209" -> null
+      - image_id            = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+      - image_name          = "ubuntu-jammy-x86_64" -> null
+      - key_pair            = "general-tf-demo-keypair" -> null
+      - name                = "general-tf-demo-bastion-server" -> null
+      - power_state         = "active" -> null
+      - region              = "Ostrava" -> null
+      - security_groups     = [
+          - "general-tf-demo_security_group",
+        ] -> null
+      - stop_before_destroy = false -> null
+      - tags                = [] -> null
+      - updated             = "2023-08-06 17:38:38 +0000 UTC" -> null
+      - user_data           = "c875cd218164c30103ab9399e7237ce0745df6ef" -> null
+
+      - network {
+          - access_network = false -> null
+          - fixed_ip_v4    = "10.10.10.171" -> null
+          - mac            = "fa:16:3e:71:5e:be" -> null
+          - name           = "general-tf-demo_network" -> null
+          - port           = "43c96551-3600-4244-b6d9-35a5ff4f5363" -> null
+          - uuid           = "52a1637a-9950-46c5-8044-99c02fd608dd" -> null
+        }
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.nodes[0] will be destroyed
+  - resource "openstack_compute_instance_v2" "nodes" {
+      - access_ip_v4        = "10.10.10.116" -> null
+      - all_metadata        = {} -> null
+      - all_tags            = [] -> null
+      - availability_zone   = "nova" -> null
+      - created             = "2023-08-06 17:38:32 +0000 UTC" -> null
+      - flavor_id           = "77f5fa9b-255a-4bff-af57-be0bcf0dba03" -> null
+      - flavor_name         = "e1.small" -> null
+      - force_delete        = false -> null
+      - id                  = "505d5414-53e4-4736-a886-992e16ab7a13" -> null
+      - image_id            = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+      - image_name          = "ubuntu-jammy-x86_64" -> null
+      - key_pair            = "general-tf-demo-keypair" -> null
+      - name                = "general-tf-demo-server-1" -> null
+      - power_state         = "active" -> null
+      - region              = "Ostrava" -> null
+      - security_groups     = [
+          - "general-tf-demo_security_group",
+        ] -> null
+      - stop_before_destroy = false -> null
+      - tags                = [] -> null
+      - updated             = "2023-08-06 17:38:38 +0000 UTC" -> null
+      - user_data           = "4f71dc6cb6cef198c6b7be755b918c12ed196042" -> null
+
+      - block_device {
+          - boot_index            = 0 -> null
+          - delete_on_termination = true -> null
+          - destination_type      = "local" -> null
+          - multiattach           = false -> null
+          - source_type           = "image" -> null
+          - uuid                  = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+          - volume_size           = 10 -> null
+        }
+
+      - network {
+          - access_network = false -> null
+          - fixed_ip_v4    = "10.10.10.116" -> null
+          - mac            = "fa:16:3e:26:94:51" -> null
+          - name           = "general-tf-demo_network" -> null
+          - port           = "31851ec6-83ae-40f6-b108-c6742b5bdd42" -> null
+          - uuid           = "52a1637a-9950-46c5-8044-99c02fd608dd" -> null
+        }
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.nodes[1] will be destroyed
+  - resource "openstack_compute_instance_v2" "nodes" {
+      - access_ip_v4        = "10.10.10.210" -> null
+      - all_metadata        = {} -> null
+      - all_tags            = [] -> null
+      - availability_zone   = "nova" -> null
+      - created             = "2023-08-06 17:38:32 +0000 UTC" -> null
+      - flavor_id           = "77f5fa9b-255a-4bff-af57-be0bcf0dba03" -> null
+      - flavor_name         = "e1.small" -> null
+      - force_delete        = false -> null
+      - id                  = "f3d1409a-3dc6-48a8-916b-088bc3c967ab" -> null
+      - image_id            = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+      - image_name          = "ubuntu-jammy-x86_64" -> null
+      - key_pair            = "general-tf-demo-keypair" -> null
+      - name                = "general-tf-demo-server-2" -> null
+      - power_state         = "active" -> null
+      - region              = "Ostrava" -> null
+      - security_groups     = [
+          - "general-tf-demo_security_group",
+        ] -> null
+      - stop_before_destroy = false -> null
+      - tags                = [] -> null
+      - updated             = "2023-08-06 17:38:36 +0000 UTC" -> null
+      - user_data           = "02ba299fe90493a6657b8efdc54727f3ceceb1eb" -> null
+
+      - block_device {
+          - boot_index            = 0 -> null
+          - delete_on_termination = true -> null
+          - destination_type      = "local" -> null
+          - multiattach           = false -> null
+          - source_type           = "image" -> null
+          - uuid                  = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+          - volume_size           = 10 -> null
+        }
+
+      - network {
+          - access_network = false -> null
+          - fixed_ip_v4    = "10.10.10.210" -> null
+          - mac            = "fa:16:3e:0d:26:c1" -> null
+          - name           = "general-tf-demo_network" -> null
+          - port           = "d8144013-bf87-427b-b546-6bd17f4b749c" -> null
+          - uuid           = "52a1637a-9950-46c5-8044-99c02fd608dd" -> null
+        }
+    }
+
+  # module.toplevel.openstack_compute_keypair_v2.pubkey will be destroyed
+  - resource "openstack_compute_keypair_v2" "pubkey" {
+      - fingerprint = "75:e0:a4:d6:4c:76:ba:21:f1:d1:75:c8:75:22:93:4f" -> null
+      - id          = "general-tf-demo-keypair" -> null
+      - name        = "general-tf-demo-keypair" -> null
+      - public_key  = <<-EOT
+            ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCh5m8MwPW2mSXPFj0P3SSnAjukeQinvdESJfUeVqxOLozx3uAprm+ghPlun4V0mqfIfs6SmJM2wN8oDjd18yJVgCc1tfaSTDYDnVdrVPzWQYDdCqca0a3z+fXuK/sffv+9SH4LdNGqm6wA6xjJAbp8HbsnUNbcxs9bt9GJToxRjVCHjawJxlBBUemuYU7x7B8tdq3W5Fxtc9dIEcpO7NLvVujSSzbTwxVANSpOsbhroN6IQP299hB7Ggoa7P0MNaJa9VHJSU4Z6N7lYDrMG5gkm6LxL6s37ljyQS7IVDNKbhj1WrWfxAWrYtQy5alzisa7uuaxb1dOwEEWzZI5Z59T79cZActsJJPf6e4zurYo8Tqw9vpJId8ohDEQVnmb5asDGMz5G8xXa4G98McVYL1766fN1FxflYLIVRi7uPTLjN76COh/Q/ZxYuByFYl62VY+vT3CxcYInsqOkhwgfmHMbepq3ndRRIrN97IDDMutT5peTLSwpsmME+202Tg12TL7aGMyeNfcRxJkm3nHvXXKSAu1fJKXPvTQZZRxctX9GQ+2iYBhB57WnmtvfzgfcrAdZTXH3Mh08xRB+Uv/VqupLhm9Fgs/+IVUyi0AezsL6NrGItyPVcVU2HXF6xdsIFyHgb2Jhbdm2PzN/n7lcRa6lkltPBpLSWZb0N0DSHbrJw== freznicek@fedora
+        EOT -> null
+      - region      = "Ostrava" -> null
+    }
+
+  # module.toplevel.openstack_networking_floatingip_v2.bastion_fip will be destroyed
+  - resource "openstack_networking_floatingip_v2" "bastion_fip" {
+      - address   = "195.113.243.33" -> null
+      - all_tags  = [] -> null
+      - fixed_ip  = "10.10.10.171" -> null
+      - id        = "c8ea0ba8-4c69-45ac-96dd-d08270d53e39" -> null
+      - pool      = "external-ipv4-general-public" -> null
+      - port_id   = "43c96551-3600-4244-b6d9-35a5ff4f5363" -> null
+      - region    = "Ostrava" -> null
+      - tags      = [] -> null
+      - tenant_id = "7587d86892f449c3b11fdedb05976007" -> null
+    }
+
+  # module.toplevel.openstack_networking_network_v2.network_default[0] will be destroyed
+  - resource "openstack_networking_network_v2" "network_default" {
+      - admin_state_up          = true -> null
+      - all_tags                = [] -> null
+      - availability_zone_hints = [
+          - "nova",
+        ] -> null
+      - external                = false -> null
+      - id                      = "52a1637a-9950-46c5-8044-99c02fd608dd" -> null
+      - mtu                     = 8950 -> null
+      - name                    = "general-tf-demo_network" -> null
+      - port_security_enabled   = true -> null
+      - region                  = "Ostrava" -> null
+      - shared                  = false -> null
+      - tags                    = [] -> null
+      - tenant_id               = "7587d86892f449c3b11fdedb05976007" -> null
+      - transparent_vlan        = false -> null
+    }
+
+  # module.toplevel.openstack_networking_port_v2.bastion_port will be destroyed
+  - resource "openstack_networking_port_v2" "bastion_port" {
+      - admin_state_up         = true -> null
+      - all_fixed_ips          = [
+          - "10.10.10.171",
+        ] -> null
+      - all_security_group_ids = [
+          - "30bc1a97-d150-4d52-9e5e-b54f46e85caa",
+        ] -> null
+      - all_tags               = [] -> null
+      - device_id              = "b4621741-7b87-4d4f-af14-c8764be41209" -> null
+      - device_owner           = "compute:nova" -> null
+      - dns_assignment         = [] -> null
+      - id                     = "43c96551-3600-4244-b6d9-35a5ff4f5363" -> null
+      - mac_address            = "fa:16:3e:71:5e:be" -> null
+      - name                   = "general-tf-demo-bastion-server-port" -> null
+      - network_id             = "52a1637a-9950-46c5-8044-99c02fd608dd" -> null
+      - port_security_enabled  = true -> null
+      - region                 = "Ostrava" -> null
+      - security_group_ids     = [
+          - "30bc1a97-d150-4d52-9e5e-b54f46e85caa",
+        ] -> null
+      - tags                   = [] -> null
+      - tenant_id              = "7587d86892f449c3b11fdedb05976007" -> null
+
+      - binding {
+          - vif_details = {} -> null
+          - vnic_type   = "normal" -> null
+        }
+
+      - fixed_ip {
+          - subnet_id = "8be2ddeb-bf42-465f-a828-af67beafea23" -> null
+        }
+    }
+
+  # module.toplevel.openstack_networking_port_v2.nodes_ports[0] will be destroyed
+  - resource "openstack_networking_port_v2" "nodes_ports" {
+      - admin_state_up         = true -> null
+      - all_fixed_ips          = [
+          - "10.10.10.116",
+        ] -> null
+      - all_security_group_ids = [
+          - "30bc1a97-d150-4d52-9e5e-b54f46e85caa",
+        ] -> null
+      - all_tags               = [] -> null
+      - device_id              = "505d5414-53e4-4736-a886-992e16ab7a13" -> null
+      - device_owner           = "compute:nova" -> null
+      - dns_assignment         = [] -> null
+      - id                     = "31851ec6-83ae-40f6-b108-c6742b5bdd42" -> null
+      - mac_address            = "fa:16:3e:26:94:51" -> null
+      - name                   = "general-tf-demo_server_port_1" -> null
+      - network_id             = "52a1637a-9950-46c5-8044-99c02fd608dd" -> null
+      - port_security_enabled  = true -> null
+      - region                 = "Ostrava" -> null
+      - security_group_ids     = [
+          - "30bc1a97-d150-4d52-9e5e-b54f46e85caa",
+        ] -> null
+      - tags                   = [] -> null
+      - tenant_id              = "7587d86892f449c3b11fdedb05976007" -> null
+
+      - binding {
+          - vif_details = {} -> null
+          - vnic_type   = "normal" -> null
+        }
+
+      - fixed_ip {
+          - subnet_id = "8be2ddeb-bf42-465f-a828-af67beafea23" -> null
+        }
+    }
+
+  # module.toplevel.openstack_networking_port_v2.nodes_ports[1] will be destroyed
+  - resource "openstack_networking_port_v2" "nodes_ports" {
+      - admin_state_up         = true -> null
+      - all_fixed_ips          = [
+          - "10.10.10.210",
+        ] -> null
+      - all_security_group_ids = [
+          - "30bc1a97-d150-4d52-9e5e-b54f46e85caa",
+        ] -> null
+      - all_tags               = [] -> null
+      - device_id              = "f3d1409a-3dc6-48a8-916b-088bc3c967ab" -> null
+      - device_owner           = "compute:nova" -> null
+      - dns_assignment         = [] -> null
+      - id                     = "d8144013-bf87-427b-b546-6bd17f4b749c" -> null
+      - mac_address            = "fa:16:3e:0d:26:c1" -> null
+      - name                   = "general-tf-demo_server_port_2" -> null
+      - network_id             = "52a1637a-9950-46c5-8044-99c02fd608dd" -> null
+      - port_security_enabled  = true -> null
+      - region                 = "Ostrava" -> null
+      - security_group_ids     = [
+          - "30bc1a97-d150-4d52-9e5e-b54f46e85caa",
+        ] -> null
+      - tags                   = [] -> null
+      - tenant_id              = "7587d86892f449c3b11fdedb05976007" -> null
+
+      - binding {
+          - vif_details = {} -> null
+          - vnic_type   = "normal" -> null
+        }
+
+      - fixed_ip {
+          - subnet_id = "8be2ddeb-bf42-465f-a828-af67beafea23" -> null
+        }
+    }
+
+  # module.toplevel.openstack_networking_router_interface_v2.router_default_interface[0] will be destroyed
+  - resource "openstack_networking_router_interface_v2" "router_default_interface" {
+      - force_destroy = false -> null
+      - id            = "1fbc50d1-50e7-4de8-8e0b-e919d12685b9" -> null
+      - port_id       = "1fbc50d1-50e7-4de8-8e0b-e919d12685b9" -> null
+      - region        = "Ostrava" -> null
+      - router_id     = "7e061d3c-90c6-488c-9e8a-78d122fc0088" -> null
+      - subnet_id     = "8be2ddeb-bf42-465f-a828-af67beafea23" -> null
+    }
+
+  # module.toplevel.openstack_networking_router_v2.router_default[0] will be destroyed
+  - resource "openstack_networking_router_v2" "router_default" {
+      - admin_state_up          = true -> null
+      - all_tags                = [] -> null
+      - availability_zone_hints = [
+          - "nova",
+        ] -> null
+      - distributed             = false -> null
+      - enable_snat             = true -> null
+      - external_gateway        = "5a778b8d-4194-48fd-880d-181aaf7222c2" -> null
+      - external_network_id     = "5a778b8d-4194-48fd-880d-181aaf7222c2" -> null
+      - id                      = "7e061d3c-90c6-488c-9e8a-78d122fc0088" -> null
+      - name                    = "general-tf-demo_infra-test" -> null
+      - region                  = "Ostrava" -> null
+      - tags                    = [] -> null
+      - tenant_id               = "7587d86892f449c3b11fdedb05976007" -> null
+
+      - external_fixed_ip {
+          - ip_address = "195.113.243.241" -> null
+          - subnet_id  = "a8843622-1b54-414a-918a-1861434135ce" -> null
+        }
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4 will be destroyed
+  - resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_http4" {
+      - direction         = "ingress" -> null
+      - ethertype         = "IPv4" -> null
+      - id                = "b0bbf3bb-e071-464e-8998-e615e9637ee4" -> null
+      - port_range_max    = 80 -> null
+      - port_range_min    = 80 -> null
+      - protocol          = "tcp" -> null
+      - region            = "Ostrava" -> null
+      - remote_ip_prefix  = "0.0.0.0/0" -> null
+      - security_group_id = "30bc1a97-d150-4d52-9e5e-b54f46e85caa" -> null
+      - tenant_id         = "7587d86892f449c3b11fdedb05976007" -> null
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4 will be destroyed
+  - resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_https4" {
+      - direction         = "ingress" -> null
+      - ethertype         = "IPv4" -> null
+      - id                = "7404a85d-9bb9-41c9-9f78-5a225f03012f" -> null
+      - port_range_max    = 443 -> null
+      - port_range_min    = 443 -> null
+      - protocol          = "tcp" -> null
+      - region            = "Ostrava" -> null
+      - remote_ip_prefix  = "0.0.0.0/0" -> null
+      - security_group_id = "30bc1a97-d150-4d52-9e5e-b54f46e85caa" -> null
+      - tenant_id         = "7587d86892f449c3b11fdedb05976007" -> null
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4 will be destroyed
+  - resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_icmp4" {
+      - direction         = "ingress" -> null
+      - ethertype         = "IPv4" -> null
+      - id                = "663be34f-2171-4999-9f79-7f3a9d985106" -> null
+      - port_range_max    = 0 -> null
+      - port_range_min    = 0 -> null
+      - protocol          = "icmp" -> null
+      - region            = "Ostrava" -> null
+      - remote_ip_prefix  = "0.0.0.0/0" -> null
+      - security_group_id = "30bc1a97-d150-4d52-9e5e-b54f46e85caa" -> null
+      - tenant_id         = "7587d86892f449c3b11fdedb05976007" -> null
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4 will be destroyed
+  - resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_ssh4" {
+      - direction         = "ingress" -> null
+      - ethertype         = "IPv4" -> null
+      - id                = "ba11b2f0-4a09-4774-a185-6b29980591e2" -> null
+      - port_range_max    = 22 -> null
+      - port_range_min    = 22 -> null
+      - protocol          = "tcp" -> null
+      - region            = "Ostrava" -> null
+      - remote_ip_prefix  = "0.0.0.0/0" -> null
+      - security_group_id = "30bc1a97-d150-4d52-9e5e-b54f46e85caa" -> null
+      - tenant_id         = "7587d86892f449c3b11fdedb05976007" -> null
+    }
+
+  # module.toplevel.openstack_networking_secgroup_v2.secgroup_default will be destroyed
+  - resource "openstack_networking_secgroup_v2" "secgroup_default" {
+      - all_tags    = [] -> null
+      - description = "general-tf-demo Security group" -> null
+      - id          = "30bc1a97-d150-4d52-9e5e-b54f46e85caa" -> null
+      - name        = "general-tf-demo_security_group" -> null
+      - region      = "Ostrava" -> null
+      - tags        = [] -> null
+      - tenant_id   = "7587d86892f449c3b11fdedb05976007" -> null
+    }
+
+  # module.toplevel.openstack_networking_subnet_v2.subnet_default[0] will be destroyed
+  - resource "openstack_networking_subnet_v2" "subnet_default" {
+      - all_tags        = [] -> null
+      - cidr            = "10.10.10.0/24" -> null
+      - dns_nameservers = [
+          - "1.1.1.1",
+          - "8.8.8.8",
+        ] -> null
+      - enable_dhcp     = true -> null
+      - gateway_ip      = "10.10.10.1" -> null
+      - id              = "8be2ddeb-bf42-465f-a828-af67beafea23" -> null
+      - ip_version      = 4 -> null
+      - name            = "general-tf-demo_subnet" -> null
+      - network_id      = "52a1637a-9950-46c5-8044-99c02fd608dd" -> null
+      - no_gateway      = false -> null
+      - region          = "Ostrava" -> null
+      - service_types   = [] -> null
+      - tags            = [] -> null
+      - tenant_id       = "7587d86892f449c3b11fdedb05976007" -> null
+
+      - allocation_pool {
+          - end   = "10.10.10.254" -> null
+          - start = "10.10.10.2" -> null
+        }
+
+      - allocation_pools {
+          - end   = "10.10.10.254" -> null
+          - start = "10.10.10.2" -> null
+        }
+    }
+
+Plan: 0 to add, 0 to change, 18 to destroy.
+
+Do you really want to destroy all resources?
+  Terraform will destroy all your managed infrastructure, as shown above.
+  There is no undo. Only 'yes' will be accepted to confirm.
+
+  Enter a value: yes
+
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Destroying... [id=195.113.243.33/b4621741-7b87-4d4f-af14-c8764be41209/]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Destroying... [id=ba11b2f0-4a09-4774-a185-6b29980591e2]
+module.toplevel.openstack_networking_router_interface_v2.router_default_interface[0]: Destroying... [id=1fbc50d1-50e7-4de8-8e0b-e919d12685b9]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Destroying... [id=7404a85d-9bb9-41c9-9f78-5a225f03012f]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Destroying... [id=663be34f-2171-4999-9f79-7f3a9d985106]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Destroying... [id=b0bbf3bb-e071-464e-8998-e615e9637ee4]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Destroying... [id=505d5414-53e4-4736-a886-992e16ab7a13]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Destroying... [id=f3d1409a-3dc6-48a8-916b-088bc3c967ab]
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Destruction complete after 1s
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Destroying... [id=c8ea0ba8-4c69-45ac-96dd-d08270d53e39]
+module.toplevel.openstack_compute_instance_v2.bastion: Destroying... [id=b4621741-7b87-4d4f-af14-c8764be41209]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Destruction complete after 6s
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Destruction complete after 6s
+module.toplevel.openstack_networking_router_interface_v2.router_default_interface[0]: Destruction complete after 9s
+module.toplevel.openstack_networking_router_v2.router_default[0]: Destroying... [id=7e061d3c-90c6-488c-9e8a-78d122fc0088]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Still destroying... [id=b0bbf3bb-e071-464e-8998-e615e9637ee4, 10s elapsed]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Still destroying... [id=663be34f-2171-4999-9f79-7f3a9d985106, 10s elapsed]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Still destroying... [id=7404a85d-9bb9-41c9-9f78-5a225f03012f, 10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Still destroying... [id=505d5414-53e4-4736-a886-992e16ab7a13, 10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Still destroying... [id=f3d1409a-3dc6-48a8-916b-088bc3c967ab, 10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Destruction complete after 11s
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Destruction complete after 11s
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Destroying... [id=d8144013-bf87-427b-b546-6bd17f4b749c]
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Destroying... [id=31851ec6-83ae-40f6-b108-c6742b5bdd42]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Destruction complete after 11s
+module.toplevel.openstack_compute_instance_v2.bastion: Still destroying... [id=b4621741-7b87-4d4f-af14-c8764be41209, 10s elapsed]
+module.toplevel.openstack_compute_instance_v2.bastion: Destruction complete after 10s
+module.toplevel.openstack_compute_keypair_v2.pubkey: Destroying... [id=general-tf-demo-keypair]
+module.toplevel.openstack_networking_port_v2.bastion_port: Destroying... [id=43c96551-3600-4244-b6d9-35a5ff4f5363]
+module.toplevel.openstack_compute_keypair_v2.pubkey: Destruction complete after 1s
+module.toplevel.openstack_networking_router_v2.router_default[0]: Destruction complete after 5s
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Destruction complete after 16s
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Destruction complete after 5s
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Destruction complete after 5s
+module.toplevel.openstack_networking_port_v2.bastion_port: Destruction complete after 6s
+module.toplevel.openstack_networking_subnet_v2.subnet_default[0]: Destroying... [id=8be2ddeb-bf42-465f-a828-af67beafea23]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Still destroying... [id=b0bbf3bb-e071-464e-8998-e615e9637ee4, 20s elapsed]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Destruction complete after 21s
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Destroying... [id=30bc1a97-d150-4d52-9e5e-b54f46e85caa]
+module.toplevel.openstack_networking_subnet_v2.subnet_default[0]: Destruction complete after 8s
+module.toplevel.openstack_networking_network_v2.network_default[0]: Destroying... [id=52a1637a-9950-46c5-8044-99c02fd608dd]
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Destruction complete after 8s
+module.toplevel.openstack_networking_network_v2.network_default[0]: Destruction complete after 5s
+
+Destroy complete! Resources: 18 destroyed.
+[freznicek@lenovo-t14 terraform 0]$
diff --git a/clouds/g2/ostrava/general/terraform/terraform-2tier_public_bastion_private_vm_farm-group-project-wrapper.log b/clouds/g2/ostrava/general/terraform/terraform-2tier_public_bastion_private_vm_farm-group-project-wrapper.log
new file mode 100644
index 0000000000000000000000000000000000000000..a0444929924ef844e186992a4d4aef5823ab4b09
--- /dev/null
+++ b/clouds/g2/ostrava/general/terraform/terraform-2tier_public_bastion_private_vm_farm-group-project-wrapper.log
@@ -0,0 +1,994 @@
+[freznicek@lenovo-t14 terraform 0]$ source ~/conf/g2-prod-ostrava-meta-cloud-training-all-roles-openrc.sh 
+[freznicek@lenovo-t14 terraform 0]$ ./terraform.sh detect-cloud
+
+Using OpenStack cloud:
+"Ostrava","identity","3.14","CURRENT","https://identity.ostrava.openstack.cloud.e-infra.cz/v3/","",""
+[freznicek@lenovo-t14 terraform 0]$ ./terraform.sh detect-project
+
+Using OpenStack group project named: meta-cloud-training
+[freznicek@lenovo-t14 terraform 0]$ ./terraform.sh validate-tools
+
+Using commandline tools:
+openstack --version:
+  openstack 5.5.0
+bash --version:
+  GNU bash, verze 5.2.15(1)-release (x86_64-redhat-linux-gnu)
+awk -W version:
+  GNU Awk 5.1.1, API: 3.1 (GNU MPFR 4.1.0-p13, GNU MP 6.2.1)
+ssh -V:
+  OpenSSH_8.8p1, OpenSSL 3.0.8 7 Feb 2023
+which ssh-keygen:
+  /usr/bin/ssh-keygen
+ncat --version:
+  Ncat: Version 7.93 ( https://nmap.org/ncat )
+grep --version:
+  grep (GNU grep) 3.7
+terraform version:
+  Terraform v1.5.2
+[freznicek@lenovo-t14 terraform 0]$ ./terraform.sh init
+
+Initializing the backend...
+Initializing modules...
+
+Initializing provider plugins...
+- Reusing previous version of terraform-provider-openstack/openstack from the dependency lock file
+- Using previously-installed terraform-provider-openstack/openstack v1.52.1
+
+Terraform has been successfully initialized!
+
+You may now begin working with Terraform. Try running "terraform plan" to see
+any changes that are required for your infrastructure. All Terraform commands
+should now work.
+
+If you ever set or change modules or backend configuration for Terraform,
+rerun this command to reinitialize your working directory. If you forget, other
+commands will detect it and remind you to do so if necessary.
+[freznicek@lenovo-t14 terraform 0]$ ./terraform.sh validate
+Success! The configuration is valid.
+
+
+[freznicek@lenovo-t14 terraform 127]$ ./terraform.sh plan --out group-project.plan
+module.toplevel.data.openstack_networking_network_v2.external_network: Reading...
+module.toplevel.data.openstack_images_image_v2.nodes_image: Reading...
+module.toplevel.data.openstack_networking_network_v2.external_network: Read complete after 1s [id=5a778b8d-4194-48fd-880d-181aaf7222c2]
+module.toplevel.data.openstack_images_image_v2.nodes_image: Read complete after 1s [id=9a071dba-67d5-445f-9d32-0f56360fb10f]
+
+Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with
+the following symbols:
+  + create
+
+Terraform will perform the following actions:
+
+  # module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate will be created
+  + resource "openstack_compute_floatingip_associate_v2" "bastion_fip_associate" {
+      + floating_ip = (known after apply)
+      + id          = (known after apply)
+      + instance_id = (known after apply)
+      + region      = (known after apply)
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.bastion will be created
+  + resource "openstack_compute_instance_v2" "bastion" {
+      + access_ip_v4        = (known after apply)
+      + access_ip_v6        = (known after apply)
+      + all_metadata        = (known after apply)
+      + all_tags            = (known after apply)
+      + availability_zone   = (known after apply)
+      + created             = (known after apply)
+      + flavor_id           = (known after apply)
+      + flavor_name         = "standard.small"
+      + force_delete        = false
+      + id                  = (known after apply)
+      + image_id            = (known after apply)
+      + image_name          = "ubuntu-jammy-x86_64"
+      + key_pair            = "general-tf-demo-keypair"
+      + name                = "general-tf-demo-bastion-server"
+      + power_state         = "active"
+      + region              = (known after apply)
+      + security_groups     = [
+          + "general-tf-demo_security_group",
+        ]
+      + stop_before_destroy = false
+      + updated             = (known after apply)
+      + user_data           = "c875cd218164c30103ab9399e7237ce0745df6ef"
+
+      + network {
+          + access_network = false
+          + fixed_ip_v4    = (known after apply)
+          + fixed_ip_v6    = (known after apply)
+          + floating_ip    = (known after apply)
+          + mac            = (known after apply)
+          + name           = (known after apply)
+          + port           = (known after apply)
+          + uuid           = (known after apply)
+        }
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.nodes[0] will be created
+  + resource "openstack_compute_instance_v2" "nodes" {
+      + access_ip_v4        = (known after apply)
+      + access_ip_v6        = (known after apply)
+      + all_metadata        = (known after apply)
+      + all_tags            = (known after apply)
+      + availability_zone   = (known after apply)
+      + created             = (known after apply)
+      + flavor_id           = (known after apply)
+      + flavor_name         = "e1.small"
+      + force_delete        = false
+      + id                  = (known after apply)
+      + image_id            = (known after apply)
+      + image_name          = "ubuntu-jammy-x86_64"
+      + key_pair            = "general-tf-demo-keypair"
+      + name                = "general-tf-demo-server-1"
+      + power_state         = "active"
+      + region              = (known after apply)
+      + security_groups     = [
+          + "general-tf-demo_security_group",
+        ]
+      + stop_before_destroy = false
+      + updated             = (known after apply)
+      + user_data           = "4f71dc6cb6cef198c6b7be755b918c12ed196042"
+
+      + block_device {
+          + boot_index            = 0
+          + delete_on_termination = true
+          + destination_type      = "local"
+          + multiattach           = false
+          + source_type           = "image"
+          + uuid                  = "9a071dba-67d5-445f-9d32-0f56360fb10f"
+          + volume_size           = 10
+        }
+
+      + network {
+          + access_network = false
+          + fixed_ip_v4    = (known after apply)
+          + fixed_ip_v6    = (known after apply)
+          + floating_ip    = (known after apply)
+          + mac            = (known after apply)
+          + name           = (known after apply)
+          + port           = (known after apply)
+          + uuid           = (known after apply)
+        }
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.nodes[1] will be created
+  + resource "openstack_compute_instance_v2" "nodes" {
+      + access_ip_v4        = (known after apply)
+      + access_ip_v6        = (known after apply)
+      + all_metadata        = (known after apply)
+      + all_tags            = (known after apply)
+      + availability_zone   = (known after apply)
+      + created             = (known after apply)
+      + flavor_id           = (known after apply)
+      + flavor_name         = "e1.small"
+      + force_delete        = false
+      + id                  = (known after apply)
+      + image_id            = (known after apply)
+      + image_name          = "ubuntu-jammy-x86_64"
+      + key_pair            = "general-tf-demo-keypair"
+      + name                = "general-tf-demo-server-2"
+      + power_state         = "active"
+      + region              = (known after apply)
+      + security_groups     = [
+          + "general-tf-demo_security_group",
+        ]
+      + stop_before_destroy = false
+      + updated             = (known after apply)
+      + user_data           = "02ba299fe90493a6657b8efdc54727f3ceceb1eb"
+
+      + block_device {
+          + boot_index            = 0
+          + delete_on_termination = true
+          + destination_type      = "local"
+          + multiattach           = false
+          + source_type           = "image"
+          + uuid                  = "9a071dba-67d5-445f-9d32-0f56360fb10f"
+          + volume_size           = 10
+        }
+
+      + network {
+          + access_network = false
+          + fixed_ip_v4    = (known after apply)
+          + fixed_ip_v6    = (known after apply)
+          + floating_ip    = (known after apply)
+          + mac            = (known after apply)
+          + name           = (known after apply)
+          + port           = (known after apply)
+          + uuid           = (known after apply)
+        }
+    }
+
+  # module.toplevel.openstack_compute_keypair_v2.pubkey will be created
+  + resource "openstack_compute_keypair_v2" "pubkey" {
+      + fingerprint = (known after apply)
+      + id          = (known after apply)
+      + name        = "general-tf-demo-keypair"
+      + private_key = (sensitive value)
+      + public_key  = <<-EOT
+            ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCh5m8MwPW2mSXPFj0P3SSnAjukeQinvdESJfUeVqxOLozx3uAprm+ghPlun4V0mqfIfs6SmJM2wN8oDjd18yJVgCc1tfaSTDYDnVdrVPzWQYDdCqca0a3z+fXuK/sffv+9SH4LdNGqm6wA6xjJAbp8HbsnUNbcxs9bt9GJToxRjVCHjawJxlBBUemuYU7x7B8tdq3W5Fxtc9dIEcpO7NLvVujSSzbTwxVANSpOsbhroN6IQP299hB7Ggoa7P0MNaJa9VHJSU4Z6N7lYDrMG5gkm6LxL6s37ljyQS7IVDNKbhj1WrWfxAWrYtQy5alzisa7uuaxb1dOwEEWzZI5Z59T79cZActsJJPf6e4zurYo8Tqw9vpJId8ohDEQVnmb5asDGMz5G8xXa4G98McVYL1766fN1FxflYLIVRi7uPTLjN76COh/Q/ZxYuByFYl62VY+vT3CxcYInsqOkhwgfmHMbepq3ndRRIrN97IDDMutT5peTLSwpsmME+202Tg12TL7aGMyeNfcRxJkm3nHvXXKSAu1fJKXPvTQZZRxctX9GQ+2iYBhB57WnmtvfzgfcrAdZTXH3Mh08xRB+Uv/VqupLhm9Fgs/+IVUyi0AezsL6NrGItyPVcVU2HXF6xdsIFyHgb2Jhbdm2PzN/n7lcRa6lkltPBpLSWZb0N0DSHbrJw== freznicek@fedora
+        EOT
+      + region      = (known after apply)
+      + user_id     = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_floatingip_v2.bastion_fip will be created
+  + resource "openstack_networking_floatingip_v2" "bastion_fip" {
+      + address    = (known after apply)
+      + all_tags   = (known after apply)
+      + dns_domain = (known after apply)
+      + dns_name   = (known after apply)
+      + fixed_ip   = (known after apply)
+      + id         = (known after apply)
+      + pool       = "external-ipv4-general-public"
+      + port_id    = (known after apply)
+      + region     = (known after apply)
+      + subnet_id  = (known after apply)
+      + tenant_id  = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_network_v2.network_default[0] will be created
+  + resource "openstack_networking_network_v2" "network_default" {
+      + admin_state_up          = true
+      + all_tags                = (known after apply)
+      + availability_zone_hints = (known after apply)
+      + dns_domain              = (known after apply)
+      + external                = (known after apply)
+      + id                      = (known after apply)
+      + mtu                     = (known after apply)
+      + name                    = "general-tf-demo_network"
+      + port_security_enabled   = (known after apply)
+      + qos_policy_id           = (known after apply)
+      + region                  = (known after apply)
+      + shared                  = (known after apply)
+      + tenant_id               = (known after apply)
+      + transparent_vlan        = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_port_v2.bastion_port will be created
+  + resource "openstack_networking_port_v2" "bastion_port" {
+      + admin_state_up         = true
+      + all_fixed_ips          = (known after apply)
+      + all_security_group_ids = (known after apply)
+      + all_tags               = (known after apply)
+      + device_id              = (known after apply)
+      + device_owner           = (known after apply)
+      + dns_assignment         = (known after apply)
+      + dns_name               = (known after apply)
+      + id                     = (known after apply)
+      + mac_address            = (known after apply)
+      + name                   = "general-tf-demo-bastion-server-port"
+      + network_id             = (known after apply)
+      + port_security_enabled  = (known after apply)
+      + qos_policy_id          = (known after apply)
+      + region                 = (known after apply)
+      + security_group_ids     = (known after apply)
+      + tenant_id              = (known after apply)
+
+      + fixed_ip {
+          + subnet_id = (known after apply)
+        }
+    }
+
+  # module.toplevel.openstack_networking_port_v2.nodes_ports[0] will be created
+  + resource "openstack_networking_port_v2" "nodes_ports" {
+      + admin_state_up         = true
+      + all_fixed_ips          = (known after apply)
+      + all_security_group_ids = (known after apply)
+      + all_tags               = (known after apply)
+      + device_id              = (known after apply)
+      + device_owner           = (known after apply)
+      + dns_assignment         = (known after apply)
+      + dns_name               = (known after apply)
+      + id                     = (known after apply)
+      + mac_address            = (known after apply)
+      + name                   = "general-tf-demo_server_port_1"
+      + network_id             = (known after apply)
+      + port_security_enabled  = (known after apply)
+      + qos_policy_id          = (known after apply)
+      + region                 = (known after apply)
+      + security_group_ids     = (known after apply)
+      + tenant_id              = (known after apply)
+
+      + fixed_ip {
+          + subnet_id = (known after apply)
+        }
+    }
+
+  # module.toplevel.openstack_networking_port_v2.nodes_ports[1] will be created
+  + resource "openstack_networking_port_v2" "nodes_ports" {
+      + admin_state_up         = true
+      + all_fixed_ips          = (known after apply)
+      + all_security_group_ids = (known after apply)
+      + all_tags               = (known after apply)
+      + device_id              = (known after apply)
+      + device_owner           = (known after apply)
+      + dns_assignment         = (known after apply)
+      + dns_name               = (known after apply)
+      + id                     = (known after apply)
+      + mac_address            = (known after apply)
+      + name                   = "general-tf-demo_server_port_2"
+      + network_id             = (known after apply)
+      + port_security_enabled  = (known after apply)
+      + qos_policy_id          = (known after apply)
+      + region                 = (known after apply)
+      + security_group_ids     = (known after apply)
+      + tenant_id              = (known after apply)
+
+      + fixed_ip {
+          + subnet_id = (known after apply)
+        }
+    }
+
+  # module.toplevel.openstack_networking_router_interface_v2.router_default_interface[0] will be created
+  + resource "openstack_networking_router_interface_v2" "router_default_interface" {
+      + force_destroy = false
+      + id            = (known after apply)
+      + port_id       = (known after apply)
+      + region        = (known after apply)
+      + router_id     = (known after apply)
+      + subnet_id     = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_router_v2.router_default[0] will be created
+  + resource "openstack_networking_router_v2" "router_default" {
+      + admin_state_up          = true
+      + all_tags                = (known after apply)
+      + availability_zone_hints = (known after apply)
+      + distributed             = (known after apply)
+      + enable_snat             = (known after apply)
+      + external_gateway        = (known after apply)
+      + external_network_id     = "5a778b8d-4194-48fd-880d-181aaf7222c2"
+      + id                      = (known after apply)
+      + name                    = "general-tf-demo_infra-test"
+      + region                  = (known after apply)
+      + tenant_id               = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4 will be created
+  + resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_http4" {
+      + direction         = "ingress"
+      + ethertype         = "IPv4"
+      + id                = (known after apply)
+      + port_range_max    = 80
+      + port_range_min    = 80
+      + protocol          = "tcp"
+      + region            = (known after apply)
+      + remote_group_id   = (known after apply)
+      + remote_ip_prefix  = "0.0.0.0/0"
+      + security_group_id = (known after apply)
+      + tenant_id         = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4 will be created
+  + resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_https4" {
+      + direction         = "ingress"
+      + ethertype         = "IPv4"
+      + id                = (known after apply)
+      + port_range_max    = 443
+      + port_range_min    = 443
+      + protocol          = "tcp"
+      + region            = (known after apply)
+      + remote_group_id   = (known after apply)
+      + remote_ip_prefix  = "0.0.0.0/0"
+      + security_group_id = (known after apply)
+      + tenant_id         = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4 will be created
+  + resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_icmp4" {
+      + direction         = "ingress"
+      + ethertype         = "IPv4"
+      + id                = (known after apply)
+      + port_range_max    = 0
+      + port_range_min    = 0
+      + protocol          = "icmp"
+      + region            = (known after apply)
+      + remote_group_id   = (known after apply)
+      + remote_ip_prefix  = "0.0.0.0/0"
+      + security_group_id = (known after apply)
+      + tenant_id         = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4 will be created
+  + resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_ssh4" {
+      + direction         = "ingress"
+      + ethertype         = "IPv4"
+      + id                = (known after apply)
+      + port_range_max    = 22
+      + port_range_min    = 22
+      + protocol          = "tcp"
+      + region            = (known after apply)
+      + remote_group_id   = (known after apply)
+      + remote_ip_prefix  = "0.0.0.0/0"
+      + security_group_id = (known after apply)
+      + tenant_id         = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_secgroup_v2.secgroup_default will be created
+  + resource "openstack_networking_secgroup_v2" "secgroup_default" {
+      + all_tags    = (known after apply)
+      + description = "general-tf-demo Security group"
+      + id          = (known after apply)
+      + name        = "general-tf-demo_security_group"
+      + region      = (known after apply)
+      + tenant_id   = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_subnet_v2.subnet_default[0] will be created
+  + resource "openstack_networking_subnet_v2" "subnet_default" {
+      + all_tags          = (known after apply)
+      + cidr              = "10.10.10.0/24"
+      + dns_nameservers   = [
+          + "1.1.1.1",
+          + "8.8.8.8",
+        ]
+      + enable_dhcp       = true
+      + gateway_ip        = (known after apply)
+      + id                = (known after apply)
+      + ip_version        = 4
+      + ipv6_address_mode = (known after apply)
+      + ipv6_ra_mode      = (known after apply)
+      + name              = "general-tf-demo_subnet"
+      + network_id        = (known after apply)
+      + no_gateway        = false
+      + region            = (known after apply)
+      + service_types     = (known after apply)
+      + tenant_id         = (known after apply)
+    }
+
+Plan: 18 to add, 0 to change, 0 to destroy.
+
+───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
+
+Saved the plan to: group-project.plan
+
+To perform exactly these actions, run the following command to apply:
+    terraform apply "group-project.plan"
+[freznicek@lenovo-t14 terraform 0]$ ./terraform.sh apply "group-project.plan"
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Creating...
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Creating...
+module.toplevel.openstack_compute_keypair_v2.pubkey: Creating...
+module.toplevel.openstack_networking_router_v2.router_default[0]: Creating...
+module.toplevel.openstack_networking_network_v2.network_default[0]: Creating...
+module.toplevel.openstack_compute_keypair_v2.pubkey: Creation complete after 1s [id=general-tf-demo-keypair]
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Creation complete after 1s [id=fe4f760c-52a4-4b9c-863a-be2a00ac49be]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Creating...
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Creating...
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Creating...
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Creating...
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Creation complete after 0s [id=ce5f3e79-ffcb-44e5-8d45-b12940d25361]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Creation complete after 1s [id=379d9e7c-d0d6-4a0d-bafc-6607a0e520b0]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Creation complete after 1s [id=e48033a1-7849-4968-a50f-6f80bd2a3f3c]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Creation complete after 1s [id=083d26d5-718b-4196-8baa-57357bf8deab]
+module.toplevel.openstack_networking_network_v2.network_default[0]: Creation complete after 6s [id=dcf3f972-4e43-47ae-8aa3-709d065e523a]
+module.toplevel.openstack_networking_subnet_v2.subnet_default[0]: Creating...
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Creation complete after 7s [id=af08b5cd-ee05-460d-b388-5dc450bb34b6]
+module.toplevel.openstack_networking_router_v2.router_default[0]: Creation complete after 9s [id=0c3d769c-ba0a-4eb2-9d7b-3d3728145996]
+module.toplevel.openstack_networking_subnet_v2.subnet_default[0]: Creation complete after 6s [id=54bc4d20-d0bf-4fd5-9467-5586a67a72f9]
+module.toplevel.openstack_networking_router_interface_v2.router_default_interface[0]: Creating...
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Creating...
+module.toplevel.openstack_networking_port_v2.bastion_port: Creating...
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Creating...
+module.toplevel.openstack_networking_port_v2.bastion_port: Creation complete after 5s [id=b89c3de0-8ec8-469e-963c-7abb9ad4e1af]
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Creation complete after 5s [id=9e517aee-1ad8-478c-8db8-0f7f86be42c2]
+module.toplevel.openstack_compute_instance_v2.bastion: Creating...
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Creation complete after 6s [id=8fd0aac2-e57a-41d9-827c-ceae90718ef3]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Creating...
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Creating...
+module.toplevel.openstack_networking_router_interface_v2.router_default_interface[0]: Creation complete after 6s [id=699e1c6f-3c53-435a-bb03-ab4a35e4b494]
+module.toplevel.openstack_compute_instance_v2.bastion: Still creating... [10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Still creating... [10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Still creating... [10s elapsed]
+module.toplevel.openstack_compute_instance_v2.bastion: Creation complete after 11s [id=f20f7683-4457-40c9-bac7-3b684a7c3d6f]
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Creating...
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Creation complete after 11s [id=79c4c4e0-5237-43d1-8e13-0c1c1428b606]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Creation complete after 11s [id=a1ee4124-acb9-4f15-803e-fb6daa6dd654]
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Creation complete after 1s [id=195.113.243.197/f20f7683-4457-40c9-bac7-3b684a7c3d6f/]
+
+Apply complete! Resources: 18 added, 0 changed, 0 destroyed.
+[freznicek@lenovo-t14 terraform 0]$ openstack server list | grep bastion
+| f20f7683-4457-40c9-bac7-3b684a7c3d6f | general-tf-demo-bastion-server | ACTIVE | general-tf-demo_network=10.10.10.56, 195.113.243.197      | ubuntu-jammy-x86_64 | standard.small |
+[freznicek@lenovo-t14 terraform 0]$ ssh ubuntu@195.113.243.197 'uname -a;uptime'
+The authenticity of host '195.113.243.197 (195.113.243.197)' can't be established.
+ED25519 key fingerprint is SHA256:aJ/LVBbadgLD84ksuXwOhubxXXHgildqSTq5jRFg+x8.
+This key is not known by any other names
+Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
+Warning: Permanently added '195.113.243.197' (ED25519) to the list of known hosts.
+Linux general-tf-demo-bastion-server 5.15.0-73-generic #80-Ubuntu SMP Mon May 15 15:18:26 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
+ 17:13:02 up 0 min,  0 users,  load average: 0.39, 0.12, 0.04
+[freznicek@lenovo-t14 terraform 0]$ ./terraform.sh destroy
+module.toplevel.openstack_compute_keypair_v2.pubkey: Refreshing state... [id=general-tf-demo-keypair]
+module.toplevel.data.openstack_images_image_v2.nodes_image: Reading...
+module.toplevel.data.openstack_networking_network_v2.external_network: Reading...
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Refreshing state... [id=fe4f760c-52a4-4b9c-863a-be2a00ac49be]
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Refreshing state... [id=af08b5cd-ee05-460d-b388-5dc450bb34b6]
+module.toplevel.openstack_networking_network_v2.network_default[0]: Refreshing state... [id=dcf3f972-4e43-47ae-8aa3-709d065e523a]
+module.toplevel.data.openstack_images_image_v2.nodes_image: Read complete after 1s [id=9a071dba-67d5-445f-9d32-0f56360fb10f]
+module.toplevel.data.openstack_networking_network_v2.external_network: Read complete after 1s [id=5a778b8d-4194-48fd-880d-181aaf7222c2]
+module.toplevel.openstack_networking_router_v2.router_default[0]: Refreshing state... [id=0c3d769c-ba0a-4eb2-9d7b-3d3728145996]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Refreshing state... [id=ce5f3e79-ffcb-44e5-8d45-b12940d25361]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Refreshing state... [id=083d26d5-718b-4196-8baa-57357bf8deab]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Refreshing state... [id=379d9e7c-d0d6-4a0d-bafc-6607a0e520b0]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Refreshing state... [id=e48033a1-7849-4968-a50f-6f80bd2a3f3c]
+module.toplevel.openstack_networking_subnet_v2.subnet_default[0]: Refreshing state... [id=54bc4d20-d0bf-4fd5-9467-5586a67a72f9]
+module.toplevel.openstack_networking_router_interface_v2.router_default_interface[0]: Refreshing state... [id=699e1c6f-3c53-435a-bb03-ab4a35e4b494]
+module.toplevel.openstack_networking_port_v2.bastion_port: Refreshing state... [id=b89c3de0-8ec8-469e-963c-7abb9ad4e1af]
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Refreshing state... [id=9e517aee-1ad8-478c-8db8-0f7f86be42c2]
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Refreshing state... [id=8fd0aac2-e57a-41d9-827c-ceae90718ef3]
+module.toplevel.openstack_compute_instance_v2.bastion: Refreshing state... [id=f20f7683-4457-40c9-bac7-3b684a7c3d6f]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Refreshing state... [id=a1ee4124-acb9-4f15-803e-fb6daa6dd654]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Refreshing state... [id=79c4c4e0-5237-43d1-8e13-0c1c1428b606]
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Refreshing state... [id=195.113.243.197/f20f7683-4457-40c9-bac7-3b684a7c3d6f/]
+
+Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with
+the following symbols:
+  - destroy
+
+Terraform will perform the following actions:
+
+  # module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate will be destroyed
+  - resource "openstack_compute_floatingip_associate_v2" "bastion_fip_associate" {
+      - floating_ip = "195.113.243.197" -> null
+      - id          = "195.113.243.197/f20f7683-4457-40c9-bac7-3b684a7c3d6f/" -> null
+      - instance_id = "f20f7683-4457-40c9-bac7-3b684a7c3d6f" -> null
+      - region      = "Ostrava" -> null
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.bastion will be destroyed
+  - resource "openstack_compute_instance_v2" "bastion" {
+      - access_ip_v4        = "10.10.10.56" -> null
+      - all_metadata        = {} -> null
+      - all_tags            = [] -> null
+      - availability_zone   = "nova" -> null
+      - created             = "2023-08-06 17:12:05 +0000 UTC" -> null
+      - flavor_id           = "f5bb56cc-297d-4f1b-bf17-202fa0a8e9a3" -> null
+      - flavor_name         = "standard.small" -> null
+      - force_delete        = false -> null
+      - id                  = "f20f7683-4457-40c9-bac7-3b684a7c3d6f" -> null
+      - image_id            = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+      - image_name          = "ubuntu-jammy-x86_64" -> null
+      - key_pair            = "general-tf-demo-keypair" -> null
+      - name                = "general-tf-demo-bastion-server" -> null
+      - power_state         = "active" -> null
+      - region              = "Ostrava" -> null
+      - security_groups     = [
+          - "general-tf-demo_security_group",
+        ] -> null
+      - stop_before_destroy = false -> null
+      - tags                = [] -> null
+      - updated             = "2023-08-06 17:12:09 +0000 UTC" -> null
+      - user_data           = "c875cd218164c30103ab9399e7237ce0745df6ef" -> null
+
+      - network {
+          - access_network = false -> null
+          - fixed_ip_v4    = "10.10.10.56" -> null
+          - mac            = "fa:16:3e:80:2d:4a" -> null
+          - name           = "general-tf-demo_network" -> null
+          - port           = "b89c3de0-8ec8-469e-963c-7abb9ad4e1af" -> null
+          - uuid           = "dcf3f972-4e43-47ae-8aa3-709d065e523a" -> null
+        }
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.nodes[0] will be destroyed
+  - resource "openstack_compute_instance_v2" "nodes" {
+      - access_ip_v4        = "10.10.10.171" -> null
+      - all_metadata        = {} -> null
+      - all_tags            = [] -> null
+      - availability_zone   = "nova" -> null
+      - created             = "2023-08-06 17:12:06 +0000 UTC" -> null
+      - flavor_id           = "77f5fa9b-255a-4bff-af57-be0bcf0dba03" -> null
+      - flavor_name         = "e1.small" -> null
+      - force_delete        = false -> null
+      - id                  = "a1ee4124-acb9-4f15-803e-fb6daa6dd654" -> null
+      - image_id            = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+      - image_name          = "ubuntu-jammy-x86_64" -> null
+      - key_pair            = "general-tf-demo-keypair" -> null
+      - name                = "general-tf-demo-server-1" -> null
+      - power_state         = "active" -> null
+      - region              = "Ostrava" -> null
+      - security_groups     = [
+          - "general-tf-demo_security_group",
+        ] -> null
+      - stop_before_destroy = false -> null
+      - tags                = [] -> null
+      - updated             = "2023-08-06 17:12:11 +0000 UTC" -> null
+      - user_data           = "4f71dc6cb6cef198c6b7be755b918c12ed196042" -> null
+
+      - block_device {
+          - boot_index            = 0 -> null
+          - delete_on_termination = true -> null
+          - destination_type      = "local" -> null
+          - multiattach           = false -> null
+          - source_type           = "image" -> null
+          - uuid                  = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+          - volume_size           = 10 -> null
+        }
+
+      - network {
+          - access_network = false -> null
+          - fixed_ip_v4    = "10.10.10.171" -> null
+          - mac            = "fa:16:3e:e9:8d:1c" -> null
+          - name           = "general-tf-demo_network" -> null
+          - port           = "8fd0aac2-e57a-41d9-827c-ceae90718ef3" -> null
+          - uuid           = "dcf3f972-4e43-47ae-8aa3-709d065e523a" -> null
+        }
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.nodes[1] will be destroyed
+  - resource "openstack_compute_instance_v2" "nodes" {
+      - access_ip_v4        = "10.10.10.36" -> null
+      - all_metadata        = {} -> null
+      - all_tags            = [] -> null
+      - availability_zone   = "nova" -> null
+      - created             = "2023-08-06 17:12:06 +0000 UTC" -> null
+      - flavor_id           = "77f5fa9b-255a-4bff-af57-be0bcf0dba03" -> null
+      - flavor_name         = "e1.small" -> null
+      - force_delete        = false -> null
+      - id                  = "79c4c4e0-5237-43d1-8e13-0c1c1428b606" -> null
+      - image_id            = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+      - image_name          = "ubuntu-jammy-x86_64" -> null
+      - key_pair            = "general-tf-demo-keypair" -> null
+      - name                = "general-tf-demo-server-2" -> null
+      - power_state         = "active" -> null
+      - region              = "Ostrava" -> null
+      - security_groups     = [
+          - "general-tf-demo_security_group",
+        ] -> null
+      - stop_before_destroy = false -> null
+      - tags                = [] -> null
+      - updated             = "2023-08-06 17:12:11 +0000 UTC" -> null
+      - user_data           = "02ba299fe90493a6657b8efdc54727f3ceceb1eb" -> null
+
+      - block_device {
+          - boot_index            = 0 -> null
+          - delete_on_termination = true -> null
+          - destination_type      = "local" -> null
+          - multiattach           = false -> null
+          - source_type           = "image" -> null
+          - uuid                  = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+          - volume_size           = 10 -> null
+        }
+
+      - network {
+          - access_network = false -> null
+          - fixed_ip_v4    = "10.10.10.36" -> null
+          - mac            = "fa:16:3e:fb:4f:fc" -> null
+          - name           = "general-tf-demo_network" -> null
+          - port           = "9e517aee-1ad8-478c-8db8-0f7f86be42c2" -> null
+          - uuid           = "dcf3f972-4e43-47ae-8aa3-709d065e523a" -> null
+        }
+    }
+
+  # module.toplevel.openstack_compute_keypair_v2.pubkey will be destroyed
+  - resource "openstack_compute_keypair_v2" "pubkey" {
+      - fingerprint = "75:e0:a4:d6:4c:76:ba:21:f1:d1:75:c8:75:22:93:4f" -> null
+      - id          = "general-tf-demo-keypair" -> null
+      - name        = "general-tf-demo-keypair" -> null
+      - public_key  = <<-EOT
+            ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCh5m8MwPW2mSXPFj0P3SSnAjukeQinvdESJfUeVqxOLozx3uAprm+ghPlun4V0mqfIfs6SmJM2wN8oDjd18yJVgCc1tfaSTDYDnVdrVPzWQYDdCqca0a3z+fXuK/sffv+9SH4LdNGqm6wA6xjJAbp8HbsnUNbcxs9bt9GJToxRjVCHjawJxlBBUemuYU7x7B8tdq3W5Fxtc9dIEcpO7NLvVujSSzbTwxVANSpOsbhroN6IQP299hB7Ggoa7P0MNaJa9VHJSU4Z6N7lYDrMG5gkm6LxL6s37ljyQS7IVDNKbhj1WrWfxAWrYtQy5alzisa7uuaxb1dOwEEWzZI5Z59T79cZActsJJPf6e4zurYo8Tqw9vpJId8ohDEQVnmb5asDGMz5G8xXa4G98McVYL1766fN1FxflYLIVRi7uPTLjN76COh/Q/ZxYuByFYl62VY+vT3CxcYInsqOkhwgfmHMbepq3ndRRIrN97IDDMutT5peTLSwpsmME+202Tg12TL7aGMyeNfcRxJkm3nHvXXKSAu1fJKXPvTQZZRxctX9GQ+2iYBhB57WnmtvfzgfcrAdZTXH3Mh08xRB+Uv/VqupLhm9Fgs/+IVUyi0AezsL6NrGItyPVcVU2HXF6xdsIFyHgb2Jhbdm2PzN/n7lcRa6lkltPBpLSWZb0N0DSHbrJw== freznicek@fedora
+        EOT -> null
+      - region      = "Ostrava" -> null
+    }
+
+  # module.toplevel.openstack_networking_floatingip_v2.bastion_fip will be destroyed
+  - resource "openstack_networking_floatingip_v2" "bastion_fip" {
+      - address   = "195.113.243.197" -> null
+      - all_tags  = [] -> null
+      - fixed_ip  = "10.10.10.56" -> null
+      - id        = "af08b5cd-ee05-460d-b388-5dc450bb34b6" -> null
+      - pool      = "external-ipv4-general-public" -> null
+      - port_id   = "b89c3de0-8ec8-469e-963c-7abb9ad4e1af" -> null
+      - region    = "Ostrava" -> null
+      - tags      = [] -> null
+      - tenant_id = "7587d86892f449c3b11fdedb05976007" -> null
+    }
+
+  # module.toplevel.openstack_networking_network_v2.network_default[0] will be destroyed
+  - resource "openstack_networking_network_v2" "network_default" {
+      - admin_state_up          = true -> null
+      - all_tags                = [] -> null
+      - availability_zone_hints = [
+          - "nova",
+        ] -> null
+      - external                = false -> null
+      - id                      = "dcf3f972-4e43-47ae-8aa3-709d065e523a" -> null
+      - mtu                     = 8950 -> null
+      - name                    = "general-tf-demo_network" -> null
+      - port_security_enabled   = true -> null
+      - region                  = "Ostrava" -> null
+      - shared                  = false -> null
+      - tags                    = [] -> null
+      - tenant_id               = "7587d86892f449c3b11fdedb05976007" -> null
+      - transparent_vlan        = false -> null
+    }
+
+  # module.toplevel.openstack_networking_port_v2.bastion_port will be destroyed
+  - resource "openstack_networking_port_v2" "bastion_port" {
+      - admin_state_up         = true -> null
+      - all_fixed_ips          = [
+          - "10.10.10.56",
+        ] -> null
+      - all_security_group_ids = [
+          - "fe4f760c-52a4-4b9c-863a-be2a00ac49be",
+        ] -> null
+      - all_tags               = [] -> null
+      - device_id              = "f20f7683-4457-40c9-bac7-3b684a7c3d6f" -> null
+      - device_owner           = "compute:nova" -> null
+      - dns_assignment         = [] -> null
+      - id                     = "b89c3de0-8ec8-469e-963c-7abb9ad4e1af" -> null
+      - mac_address            = "fa:16:3e:80:2d:4a" -> null
+      - name                   = "general-tf-demo-bastion-server-port" -> null
+      - network_id             = "dcf3f972-4e43-47ae-8aa3-709d065e523a" -> null
+      - port_security_enabled  = true -> null
+      - region                 = "Ostrava" -> null
+      - security_group_ids     = [
+          - "fe4f760c-52a4-4b9c-863a-be2a00ac49be",
+        ] -> null
+      - tags                   = [] -> null
+      - tenant_id              = "7587d86892f449c3b11fdedb05976007" -> null
+
+      - binding {
+          - vif_details = {} -> null
+          - vnic_type   = "normal" -> null
+        }
+
+      - fixed_ip {
+          - subnet_id = "54bc4d20-d0bf-4fd5-9467-5586a67a72f9" -> null
+        }
+    }
+
+  # module.toplevel.openstack_networking_port_v2.nodes_ports[0] will be destroyed
+  - resource "openstack_networking_port_v2" "nodes_ports" {
+      - admin_state_up         = true -> null
+      - all_fixed_ips          = [
+          - "10.10.10.171",
+        ] -> null
+      - all_security_group_ids = [
+          - "fe4f760c-52a4-4b9c-863a-be2a00ac49be",
+        ] -> null
+      - all_tags               = [] -> null
+      - device_id              = "a1ee4124-acb9-4f15-803e-fb6daa6dd654" -> null
+      - device_owner           = "compute:nova" -> null
+      - dns_assignment         = [] -> null
+      - id                     = "8fd0aac2-e57a-41d9-827c-ceae90718ef3" -> null
+      - mac_address            = "fa:16:3e:e9:8d:1c" -> null
+      - name                   = "general-tf-demo_server_port_1" -> null
+      - network_id             = "dcf3f972-4e43-47ae-8aa3-709d065e523a" -> null
+      - port_security_enabled  = true -> null
+      - region                 = "Ostrava" -> null
+      - security_group_ids     = [
+          - "fe4f760c-52a4-4b9c-863a-be2a00ac49be",
+        ] -> null
+      - tags                   = [] -> null
+      - tenant_id              = "7587d86892f449c3b11fdedb05976007" -> null
+
+      - binding {
+          - vif_details = {} -> null
+          - vnic_type   = "normal" -> null
+        }
+
+      - fixed_ip {
+          - subnet_id = "54bc4d20-d0bf-4fd5-9467-5586a67a72f9" -> null
+        }
+    }
+
+  # module.toplevel.openstack_networking_port_v2.nodes_ports[1] will be destroyed
+  - resource "openstack_networking_port_v2" "nodes_ports" {
+      - admin_state_up         = true -> null
+      - all_fixed_ips          = [
+          - "10.10.10.36",
+        ] -> null
+      - all_security_group_ids = [
+          - "fe4f760c-52a4-4b9c-863a-be2a00ac49be",
+        ] -> null
+      - all_tags               = [] -> null
+      - device_id              = "79c4c4e0-5237-43d1-8e13-0c1c1428b606" -> null
+      - device_owner           = "compute:nova" -> null
+      - dns_assignment         = [] -> null
+      - id                     = "9e517aee-1ad8-478c-8db8-0f7f86be42c2" -> null
+      - mac_address            = "fa:16:3e:fb:4f:fc" -> null
+      - name                   = "general-tf-demo_server_port_2" -> null
+      - network_id             = "dcf3f972-4e43-47ae-8aa3-709d065e523a" -> null
+      - port_security_enabled  = true -> null
+      - region                 = "Ostrava" -> null
+      - security_group_ids     = [
+          - "fe4f760c-52a4-4b9c-863a-be2a00ac49be",
+        ] -> null
+      - tags                   = [] -> null
+      - tenant_id              = "7587d86892f449c3b11fdedb05976007" -> null
+
+      - binding {
+          - vif_details = {} -> null
+          - vnic_type   = "normal" -> null
+        }
+
+      - fixed_ip {
+          - subnet_id = "54bc4d20-d0bf-4fd5-9467-5586a67a72f9" -> null
+        }
+    }
+
+  # module.toplevel.openstack_networking_router_interface_v2.router_default_interface[0] will be destroyed
+  - resource "openstack_networking_router_interface_v2" "router_default_interface" {
+      - force_destroy = false -> null
+      - id            = "699e1c6f-3c53-435a-bb03-ab4a35e4b494" -> null
+      - port_id       = "699e1c6f-3c53-435a-bb03-ab4a35e4b494" -> null
+      - region        = "Ostrava" -> null
+      - router_id     = "0c3d769c-ba0a-4eb2-9d7b-3d3728145996" -> null
+      - subnet_id     = "54bc4d20-d0bf-4fd5-9467-5586a67a72f9" -> null
+    }
+
+  # module.toplevel.openstack_networking_router_v2.router_default[0] will be destroyed
+  - resource "openstack_networking_router_v2" "router_default" {
+      - admin_state_up          = true -> null
+      - all_tags                = [] -> null
+      - availability_zone_hints = [
+          - "nova",
+        ] -> null
+      - distributed             = false -> null
+      - enable_snat             = true -> null
+      - external_gateway        = "5a778b8d-4194-48fd-880d-181aaf7222c2" -> null
+      - external_network_id     = "5a778b8d-4194-48fd-880d-181aaf7222c2" -> null
+      - id                      = "0c3d769c-ba0a-4eb2-9d7b-3d3728145996" -> null
+      - name                    = "general-tf-demo_infra-test" -> null
+      - region                  = "Ostrava" -> null
+      - tags                    = [] -> null
+      - tenant_id               = "7587d86892f449c3b11fdedb05976007" -> null
+
+      - external_fixed_ip {
+          - ip_address = "195.113.243.169" -> null
+          - subnet_id  = "a8843622-1b54-414a-918a-1861434135ce" -> null
+        }
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4 will be destroyed
+  - resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_http4" {
+      - direction         = "ingress" -> null
+      - ethertype         = "IPv4" -> null
+      - id                = "083d26d5-718b-4196-8baa-57357bf8deab" -> null
+      - port_range_max    = 80 -> null
+      - port_range_min    = 80 -> null
+      - protocol          = "tcp" -> null
+      - region            = "Ostrava" -> null
+      - remote_ip_prefix  = "0.0.0.0/0" -> null
+      - security_group_id = "fe4f760c-52a4-4b9c-863a-be2a00ac49be" -> null
+      - tenant_id         = "7587d86892f449c3b11fdedb05976007" -> null
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4 will be destroyed
+  - resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_https4" {
+      - direction         = "ingress" -> null
+      - ethertype         = "IPv4" -> null
+      - id                = "e48033a1-7849-4968-a50f-6f80bd2a3f3c" -> null
+      - port_range_max    = 443 -> null
+      - port_range_min    = 443 -> null
+      - protocol          = "tcp" -> null
+      - region            = "Ostrava" -> null
+      - remote_ip_prefix  = "0.0.0.0/0" -> null
+      - security_group_id = "fe4f760c-52a4-4b9c-863a-be2a00ac49be" -> null
+      - tenant_id         = "7587d86892f449c3b11fdedb05976007" -> null
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4 will be destroyed
+  - resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_icmp4" {
+      - direction         = "ingress" -> null
+      - ethertype         = "IPv4" -> null
+      - id                = "ce5f3e79-ffcb-44e5-8d45-b12940d25361" -> null
+      - port_range_max    = 0 -> null
+      - port_range_min    = 0 -> null
+      - protocol          = "icmp" -> null
+      - region            = "Ostrava" -> null
+      - remote_ip_prefix  = "0.0.0.0/0" -> null
+      - security_group_id = "fe4f760c-52a4-4b9c-863a-be2a00ac49be" -> null
+      - tenant_id         = "7587d86892f449c3b11fdedb05976007" -> null
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4 will be destroyed
+  - resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_ssh4" {
+      - direction         = "ingress" -> null
+      - ethertype         = "IPv4" -> null
+      - id                = "379d9e7c-d0d6-4a0d-bafc-6607a0e520b0" -> null
+      - port_range_max    = 22 -> null
+      - port_range_min    = 22 -> null
+      - protocol          = "tcp" -> null
+      - region            = "Ostrava" -> null
+      - remote_ip_prefix  = "0.0.0.0/0" -> null
+      - security_group_id = "fe4f760c-52a4-4b9c-863a-be2a00ac49be" -> null
+      - tenant_id         = "7587d86892f449c3b11fdedb05976007" -> null
+    }
+
+  # module.toplevel.openstack_networking_secgroup_v2.secgroup_default will be destroyed
+  - resource "openstack_networking_secgroup_v2" "secgroup_default" {
+      - all_tags    = [] -> null
+      - description = "general-tf-demo Security group" -> null
+      - id          = "fe4f760c-52a4-4b9c-863a-be2a00ac49be" -> null
+      - name        = "general-tf-demo_security_group" -> null
+      - region      = "Ostrava" -> null
+      - tags        = [] -> null
+      - tenant_id   = "7587d86892f449c3b11fdedb05976007" -> null
+    }
+
+  # module.toplevel.openstack_networking_subnet_v2.subnet_default[0] will be destroyed
+  - resource "openstack_networking_subnet_v2" "subnet_default" {
+      - all_tags        = [] -> null
+      - cidr            = "10.10.10.0/24" -> null
+      - dns_nameservers = [
+          - "1.1.1.1",
+          - "8.8.8.8",
+        ] -> null
+      - enable_dhcp     = true -> null
+      - gateway_ip      = "10.10.10.1" -> null
+      - id              = "54bc4d20-d0bf-4fd5-9467-5586a67a72f9" -> null
+      - ip_version      = 4 -> null
+      - name            = "general-tf-demo_subnet" -> null
+      - network_id      = "dcf3f972-4e43-47ae-8aa3-709d065e523a" -> null
+      - no_gateway      = false -> null
+      - region          = "Ostrava" -> null
+      - service_types   = [] -> null
+      - tags            = [] -> null
+      - tenant_id       = "7587d86892f449c3b11fdedb05976007" -> null
+
+      - allocation_pool {
+          - end   = "10.10.10.254" -> null
+          - start = "10.10.10.2" -> null
+        }
+
+      - allocation_pools {
+          - end   = "10.10.10.254" -> null
+          - start = "10.10.10.2" -> null
+        }
+    }
+
+Plan: 0 to add, 0 to change, 18 to destroy.
+
+Do you really want to destroy all resources?
+  Terraform will destroy all your managed infrastructure, as shown above.
+  There is no undo. Only 'yes' will be accepted to confirm.
+
+  Enter a value: yes
+
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Destroying... [id=195.113.243.197/f20f7683-4457-40c9-bac7-3b684a7c3d6f/]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Destroying... [id=379d9e7c-d0d6-4a0d-bafc-6607a0e520b0]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Destroying... [id=ce5f3e79-ffcb-44e5-8d45-b12940d25361]
+module.toplevel.openstack_networking_router_interface_v2.router_default_interface[0]: Destroying... [id=699e1c6f-3c53-435a-bb03-ab4a35e4b494]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Destroying... [id=e48033a1-7849-4968-a50f-6f80bd2a3f3c]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Destroying... [id=083d26d5-718b-4196-8baa-57357bf8deab]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Destroying... [id=79c4c4e0-5237-43d1-8e13-0c1c1428b606]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Destroying... [id=a1ee4124-acb9-4f15-803e-fb6daa6dd654]
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Destruction complete after 2s
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Destroying... [id=af08b5cd-ee05-460d-b388-5dc450bb34b6]
+module.toplevel.openstack_compute_instance_v2.bastion: Destroying... [id=f20f7683-4457-40c9-bac7-3b684a7c3d6f]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Destruction complete after 6s
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Destruction complete after 5s
+module.toplevel.openstack_networking_router_interface_v2.router_default_interface[0]: Destruction complete after 10s
+module.toplevel.openstack_networking_router_v2.router_default[0]: Destroying... [id=0c3d769c-ba0a-4eb2-9d7b-3d3728145996]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Still destroying... [id=379d9e7c-d0d6-4a0d-bafc-6607a0e520b0, 10s elapsed]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Still destroying... [id=e48033a1-7849-4968-a50f-6f80bd2a3f3c, 10s elapsed]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Still destroying... [id=083d26d5-718b-4196-8baa-57357bf8deab, 10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Still destroying... [id=a1ee4124-acb9-4f15-803e-fb6daa6dd654, 10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Still destroying... [id=79c4c4e0-5237-43d1-8e13-0c1c1428b606, 10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Destruction complete after 11s
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Destruction complete after 11s
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Destroying... [id=8fd0aac2-e57a-41d9-827c-ceae90718ef3]
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Destroying... [id=9e517aee-1ad8-478c-8db8-0f7f86be42c2]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Destruction complete after 11s
+module.toplevel.openstack_compute_instance_v2.bastion: Still destroying... [id=f20f7683-4457-40c9-bac7-3b684a7c3d6f, 10s elapsed]
+module.toplevel.openstack_compute_instance_v2.bastion: Destruction complete after 10s
+module.toplevel.openstack_compute_keypair_v2.pubkey: Destroying... [id=general-tf-demo-keypair]
+module.toplevel.openstack_networking_port_v2.bastion_port: Destroying... [id=b89c3de0-8ec8-469e-963c-7abb9ad4e1af]
+module.toplevel.openstack_compute_keypair_v2.pubkey: Destruction complete after 0s
+module.toplevel.openstack_networking_router_v2.router_default[0]: Destruction complete after 6s
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Destruction complete after 16s
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Destruction complete after 5s
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Destruction complete after 5s
+module.toplevel.openstack_networking_port_v2.bastion_port: Destruction complete after 6s
+module.toplevel.openstack_networking_subnet_v2.subnet_default[0]: Destroying... [id=54bc4d20-d0bf-4fd5-9467-5586a67a72f9]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Still destroying... [id=379d9e7c-d0d6-4a0d-bafc-6607a0e520b0, 20s elapsed]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Destruction complete after 21s
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Destroying... [id=fe4f760c-52a4-4b9c-863a-be2a00ac49be]
+module.toplevel.openstack_networking_subnet_v2.subnet_default[0]: Destruction complete after 8s
+module.toplevel.openstack_networking_network_v2.network_default[0]: Destroying... [id=dcf3f972-4e43-47ae-8aa3-709d065e523a]
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Destruction complete after 8s
+module.toplevel.openstack_networking_network_v2.network_default[0]: Destruction complete after 5s
+
+Destroy complete! Resources: 18 destroyed.
+[freznicek@lenovo-t14 terraform 0]$
diff --git a/clouds/g2/ostrava/general/terraform/terraform-2tier_public_bastion_private_vm_farm-personal-project-no-wrapper.log b/clouds/g2/ostrava/general/terraform/terraform-2tier_public_bastion_private_vm_farm-personal-project-no-wrapper.log
new file mode 100644
index 0000000000000000000000000000000000000000..45e343abac20b8d7c1f6cf8f0fe8b08a4a56a980
--- /dev/null
+++ b/clouds/g2/ostrava/general/terraform/terraform-2tier_public_bastion_private_vm_farm-personal-project-no-wrapper.log
@@ -0,0 +1,809 @@
+[freznicek@lenovo-t14 terraform 0]$ source ~/conf/g2-prod-ostrava-freznicek-all-roles.sh.inc
+[freznicek@lenovo-t14 terraform 0]$ terraform init
+
+Initializing the backend...
+Initializing modules...
+
+Initializing provider plugins...
+- Reusing previous version of terraform-provider-openstack/openstack from the dependency lock file
+- Using previously-installed terraform-provider-openstack/openstack v1.52.1
+
+Terraform has been successfully initialized!
+
+You may now begin working with Terraform. Try running "terraform plan" to see
+any changes that are required for your infrastructure. All Terraform commands
+should now work.
+
+If you ever set or change modules or backend configuration for Terraform,
+rerun this command to reinitialize your working directory. If you forget, other
+commands will detect it and remind you to do so if necessary.
+[freznicek@lenovo-t14 terraform 0]$ terraform validate
+Success! The configuration is valid.
+
+[freznicek@lenovo-t14 terraform 0]$ terraform plan --out personal-project.plan --var-file=personal-projects.tfvars
+module.toplevel.data.openstack_networking_network_v2.external_network: Reading...
+module.toplevel.data.openstack_networking_network_v2.internal_shared_personal_network[0]: Reading...
+module.toplevel.data.openstack_images_image_v2.nodes_image: Reading...
+module.toplevel.data.openstack_networking_subnet_v2.internal_shared_personal_subnet[0]: Reading...
+module.toplevel.data.openstack_networking_subnet_v2.internal_shared_personal_subnet[0]: Read complete after 1s [id=3170bacf-72e9-418f-8b0c-72f2e67eefd1]
+module.toplevel.data.openstack_networking_network_v2.internal_shared_personal_network[0]: Read complete after 1s [id=968fe5cf-e7b3-4d47-8239-d6f3ea2edd16]
+module.toplevel.data.openstack_networking_network_v2.external_network: Read complete after 1s [id=5a778b8d-4194-48fd-880d-181aaf7222c2]
+module.toplevel.data.openstack_images_image_v2.nodes_image: Read complete after 1s [id=9a071dba-67d5-445f-9d32-0f56360fb10f]
+
+Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with
+the following symbols:
+  + create
+
+Terraform will perform the following actions:
+
+  # module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate will be created
+  + resource "openstack_compute_floatingip_associate_v2" "bastion_fip_associate" {
+      + floating_ip = (known after apply)
+      + id          = (known after apply)
+      + instance_id = (known after apply)
+      + region      = (known after apply)
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.bastion will be created
+  + resource "openstack_compute_instance_v2" "bastion" {
+      + access_ip_v4        = (known after apply)
+      + access_ip_v6        = (known after apply)
+      + all_metadata        = (known after apply)
+      + all_tags            = (known after apply)
+      + availability_zone   = (known after apply)
+      + created             = (known after apply)
+      + flavor_id           = (known after apply)
+      + flavor_name         = "standard.small"
+      + force_delete        = false
+      + id                  = (known after apply)
+      + image_id            = (known after apply)
+      + image_name          = "ubuntu-jammy-x86_64"
+      + key_pair            = "general-tf-demo-keypair"
+      + name                = "general-tf-demo-bastion-server"
+      + power_state         = "active"
+      + region              = (known after apply)
+      + security_groups     = [
+          + "general-tf-demo_security_group",
+        ]
+      + stop_before_destroy = false
+      + updated             = (known after apply)
+      + user_data           = "c875cd218164c30103ab9399e7237ce0745df6ef"
+
+      + network {
+          + access_network = false
+          + fixed_ip_v4    = (known after apply)
+          + fixed_ip_v6    = (known after apply)
+          + floating_ip    = (known after apply)
+          + mac            = (known after apply)
+          + name           = (known after apply)
+          + port           = (known after apply)
+          + uuid           = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16"
+        }
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.nodes[0] will be created
+  + resource "openstack_compute_instance_v2" "nodes" {
+      + access_ip_v4        = (known after apply)
+      + access_ip_v6        = (known after apply)
+      + all_metadata        = (known after apply)
+      + all_tags            = (known after apply)
+      + availability_zone   = (known after apply)
+      + created             = (known after apply)
+      + flavor_id           = (known after apply)
+      + flavor_name         = "e1.small"
+      + force_delete        = false
+      + id                  = (known after apply)
+      + image_id            = (known after apply)
+      + image_name          = "ubuntu-jammy-x86_64"
+      + key_pair            = "general-tf-demo-keypair"
+      + name                = "general-tf-demo-server-1"
+      + power_state         = "active"
+      + region              = (known after apply)
+      + security_groups     = [
+          + "general-tf-demo_security_group",
+        ]
+      + stop_before_destroy = false
+      + updated             = (known after apply)
+      + user_data           = "4f71dc6cb6cef198c6b7be755b918c12ed196042"
+
+      + block_device {
+          + boot_index            = 0
+          + delete_on_termination = true
+          + destination_type      = "local"
+          + multiattach           = false
+          + source_type           = "image"
+          + uuid                  = "9a071dba-67d5-445f-9d32-0f56360fb10f"
+          + volume_size           = 10
+        }
+
+      + network {
+          + access_network = false
+          + fixed_ip_v4    = (known after apply)
+          + fixed_ip_v6    = (known after apply)
+          + floating_ip    = (known after apply)
+          + mac            = (known after apply)
+          + name           = (known after apply)
+          + port           = (known after apply)
+          + uuid           = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16"
+        }
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.nodes[1] will be created
+  + resource "openstack_compute_instance_v2" "nodes" {
+      + access_ip_v4        = (known after apply)
+      + access_ip_v6        = (known after apply)
+      + all_metadata        = (known after apply)
+      + all_tags            = (known after apply)
+      + availability_zone   = (known after apply)
+      + created             = (known after apply)
+      + flavor_id           = (known after apply)
+      + flavor_name         = "e1.small"
+      + force_delete        = false
+      + id                  = (known after apply)
+      + image_id            = (known after apply)
+      + image_name          = "ubuntu-jammy-x86_64"
+      + key_pair            = "general-tf-demo-keypair"
+      + name                = "general-tf-demo-server-2"
+      + power_state         = "active"
+      + region              = (known after apply)
+      + security_groups     = [
+          + "general-tf-demo_security_group",
+        ]
+      + stop_before_destroy = false
+      + updated             = (known after apply)
+      + user_data           = "02ba299fe90493a6657b8efdc54727f3ceceb1eb"
+
+      + block_device {
+          + boot_index            = 0
+          + delete_on_termination = true
+          + destination_type      = "local"
+          + multiattach           = false
+          + source_type           = "image"
+          + uuid                  = "9a071dba-67d5-445f-9d32-0f56360fb10f"
+          + volume_size           = 10
+        }
+
+      + network {
+          + access_network = false
+          + fixed_ip_v4    = (known after apply)
+          + fixed_ip_v6    = (known after apply)
+          + floating_ip    = (known after apply)
+          + mac            = (known after apply)
+          + name           = (known after apply)
+          + port           = (known after apply)
+          + uuid           = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16"
+        }
+    }
+
+  # module.toplevel.openstack_compute_keypair_v2.pubkey will be created
+  + resource "openstack_compute_keypair_v2" "pubkey" {
+      + fingerprint = (known after apply)
+      + id          = (known after apply)
+      + name        = "general-tf-demo-keypair"
+      + private_key = (sensitive value)
+      + public_key  = <<-EOT
+            ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCh5m8MwPW2mSXPFj0P3SSnAjukeQinvdESJfUeVqxOLozx3uAprm+ghPlun4V0mqfIfs6SmJM2wN8oDjd18yJVgCc1tfaSTDYDnVdrVPzWQYDdCqca0a3z+fXuK/sffv+9SH4LdNGqm6wA6xjJAbp8HbsnUNbcxs9bt9GJToxRjVCHjawJxlBBUemuYU7x7B8tdq3W5Fxtc9dIEcpO7NLvVujSSzbTwxVANSpOsbhroN6IQP299hB7Ggoa7P0MNaJa9VHJSU4Z6N7lYDrMG5gkm6LxL6s37ljyQS7IVDNKbhj1WrWfxAWrYtQy5alzisa7uuaxb1dOwEEWzZI5Z59T79cZActsJJPf6e4zurYo8Tqw9vpJId8ohDEQVnmb5asDGMz5G8xXa4G98McVYL1766fN1FxflYLIVRi7uPTLjN76COh/Q/ZxYuByFYl62VY+vT3CxcYInsqOkhwgfmHMbepq3ndRRIrN97IDDMutT5peTLSwpsmME+202Tg12TL7aGMyeNfcRxJkm3nHvXXKSAu1fJKXPvTQZZRxctX9GQ+2iYBhB57WnmtvfzgfcrAdZTXH3Mh08xRB+Uv/VqupLhm9Fgs/+IVUyi0AezsL6NrGItyPVcVU2HXF6xdsIFyHgb2Jhbdm2PzN/n7lcRa6lkltPBpLSWZb0N0DSHbrJw== freznicek@fedora
+        EOT
+      + region      = (known after apply)
+      + user_id     = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_floatingip_v2.bastion_fip will be created
+  + resource "openstack_networking_floatingip_v2" "bastion_fip" {
+      + address    = (known after apply)
+      + all_tags   = (known after apply)
+      + dns_domain = (known after apply)
+      + dns_name   = (known after apply)
+      + fixed_ip   = (known after apply)
+      + id         = (known after apply)
+      + pool       = "external-ipv4-general-public"
+      + port_id    = (known after apply)
+      + region     = (known after apply)
+      + subnet_id  = (known after apply)
+      + tenant_id  = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_port_v2.bastion_port will be created
+  + resource "openstack_networking_port_v2" "bastion_port" {
+      + admin_state_up         = true
+      + all_fixed_ips          = (known after apply)
+      + all_security_group_ids = (known after apply)
+      + all_tags               = (known after apply)
+      + device_id              = (known after apply)
+      + device_owner           = (known after apply)
+      + dns_assignment         = (known after apply)
+      + dns_name               = (known after apply)
+      + id                     = (known after apply)
+      + mac_address            = (known after apply)
+      + name                   = "general-tf-demo-bastion-server-port"
+      + network_id             = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16"
+      + port_security_enabled  = (known after apply)
+      + qos_policy_id          = (known after apply)
+      + region                 = (known after apply)
+      + security_group_ids     = (known after apply)
+      + tenant_id              = (known after apply)
+
+      + fixed_ip {
+          + subnet_id = "3170bacf-72e9-418f-8b0c-72f2e67eefd1"
+        }
+    }
+
+  # module.toplevel.openstack_networking_port_v2.nodes_ports[0] will be created
+  + resource "openstack_networking_port_v2" "nodes_ports" {
+      + admin_state_up         = true
+      + all_fixed_ips          = (known after apply)
+      + all_security_group_ids = (known after apply)
+      + all_tags               = (known after apply)
+      + device_id              = (known after apply)
+      + device_owner           = (known after apply)
+      + dns_assignment         = (known after apply)
+      + dns_name               = (known after apply)
+      + id                     = (known after apply)
+      + mac_address            = (known after apply)
+      + name                   = "general-tf-demo_server_port_1"
+      + network_id             = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16"
+      + port_security_enabled  = (known after apply)
+      + qos_policy_id          = (known after apply)
+      + region                 = (known after apply)
+      + security_group_ids     = (known after apply)
+      + tenant_id              = (known after apply)
+
+      + fixed_ip {
+          + subnet_id = "3170bacf-72e9-418f-8b0c-72f2e67eefd1"
+        }
+    }
+
+  # module.toplevel.openstack_networking_port_v2.nodes_ports[1] will be created
+  + resource "openstack_networking_port_v2" "nodes_ports" {
+      + admin_state_up         = true
+      + all_fixed_ips          = (known after apply)
+      + all_security_group_ids = (known after apply)
+      + all_tags               = (known after apply)
+      + device_id              = (known after apply)
+      + device_owner           = (known after apply)
+      + dns_assignment         = (known after apply)
+      + dns_name               = (known after apply)
+      + id                     = (known after apply)
+      + mac_address            = (known after apply)
+      + name                   = "general-tf-demo_server_port_2"
+      + network_id             = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16"
+      + port_security_enabled  = (known after apply)
+      + qos_policy_id          = (known after apply)
+      + region                 = (known after apply)
+      + security_group_ids     = (known after apply)
+      + tenant_id              = (known after apply)
+
+      + fixed_ip {
+          + subnet_id = "3170bacf-72e9-418f-8b0c-72f2e67eefd1"
+        }
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4 will be created
+  + resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_http4" {
+      + direction         = "ingress"
+      + ethertype         = "IPv4"
+      + id                = (known after apply)
+      + port_range_max    = 80
+      + port_range_min    = 80
+      + protocol          = "tcp"
+      + region            = (known after apply)
+      + remote_group_id   = (known after apply)
+      + remote_ip_prefix  = "0.0.0.0/0"
+      + security_group_id = (known after apply)
+      + tenant_id         = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4 will be created
+  + resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_https4" {
+      + direction         = "ingress"
+      + ethertype         = "IPv4"
+      + id                = (known after apply)
+      + port_range_max    = 443
+      + port_range_min    = 443
+      + protocol          = "tcp"
+      + region            = (known after apply)
+      + remote_group_id   = (known after apply)
+      + remote_ip_prefix  = "0.0.0.0/0"
+      + security_group_id = (known after apply)
+      + tenant_id         = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4 will be created
+  + resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_icmp4" {
+      + direction         = "ingress"
+      + ethertype         = "IPv4"
+      + id                = (known after apply)
+      + port_range_max    = 0
+      + port_range_min    = 0
+      + protocol          = "icmp"
+      + region            = (known after apply)
+      + remote_group_id   = (known after apply)
+      + remote_ip_prefix  = "0.0.0.0/0"
+      + security_group_id = (known after apply)
+      + tenant_id         = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4 will be created
+  + resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_ssh4" {
+      + direction         = "ingress"
+      + ethertype         = "IPv4"
+      + id                = (known after apply)
+      + port_range_max    = 22
+      + port_range_min    = 22
+      + protocol          = "tcp"
+      + region            = (known after apply)
+      + remote_group_id   = (known after apply)
+      + remote_ip_prefix  = "0.0.0.0/0"
+      + security_group_id = (known after apply)
+      + tenant_id         = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_secgroup_v2.secgroup_default will be created
+  + resource "openstack_networking_secgroup_v2" "secgroup_default" {
+      + all_tags    = (known after apply)
+      + description = "general-tf-demo Security group"
+      + id          = (known after apply)
+      + name        = "general-tf-demo_security_group"
+      + region      = (known after apply)
+      + tenant_id   = (known after apply)
+    }
+
+Plan: 14 to add, 0 to change, 0 to destroy.
+
+───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
+
+Saved the plan to: personal-project.plan
+
+To perform exactly these actions, run the following command to apply:
+    terraform apply "personal-project.plan"
+[freznicek@lenovo-t14 terraform 0]$ terraform apply "personal-project.plan"
+module.toplevel.openstack_compute_keypair_v2.pubkey: Creating...
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Creating...
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Creating...
+module.toplevel.openstack_compute_keypair_v2.pubkey: Creation complete after 1s [id=general-tf-demo-keypair]
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Creation complete after 1s [id=1a3db219-cb03-4e1a-9418-8a638bb3a4cf]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Creating...
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Creating...
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Creating...
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Creating...
+module.toplevel.openstack_networking_port_v2.bastion_port: Creating...
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Creating...
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Creating...
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Creation complete after 0s [id=7a02eeb5-8022-45b4-991b-289f46a255a9]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Creation complete after 1s [id=6a84e08f-c025-4d31-8a58-a982edc594ca]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Creation complete after 1s [id=915f5422-1869-4c82-aa73-29fd5f9b90a0]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Creation complete after 1s [id=6fd4e03e-1f8b-4c9d-b70b-395767545498]
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Creation complete after 7s [id=4bf848b8-867c-422f-8701-0c253b2a7b56]
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Creation complete after 6s [id=e5b9583a-aae4-4d14-ad58-85298c9a6697]
+module.toplevel.openstack_networking_port_v2.bastion_port: Creation complete after 6s [id=38802910-0f68-405b-b1ae-232297ff6a26]
+module.toplevel.openstack_compute_instance_v2.bastion: Creating...
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Creation complete after 6s [id=cc27a165-09bc-493a-a028-2a1e9f06c5b1]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Creating...
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Creating...
+module.toplevel.openstack_compute_instance_v2.bastion: Still creating... [10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Still creating... [10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Still creating... [10s elapsed]
+module.toplevel.openstack_compute_instance_v2.bastion: Creation complete after 11s [id=c7f8f0ba-915a-40e6-8645-2542673351fb]
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Creating...
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Creation complete after 11s [id=38da3e58-0638-4115-a0d5-f7721e12df85]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Creation complete after 12s [id=f96f232b-03e8-45d7-adf7-258f9337a500]
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Creation complete after 2s [id=195.113.243.117/c7f8f0ba-915a-40e6-8645-2542673351fb/]
+
+Apply complete! Resources: 14 added, 0 changed, 0 destroyed.
+[freznicek@lenovo-t14 terraform 0]$ openstack server list
++--------------------------------------+--------------------------------+--------+------------------------------------------------------------+---------------------+----------------+
+| ID                                   | Name                           | Status | Networks                                                   | Image               | Flavor         |
++--------------------------------------+--------------------------------+--------+------------------------------------------------------------+---------------------+----------------+
+| 38da3e58-0638-4115-a0d5-f7721e12df85 | general-tf-demo-server-1       | ACTIVE | internal-ipv4-general-private=172.22.3.30                  | ubuntu-jammy-x86_64 | e1.small       |
+| c7f8f0ba-915a-40e6-8645-2542673351fb | general-tf-demo-bastion-server | ACTIVE | internal-ipv4-general-private=172.22.2.46, 195.113.243.117 | ubuntu-jammy-x86_64 | standard.small |
+| f96f232b-03e8-45d7-adf7-258f9337a500 | general-tf-demo-server-2       | ACTIVE | internal-ipv4-general-private=172.22.2.180                 | ubuntu-jammy-x86_64 | e1.small       |
++--------------------------------------+--------------------------------+--------+------------------------------------------------------------+---------------------+----------------+
+[freznicek@lenovo-t14 terraform 0]$ ssh ubuntu@195.113.243.117 'uname -a;uptime'
+The authenticity of host '195.113.243.117 (195.113.243.117)' can't be established.
+ED25519 key fingerprint is SHA256:mtll/X2XfIO5QginmB06RQmqNpOnPFEYHCZKgW111r4.
+This key is not known by any other names
+Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
+Warning: Permanently added '195.113.243.117' (ED25519) to the list of known hosts.
+Linux general-tf-demo-bastion-server 5.15.0-73-generic #80-Ubuntu SMP Mon May 15 15:18:26 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
+ 17:33:13 up 2 min,  0 users,  load average: 0.22, 0.20, 0.08
+[freznicek@lenovo-t14 terraform 255]$ terraform destroy
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Refreshing state... [id=1a3db219-cb03-4e1a-9418-8a638bb3a4cf]
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Refreshing state... [id=4bf848b8-867c-422f-8701-0c253b2a7b56]
+module.toplevel.data.openstack_networking_network_v2.external_network: Reading...
+module.toplevel.data.openstack_images_image_v2.nodes_image: Reading...
+module.toplevel.openstack_compute_keypair_v2.pubkey: Refreshing state... [id=general-tf-demo-keypair]
+module.toplevel.data.openstack_images_image_v2.nodes_image: Read complete after 1s [id=9a071dba-67d5-445f-9d32-0f56360fb10f]
+module.toplevel.data.openstack_networking_network_v2.external_network: Read complete after 1s [id=5a778b8d-4194-48fd-880d-181aaf7222c2]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Refreshing state... [id=915f5422-1869-4c82-aa73-29fd5f9b90a0]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Refreshing state... [id=6fd4e03e-1f8b-4c9d-b70b-395767545498]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Refreshing state... [id=7a02eeb5-8022-45b4-991b-289f46a255a9]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Refreshing state... [id=6a84e08f-c025-4d31-8a58-a982edc594ca]
+module.toplevel.openstack_networking_port_v2.bastion_port: Refreshing state... [id=38802910-0f68-405b-b1ae-232297ff6a26]
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Refreshing state... [id=e5b9583a-aae4-4d14-ad58-85298c9a6697]
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Refreshing state... [id=cc27a165-09bc-493a-a028-2a1e9f06c5b1]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Refreshing state... [id=38da3e58-0638-4115-a0d5-f7721e12df85]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Refreshing state... [id=f96f232b-03e8-45d7-adf7-258f9337a500]
+module.toplevel.openstack_compute_instance_v2.bastion: Refreshing state... [id=c7f8f0ba-915a-40e6-8645-2542673351fb]
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Refreshing state... [id=195.113.243.117/c7f8f0ba-915a-40e6-8645-2542673351fb/]
+
+Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with
+the following symbols:
+  - destroy
+
+Terraform will perform the following actions:
+
+  # module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate will be destroyed
+  - resource "openstack_compute_floatingip_associate_v2" "bastion_fip_associate" {
+      - floating_ip = "195.113.243.117" -> null
+      - id          = "195.113.243.117/c7f8f0ba-915a-40e6-8645-2542673351fb/" -> null
+      - instance_id = "c7f8f0ba-915a-40e6-8645-2542673351fb" -> null
+      - region      = "Ostrava" -> null
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.bastion will be destroyed
+  - resource "openstack_compute_instance_v2" "bastion" {
+      - access_ip_v4        = "172.22.2.46" -> null
+      - all_metadata        = {} -> null
+      - all_tags            = [] -> null
+      - availability_zone   = "nova" -> null
+      - created             = "2023-08-06 17:30:42 +0000 UTC" -> null
+      - flavor_id           = "f5bb56cc-297d-4f1b-bf17-202fa0a8e9a3" -> null
+      - flavor_name         = "standard.small" -> null
+      - force_delete        = false -> null
+      - id                  = "c7f8f0ba-915a-40e6-8645-2542673351fb" -> null
+      - image_id            = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+      - image_name          = "ubuntu-jammy-x86_64" -> null
+      - key_pair            = "general-tf-demo-keypair" -> null
+      - name                = "general-tf-demo-bastion-server" -> null
+      - power_state         = "active" -> null
+      - region              = "Ostrava" -> null
+      - security_groups     = [
+          - "general-tf-demo_security_group",
+        ] -> null
+      - stop_before_destroy = false -> null
+      - tags                = [] -> null
+      - updated             = "2023-08-06 17:30:47 +0000 UTC" -> null
+      - user_data           = "c875cd218164c30103ab9399e7237ce0745df6ef" -> null
+
+      - network {
+          - access_network = false -> null
+          - fixed_ip_v4    = "172.22.2.46" -> null
+          - mac            = "fa:16:3e:e2:e1:79" -> null
+          - name           = "internal-ipv4-general-private" -> null
+          - port           = "38802910-0f68-405b-b1ae-232297ff6a26" -> null
+          - uuid           = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16" -> null
+        }
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.nodes[0] will be destroyed
+  - resource "openstack_compute_instance_v2" "nodes" {
+      - access_ip_v4        = "172.22.3.30" -> null
+      - all_metadata        = {} -> null
+      - all_tags            = [] -> null
+      - availability_zone   = "nova" -> null
+      - created             = "2023-08-06 17:30:42 +0000 UTC" -> null
+      - flavor_id           = "77f5fa9b-255a-4bff-af57-be0bcf0dba03" -> null
+      - flavor_name         = "e1.small" -> null
+      - force_delete        = false -> null
+      - id                  = "38da3e58-0638-4115-a0d5-f7721e12df85" -> null
+      - image_id            = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+      - image_name          = "ubuntu-jammy-x86_64" -> null
+      - key_pair            = "general-tf-demo-keypair" -> null
+      - name                = "general-tf-demo-server-1" -> null
+      - power_state         = "active" -> null
+      - region              = "Ostrava" -> null
+      - security_groups     = [
+          - "general-tf-demo_security_group",
+        ] -> null
+      - stop_before_destroy = false -> null
+      - tags                = [] -> null
+      - updated             = "2023-08-06 17:30:47 +0000 UTC" -> null
+      - user_data           = "4f71dc6cb6cef198c6b7be755b918c12ed196042" -> null
+
+      - block_device {
+          - boot_index            = 0 -> null
+          - delete_on_termination = true -> null
+          - destination_type      = "local" -> null
+          - multiattach           = false -> null
+          - source_type           = "image" -> null
+          - uuid                  = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+          - volume_size           = 10 -> null
+        }
+
+      - network {
+          - access_network = false -> null
+          - fixed_ip_v4    = "172.22.3.30" -> null
+          - mac            = "fa:16:3e:3f:75:61" -> null
+          - name           = "internal-ipv4-general-private" -> null
+          - port           = "e5b9583a-aae4-4d14-ad58-85298c9a6697" -> null
+          - uuid           = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16" -> null
+        }
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.nodes[1] will be destroyed
+  - resource "openstack_compute_instance_v2" "nodes" {
+      - access_ip_v4        = "172.22.2.180" -> null
+      - all_metadata        = {} -> null
+      - all_tags            = [] -> null
+      - availability_zone   = "nova" -> null
+      - created             = "2023-08-06 17:30:42 +0000 UTC" -> null
+      - flavor_id           = "77f5fa9b-255a-4bff-af57-be0bcf0dba03" -> null
+      - flavor_name         = "e1.small" -> null
+      - force_delete        = false -> null
+      - id                  = "f96f232b-03e8-45d7-adf7-258f9337a500" -> null
+      - image_id            = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+      - image_name          = "ubuntu-jammy-x86_64" -> null
+      - key_pair            = "general-tf-demo-keypair" -> null
+      - name                = "general-tf-demo-server-2" -> null
+      - power_state         = "active" -> null
+      - region              = "Ostrava" -> null
+      - security_groups     = [
+          - "general-tf-demo_security_group",
+        ] -> null
+      - stop_before_destroy = false -> null
+      - tags                = [] -> null
+      - updated             = "2023-08-06 17:30:46 +0000 UTC" -> null
+      - user_data           = "02ba299fe90493a6657b8efdc54727f3ceceb1eb" -> null
+
+      - block_device {
+          - boot_index            = 0 -> null
+          - delete_on_termination = true -> null
+          - destination_type      = "local" -> null
+          - multiattach           = false -> null
+          - source_type           = "image" -> null
+          - uuid                  = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+          - volume_size           = 10 -> null
+        }
+
+      - network {
+          - access_network = false -> null
+          - fixed_ip_v4    = "172.22.2.180" -> null
+          - mac            = "fa:16:3e:61:55:31" -> null
+          - name           = "internal-ipv4-general-private" -> null
+          - port           = "cc27a165-09bc-493a-a028-2a1e9f06c5b1" -> null
+          - uuid           = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16" -> null
+        }
+    }
+
+  # module.toplevel.openstack_compute_keypair_v2.pubkey will be destroyed
+  - resource "openstack_compute_keypair_v2" "pubkey" {
+      - fingerprint = "75:e0:a4:d6:4c:76:ba:21:f1:d1:75:c8:75:22:93:4f" -> null
+      - id          = "general-tf-demo-keypair" -> null
+      - name        = "general-tf-demo-keypair" -> null
+      - public_key  = <<-EOT
+            ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCh5m8MwPW2mSXPFj0P3SSnAjukeQinvdESJfUeVqxOLozx3uAprm+ghPlun4V0mqfIfs6SmJM2wN8oDjd18yJVgCc1tfaSTDYDnVdrVPzWQYDdCqca0a3z+fXuK/sffv+9SH4LdNGqm6wA6xjJAbp8HbsnUNbcxs9bt9GJToxRjVCHjawJxlBBUemuYU7x7B8tdq3W5Fxtc9dIEcpO7NLvVujSSzbTwxVANSpOsbhroN6IQP299hB7Ggoa7P0MNaJa9VHJSU4Z6N7lYDrMG5gkm6LxL6s37ljyQS7IVDNKbhj1WrWfxAWrYtQy5alzisa7uuaxb1dOwEEWzZI5Z59T79cZActsJJPf6e4zurYo8Tqw9vpJId8ohDEQVnmb5asDGMz5G8xXa4G98McVYL1766fN1FxflYLIVRi7uPTLjN76COh/Q/ZxYuByFYl62VY+vT3CxcYInsqOkhwgfmHMbepq3ndRRIrN97IDDMutT5peTLSwpsmME+202Tg12TL7aGMyeNfcRxJkm3nHvXXKSAu1fJKXPvTQZZRxctX9GQ+2iYBhB57WnmtvfzgfcrAdZTXH3Mh08xRB+Uv/VqupLhm9Fgs/+IVUyi0AezsL6NrGItyPVcVU2HXF6xdsIFyHgb2Jhbdm2PzN/n7lcRa6lkltPBpLSWZb0N0DSHbrJw== freznicek@fedora
+        EOT -> null
+      - region      = "Ostrava" -> null
+    }
+
+  # module.toplevel.openstack_networking_floatingip_v2.bastion_fip will be destroyed
+  - resource "openstack_networking_floatingip_v2" "bastion_fip" {
+      - address   = "195.113.243.117" -> null
+      - all_tags  = [] -> null
+      - fixed_ip  = "172.22.2.46" -> null
+      - id        = "4bf848b8-867c-422f-8701-0c253b2a7b56" -> null
+      - pool      = "external-ipv4-general-public" -> null
+      - port_id   = "38802910-0f68-405b-b1ae-232297ff6a26" -> null
+      - region    = "Ostrava" -> null
+      - tags      = [] -> null
+      - tenant_id = "1b20bb11afbe41c1bd681d2e319ab9a0" -> null
+    }
+
+  # module.toplevel.openstack_networking_port_v2.bastion_port will be destroyed
+  - resource "openstack_networking_port_v2" "bastion_port" {
+      - admin_state_up         = true -> null
+      - all_fixed_ips          = [
+          - "172.22.2.46",
+        ] -> null
+      - all_security_group_ids = [
+          - "1a3db219-cb03-4e1a-9418-8a638bb3a4cf",
+        ] -> null
+      - all_tags               = [] -> null
+      - device_id              = "c7f8f0ba-915a-40e6-8645-2542673351fb" -> null
+      - device_owner           = "compute:nova" -> null
+      - dns_assignment         = [] -> null
+      - id                     = "38802910-0f68-405b-b1ae-232297ff6a26" -> null
+      - mac_address            = "fa:16:3e:e2:e1:79" -> null
+      - name                   = "general-tf-demo-bastion-server-port" -> null
+      - network_id             = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16" -> null
+      - port_security_enabled  = true -> null
+      - region                 = "Ostrava" -> null
+      - security_group_ids     = [
+          - "1a3db219-cb03-4e1a-9418-8a638bb3a4cf",
+        ] -> null
+      - tags                   = [] -> null
+      - tenant_id              = "1b20bb11afbe41c1bd681d2e319ab9a0" -> null
+
+      - binding {
+          - vif_details = {} -> null
+          - vnic_type   = "normal" -> null
+        }
+
+      - fixed_ip {
+          - subnet_id = "3170bacf-72e9-418f-8b0c-72f2e67eefd1" -> null
+        }
+    }
+
+  # module.toplevel.openstack_networking_port_v2.nodes_ports[0] will be destroyed
+  - resource "openstack_networking_port_v2" "nodes_ports" {
+      - admin_state_up         = true -> null
+      - all_fixed_ips          = [
+          - "172.22.3.30",
+        ] -> null
+      - all_security_group_ids = [
+          - "1a3db219-cb03-4e1a-9418-8a638bb3a4cf",
+        ] -> null
+      - all_tags               = [] -> null
+      - device_id              = "38da3e58-0638-4115-a0d5-f7721e12df85" -> null
+      - device_owner           = "compute:nova" -> null
+      - dns_assignment         = [] -> null
+      - id                     = "e5b9583a-aae4-4d14-ad58-85298c9a6697" -> null
+      - mac_address            = "fa:16:3e:3f:75:61" -> null
+      - name                   = "general-tf-demo_server_port_1" -> null
+      - network_id             = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16" -> null
+      - port_security_enabled  = true -> null
+      - region                 = "Ostrava" -> null
+      - security_group_ids     = [
+          - "1a3db219-cb03-4e1a-9418-8a638bb3a4cf",
+        ] -> null
+      - tags                   = [] -> null
+      - tenant_id              = "1b20bb11afbe41c1bd681d2e319ab9a0" -> null
+
+      - binding {
+          - vif_details = {} -> null
+          - vnic_type   = "normal" -> null
+        }
+
+      - fixed_ip {
+          - subnet_id = "3170bacf-72e9-418f-8b0c-72f2e67eefd1" -> null
+        }
+    }
+
+  # module.toplevel.openstack_networking_port_v2.nodes_ports[1] will be destroyed
+  - resource "openstack_networking_port_v2" "nodes_ports" {
+      - admin_state_up         = true -> null
+      - all_fixed_ips          = [
+          - "172.22.2.180",
+        ] -> null
+      - all_security_group_ids = [
+          - "1a3db219-cb03-4e1a-9418-8a638bb3a4cf",
+        ] -> null
+      - all_tags               = [] -> null
+      - device_id              = "f96f232b-03e8-45d7-adf7-258f9337a500" -> null
+      - device_owner           = "compute:nova" -> null
+      - dns_assignment         = [] -> null
+      - id                     = "cc27a165-09bc-493a-a028-2a1e9f06c5b1" -> null
+      - mac_address            = "fa:16:3e:61:55:31" -> null
+      - name                   = "general-tf-demo_server_port_2" -> null
+      - network_id             = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16" -> null
+      - port_security_enabled  = true -> null
+      - region                 = "Ostrava" -> null
+      - security_group_ids     = [
+          - "1a3db219-cb03-4e1a-9418-8a638bb3a4cf",
+        ] -> null
+      - tags                   = [] -> null
+      - tenant_id              = "1b20bb11afbe41c1bd681d2e319ab9a0" -> null
+
+      - binding {
+          - vif_details = {} -> null
+          - vnic_type   = "normal" -> null
+        }
+
+      - fixed_ip {
+          - subnet_id = "3170bacf-72e9-418f-8b0c-72f2e67eefd1" -> null
+        }
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4 will be destroyed
+  - resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_http4" {
+      - direction         = "ingress" -> null
+      - ethertype         = "IPv4" -> null
+      - id                = "6a84e08f-c025-4d31-8a58-a982edc594ca" -> null
+      - port_range_max    = 80 -> null
+      - port_range_min    = 80 -> null
+      - protocol          = "tcp" -> null
+      - region            = "Ostrava" -> null
+      - remote_ip_prefix  = "0.0.0.0/0" -> null
+      - security_group_id = "1a3db219-cb03-4e1a-9418-8a638bb3a4cf" -> null
+      - tenant_id         = "1b20bb11afbe41c1bd681d2e319ab9a0" -> null
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4 will be destroyed
+  - resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_https4" {
+      - direction         = "ingress" -> null
+      - ethertype         = "IPv4" -> null
+      - id                = "915f5422-1869-4c82-aa73-29fd5f9b90a0" -> null
+      - port_range_max    = 443 -> null
+      - port_range_min    = 443 -> null
+      - protocol          = "tcp" -> null
+      - region            = "Ostrava" -> null
+      - remote_ip_prefix  = "0.0.0.0/0" -> null
+      - security_group_id = "1a3db219-cb03-4e1a-9418-8a638bb3a4cf" -> null
+      - tenant_id         = "1b20bb11afbe41c1bd681d2e319ab9a0" -> null
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4 will be destroyed
+  - resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_icmp4" {
+      - direction         = "ingress" -> null
+      - ethertype         = "IPv4" -> null
+      - id                = "6fd4e03e-1f8b-4c9d-b70b-395767545498" -> null
+      - port_range_max    = 0 -> null
+      - port_range_min    = 0 -> null
+      - protocol          = "icmp" -> null
+      - region            = "Ostrava" -> null
+      - remote_ip_prefix  = "0.0.0.0/0" -> null
+      - security_group_id = "1a3db219-cb03-4e1a-9418-8a638bb3a4cf" -> null
+      - tenant_id         = "1b20bb11afbe41c1bd681d2e319ab9a0" -> null
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4 will be destroyed
+  - resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_ssh4" {
+      - direction         = "ingress" -> null
+      - ethertype         = "IPv4" -> null
+      - id                = "7a02eeb5-8022-45b4-991b-289f46a255a9" -> null
+      - port_range_max    = 22 -> null
+      - port_range_min    = 22 -> null
+      - protocol          = "tcp" -> null
+      - region            = "Ostrava" -> null
+      - remote_ip_prefix  = "0.0.0.0/0" -> null
+      - security_group_id = "1a3db219-cb03-4e1a-9418-8a638bb3a4cf" -> null
+      - tenant_id         = "1b20bb11afbe41c1bd681d2e319ab9a0" -> null
+    }
+
+  # module.toplevel.openstack_networking_secgroup_v2.secgroup_default will be destroyed
+  - resource "openstack_networking_secgroup_v2" "secgroup_default" {
+      - all_tags    = [] -> null
+      - description = "general-tf-demo Security group" -> null
+      - id          = "1a3db219-cb03-4e1a-9418-8a638bb3a4cf" -> null
+      - name        = "general-tf-demo_security_group" -> null
+      - region      = "Ostrava" -> null
+      - tags        = [] -> null
+      - tenant_id   = "1b20bb11afbe41c1bd681d2e319ab9a0" -> null
+    }
+
+Plan: 0 to add, 0 to change, 14 to destroy.
+
+Do you really want to destroy all resources?
+  Terraform will destroy all your managed infrastructure, as shown above.
+  There is no undo. Only 'yes' will be accepted to confirm.
+
+  Enter a value: yes
+
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Destroying... [id=195.113.243.117/c7f8f0ba-915a-40e6-8645-2542673351fb/]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Destroying... [id=6a84e08f-c025-4d31-8a58-a982edc594ca]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Destroying... [id=915f5422-1869-4c82-aa73-29fd5f9b90a0]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Destroying... [id=7a02eeb5-8022-45b4-991b-289f46a255a9]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Destroying... [id=38da3e58-0638-4115-a0d5-f7721e12df85]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Destroying... [id=6fd4e03e-1f8b-4c9d-b70b-395767545498]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Destroying... [id=f96f232b-03e8-45d7-adf7-258f9337a500]
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Destruction complete after 2s
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Destroying... [id=4bf848b8-867c-422f-8701-0c253b2a7b56]
+module.toplevel.openstack_compute_instance_v2.bastion: Destroying... [id=c7f8f0ba-915a-40e6-8645-2542673351fb]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Destruction complete after 6s
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Destruction complete after 6s
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Still destroying... [id=7a02eeb5-8022-45b4-991b-289f46a255a9, 10s elapsed]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Still destroying... [id=915f5422-1869-4c82-aa73-29fd5f9b90a0, 10s elapsed]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Still destroying... [id=6fd4e03e-1f8b-4c9d-b70b-395767545498, 10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Still destroying... [id=38da3e58-0638-4115-a0d5-f7721e12df85, 10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Still destroying... [id=f96f232b-03e8-45d7-adf7-258f9337a500, 10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Destruction complete after 11s
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Destruction complete after 11s
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Destroying... [id=cc27a165-09bc-493a-a028-2a1e9f06c5b1]
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Destroying... [id=e5b9583a-aae4-4d14-ad58-85298c9a6697]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Destruction complete after 11s
+module.toplevel.openstack_compute_instance_v2.bastion: Still destroying... [id=c7f8f0ba-915a-40e6-8645-2542673351fb, 10s elapsed]
+module.toplevel.openstack_compute_instance_v2.bastion: Destruction complete after 11s
+module.toplevel.openstack_compute_keypair_v2.pubkey: Destroying... [id=general-tf-demo-keypair]
+module.toplevel.openstack_networking_port_v2.bastion_port: Destroying... [id=38802910-0f68-405b-b1ae-232297ff6a26]
+module.toplevel.openstack_compute_keypair_v2.pubkey: Destruction complete after 0s
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Destruction complete after 16s
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Destruction complete after 5s
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Destruction complete after 6s
+module.toplevel.openstack_networking_port_v2.bastion_port: Destruction complete after 5s
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Still destroying... [id=6fd4e03e-1f8b-4c9d-b70b-395767545498, 20s elapsed]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Destruction complete after 21s
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Destroying... [id=1a3db219-cb03-4e1a-9418-8a638bb3a4cf]
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Destruction complete after 9s
+
+Destroy complete! Resources: 14 destroyed.
+[freznicek@lenovo-t14 terraform 0]$
diff --git a/clouds/g2/ostrava/general/terraform/terraform-2tier_public_bastion_private_vm_farm-personal-project-wrapper.log b/clouds/g2/ostrava/general/terraform/terraform-2tier_public_bastion_private_vm_farm-personal-project-wrapper.log
new file mode 100644
index 0000000000000000000000000000000000000000..8efa0392a987033ad350766556829fafe5e00b67
--- /dev/null
+++ b/clouds/g2/ostrava/general/terraform/terraform-2tier_public_bastion_private_vm_farm-personal-project-wrapper.log
@@ -0,0 +1,835 @@
+[freznicek@lenovo-t14 terraform 0]$ source ~/conf/g2-prod-ostrava-freznicek-all-roles.sh.inc
+[freznicek@lenovo-t14 terraform 0]$ ./terraform.sh detect-cloud
+
+Using OpenStack cloud:
+"Ostrava","identity","3.14","CURRENT","https://identity.ostrava.openstack.cloud.e-infra.cz/v3/","",""
+[freznicek@lenovo-t14 terraform 0]$ ./terraform.sh detect-project
+
+Using OpenStack personal project named: c2bf29961b887b399a456269bbcb7aedd3127a26@einfra.cesnet.cz
+[freznicek@lenovo-t14 terraform 0]$ ./terraform.sh validate-tools
+
+Using commandline tools:
+openstack --version:
+  openstack 5.5.0
+bash --version:
+  GNU bash, verze 5.2.15(1)-release (x86_64-redhat-linux-gnu)
+awk -W version:
+  GNU Awk 5.1.1, API: 3.1 (GNU MPFR 4.1.0-p13, GNU MP 6.2.1)
+ssh -V:
+  OpenSSH_8.8p1, OpenSSL 3.0.8 7 Feb 2023
+which ssh-keygen:
+  /usr/bin/ssh-keygen
+ncat --version:
+  Ncat: Version 7.93 ( https://nmap.org/ncat )
+grep --version:
+  grep (GNU grep) 3.7
+terraform version:
+  Terraform v1.5.2
+[freznicek@lenovo-t14 terraform 0]$ ./terraform.sh init
+
+Initializing the backend...
+Initializing modules...
+
+Initializing provider plugins...
+- Reusing previous version of terraform-provider-openstack/openstack from the dependency lock file
+- Using previously-installed terraform-provider-openstack/openstack v1.52.1
+
+Terraform has been successfully initialized!
+
+You may now begin working with Terraform. Try running "terraform plan" to see
+any changes that are required for your infrastructure. All Terraform commands
+should now work.
+
+If you ever set or change modules or backend configuration for Terraform,
+rerun this command to reinitialize your working directory. If you forget, other
+commands will detect it and remind you to do so if necessary.
+[freznicek@lenovo-t14 terraform 0]$ ./terraform.sh validate
+Success! The configuration is valid.
+
+[freznicek@lenovo-t14 terraform 0]$ ./terraform.sh plan --out personal-project.plan
+module.toplevel.data.openstack_networking_network_v2.external_network: Reading...
+module.toplevel.data.openstack_networking_network_v2.internal_shared_personal_network[0]: Reading...
+module.toplevel.data.openstack_images_image_v2.nodes_image: Reading...
+module.toplevel.data.openstack_networking_subnet_v2.internal_shared_personal_subnet[0]: Reading...
+module.toplevel.data.openstack_networking_network_v2.external_network: Read complete after 0s [id=5a778b8d-4194-48fd-880d-181aaf7222c2]
+module.toplevel.data.openstack_networking_subnet_v2.internal_shared_personal_subnet[0]: Read complete after 0s [id=3170bacf-72e9-418f-8b0c-72f2e67eefd1]
+module.toplevel.data.openstack_networking_network_v2.internal_shared_personal_network[0]: Read complete after 0s [id=968fe5cf-e7b3-4d47-8239-d6f3ea2edd16]
+module.toplevel.data.openstack_images_image_v2.nodes_image: Read complete after 0s [id=9a071dba-67d5-445f-9d32-0f56360fb10f]
+
+Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with
+the following symbols:
+  + create
+
+Terraform will perform the following actions:
+
+  # module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate will be created
+  + resource "openstack_compute_floatingip_associate_v2" "bastion_fip_associate" {
+      + floating_ip = (known after apply)
+      + id          = (known after apply)
+      + instance_id = (known after apply)
+      + region      = (known after apply)
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.bastion will be created
+  + resource "openstack_compute_instance_v2" "bastion" {
+      + access_ip_v4        = (known after apply)
+      + access_ip_v6        = (known after apply)
+      + all_metadata        = (known after apply)
+      + all_tags            = (known after apply)
+      + availability_zone   = (known after apply)
+      + created             = (known after apply)
+      + flavor_id           = (known after apply)
+      + flavor_name         = "standard.small"
+      + force_delete        = false
+      + id                  = (known after apply)
+      + image_id            = (known after apply)
+      + image_name          = "ubuntu-jammy-x86_64"
+      + key_pair            = "general-tf-demo-keypair"
+      + name                = "general-tf-demo-bastion-server"
+      + power_state         = "active"
+      + region              = (known after apply)
+      + security_groups     = [
+          + "general-tf-demo_security_group",
+        ]
+      + stop_before_destroy = false
+      + updated             = (known after apply)
+      + user_data           = "c875cd218164c30103ab9399e7237ce0745df6ef"
+
+      + network {
+          + access_network = false
+          + fixed_ip_v4    = (known after apply)
+          + fixed_ip_v6    = (known after apply)
+          + floating_ip    = (known after apply)
+          + mac            = (known after apply)
+          + name           = (known after apply)
+          + port           = (known after apply)
+          + uuid           = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16"
+        }
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.nodes[0] will be created
+  + resource "openstack_compute_instance_v2" "nodes" {
+      + access_ip_v4        = (known after apply)
+      + access_ip_v6        = (known after apply)
+      + all_metadata        = (known after apply)
+      + all_tags            = (known after apply)
+      + availability_zone   = (known after apply)
+      + created             = (known after apply)
+      + flavor_id           = (known after apply)
+      + flavor_name         = "e1.small"
+      + force_delete        = false
+      + id                  = (known after apply)
+      + image_id            = (known after apply)
+      + image_name          = "ubuntu-jammy-x86_64"
+      + key_pair            = "general-tf-demo-keypair"
+      + name                = "general-tf-demo-server-1"
+      + power_state         = "active"
+      + region              = (known after apply)
+      + security_groups     = [
+          + "general-tf-demo_security_group",
+        ]
+      + stop_before_destroy = false
+      + updated             = (known after apply)
+      + user_data           = "4f71dc6cb6cef198c6b7be755b918c12ed196042"
+
+      + block_device {
+          + boot_index            = 0
+          + delete_on_termination = true
+          + destination_type      = "local"
+          + multiattach           = false
+          + source_type           = "image"
+          + uuid                  = "9a071dba-67d5-445f-9d32-0f56360fb10f"
+          + volume_size           = 10
+        }
+
+      + network {
+          + access_network = false
+          + fixed_ip_v4    = (known after apply)
+          + fixed_ip_v6    = (known after apply)
+          + floating_ip    = (known after apply)
+          + mac            = (known after apply)
+          + name           = (known after apply)
+          + port           = (known after apply)
+          + uuid           = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16"
+        }
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.nodes[1] will be created
+  + resource "openstack_compute_instance_v2" "nodes" {
+      + access_ip_v4        = (known after apply)
+      + access_ip_v6        = (known after apply)
+      + all_metadata        = (known after apply)
+      + all_tags            = (known after apply)
+      + availability_zone   = (known after apply)
+      + created             = (known after apply)
+      + flavor_id           = (known after apply)
+      + flavor_name         = "e1.small"
+      + force_delete        = false
+      + id                  = (known after apply)
+      + image_id            = (known after apply)
+      + image_name          = "ubuntu-jammy-x86_64"
+      + key_pair            = "general-tf-demo-keypair"
+      + name                = "general-tf-demo-server-2"
+      + power_state         = "active"
+      + region              = (known after apply)
+      + security_groups     = [
+          + "general-tf-demo_security_group",
+        ]
+      + stop_before_destroy = false
+      + updated             = (known after apply)
+      + user_data           = "02ba299fe90493a6657b8efdc54727f3ceceb1eb"
+
+      + block_device {
+          + boot_index            = 0
+          + delete_on_termination = true
+          + destination_type      = "local"
+          + multiattach           = false
+          + source_type           = "image"
+          + uuid                  = "9a071dba-67d5-445f-9d32-0f56360fb10f"
+          + volume_size           = 10
+        }
+
+      + network {
+          + access_network = false
+          + fixed_ip_v4    = (known after apply)
+          + fixed_ip_v6    = (known after apply)
+          + floating_ip    = (known after apply)
+          + mac            = (known after apply)
+          + name           = (known after apply)
+          + port           = (known after apply)
+          + uuid           = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16"
+        }
+    }
+
+  # module.toplevel.openstack_compute_keypair_v2.pubkey will be created
+  + resource "openstack_compute_keypair_v2" "pubkey" {
+      + fingerprint = (known after apply)
+      + id          = (known after apply)
+      + name        = "general-tf-demo-keypair"
+      + private_key = (sensitive value)
+      + public_key  = <<-EOT
+            ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCh5m8MwPW2mSXPFj0P3SSnAjukeQinvdESJfUeVqxOLozx3uAprm+ghPlun4V0mqfIfs6SmJM2wN8oDjd18yJVgCc1tfaSTDYDnVdrVPzWQYDdCqca0a3z+fXuK/sffv+9SH4LdNGqm6wA6xjJAbp8HbsnUNbcxs9bt9GJToxRjVCHjawJxlBBUemuYU7x7B8tdq3W5Fxtc9dIEcpO7NLvVujSSzbTwxVANSpOsbhroN6IQP299hB7Ggoa7P0MNaJa9VHJSU4Z6N7lYDrMG5gkm6LxL6s37ljyQS7IVDNKbhj1WrWfxAWrYtQy5alzisa7uuaxb1dOwEEWzZI5Z59T79cZActsJJPf6e4zurYo8Tqw9vpJId8ohDEQVnmb5asDGMz5G8xXa4G98McVYL1766fN1FxflYLIVRi7uPTLjN76COh/Q/ZxYuByFYl62VY+vT3CxcYInsqOkhwgfmHMbepq3ndRRIrN97IDDMutT5peTLSwpsmME+202Tg12TL7aGMyeNfcRxJkm3nHvXXKSAu1fJKXPvTQZZRxctX9GQ+2iYBhB57WnmtvfzgfcrAdZTXH3Mh08xRB+Uv/VqupLhm9Fgs/+IVUyi0AezsL6NrGItyPVcVU2HXF6xdsIFyHgb2Jhbdm2PzN/n7lcRa6lkltPBpLSWZb0N0DSHbrJw== freznicek@fedora
+        EOT
+      + region      = (known after apply)
+      + user_id     = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_floatingip_v2.bastion_fip will be created
+  + resource "openstack_networking_floatingip_v2" "bastion_fip" {
+      + address    = (known after apply)
+      + all_tags   = (known after apply)
+      + dns_domain = (known after apply)
+      + dns_name   = (known after apply)
+      + fixed_ip   = (known after apply)
+      + id         = (known after apply)
+      + pool       = "external-ipv4-general-public"
+      + port_id    = (known after apply)
+      + region     = (known after apply)
+      + subnet_id  = (known after apply)
+      + tenant_id  = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_port_v2.bastion_port will be created
+  + resource "openstack_networking_port_v2" "bastion_port" {
+      + admin_state_up         = true
+      + all_fixed_ips          = (known after apply)
+      + all_security_group_ids = (known after apply)
+      + all_tags               = (known after apply)
+      + device_id              = (known after apply)
+      + device_owner           = (known after apply)
+      + dns_assignment         = (known after apply)
+      + dns_name               = (known after apply)
+      + id                     = (known after apply)
+      + mac_address            = (known after apply)
+      + name                   = "general-tf-demo-bastion-server-port"
+      + network_id             = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16"
+      + port_security_enabled  = (known after apply)
+      + qos_policy_id          = (known after apply)
+      + region                 = (known after apply)
+      + security_group_ids     = (known after apply)
+      + tenant_id              = (known after apply)
+
+      + fixed_ip {
+          + subnet_id = "3170bacf-72e9-418f-8b0c-72f2e67eefd1"
+        }
+    }
+
+  # module.toplevel.openstack_networking_port_v2.nodes_ports[0] will be created
+  + resource "openstack_networking_port_v2" "nodes_ports" {
+      + admin_state_up         = true
+      + all_fixed_ips          = (known after apply)
+      + all_security_group_ids = (known after apply)
+      + all_tags               = (known after apply)
+      + device_id              = (known after apply)
+      + device_owner           = (known after apply)
+      + dns_assignment         = (known after apply)
+      + dns_name               = (known after apply)
+      + id                     = (known after apply)
+      + mac_address            = (known after apply)
+      + name                   = "general-tf-demo_server_port_1"
+      + network_id             = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16"
+      + port_security_enabled  = (known after apply)
+      + qos_policy_id          = (known after apply)
+      + region                 = (known after apply)
+      + security_group_ids     = (known after apply)
+      + tenant_id              = (known after apply)
+
+      + fixed_ip {
+          + subnet_id = "3170bacf-72e9-418f-8b0c-72f2e67eefd1"
+        }
+    }
+
+  # module.toplevel.openstack_networking_port_v2.nodes_ports[1] will be created
+  + resource "openstack_networking_port_v2" "nodes_ports" {
+      + admin_state_up         = true
+      + all_fixed_ips          = (known after apply)
+      + all_security_group_ids = (known after apply)
+      + all_tags               = (known after apply)
+      + device_id              = (known after apply)
+      + device_owner           = (known after apply)
+      + dns_assignment         = (known after apply)
+      + dns_name               = (known after apply)
+      + id                     = (known after apply)
+      + mac_address            = (known after apply)
+      + name                   = "general-tf-demo_server_port_2"
+      + network_id             = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16"
+      + port_security_enabled  = (known after apply)
+      + qos_policy_id          = (known after apply)
+      + region                 = (known after apply)
+      + security_group_ids     = (known after apply)
+      + tenant_id              = (known after apply)
+
+      + fixed_ip {
+          + subnet_id = "3170bacf-72e9-418f-8b0c-72f2e67eefd1"
+        }
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4 will be created
+  + resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_http4" {
+      + direction         = "ingress"
+      + ethertype         = "IPv4"
+      + id                = (known after apply)
+      + port_range_max    = 80
+      + port_range_min    = 80
+      + protocol          = "tcp"
+      + region            = (known after apply)
+      + remote_group_id   = (known after apply)
+      + remote_ip_prefix  = "0.0.0.0/0"
+      + security_group_id = (known after apply)
+      + tenant_id         = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4 will be created
+  + resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_https4" {
+      + direction         = "ingress"
+      + ethertype         = "IPv4"
+      + id                = (known after apply)
+      + port_range_max    = 443
+      + port_range_min    = 443
+      + protocol          = "tcp"
+      + region            = (known after apply)
+      + remote_group_id   = (known after apply)
+      + remote_ip_prefix  = "0.0.0.0/0"
+      + security_group_id = (known after apply)
+      + tenant_id         = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4 will be created
+  + resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_icmp4" {
+      + direction         = "ingress"
+      + ethertype         = "IPv4"
+      + id                = (known after apply)
+      + port_range_max    = 0
+      + port_range_min    = 0
+      + protocol          = "icmp"
+      + region            = (known after apply)
+      + remote_group_id   = (known after apply)
+      + remote_ip_prefix  = "0.0.0.0/0"
+      + security_group_id = (known after apply)
+      + tenant_id         = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4 will be created
+  + resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_ssh4" {
+      + direction         = "ingress"
+      + ethertype         = "IPv4"
+      + id                = (known after apply)
+      + port_range_max    = 22
+      + port_range_min    = 22
+      + protocol          = "tcp"
+      + region            = (known after apply)
+      + remote_group_id   = (known after apply)
+      + remote_ip_prefix  = "0.0.0.0/0"
+      + security_group_id = (known after apply)
+      + tenant_id         = (known after apply)
+    }
+
+  # module.toplevel.openstack_networking_secgroup_v2.secgroup_default will be created
+  + resource "openstack_networking_secgroup_v2" "secgroup_default" {
+      + all_tags    = (known after apply)
+      + description = "general-tf-demo Security group"
+      + id          = (known after apply)
+      + name        = "general-tf-demo_security_group"
+      + region      = (known after apply)
+      + tenant_id   = (known after apply)
+    }
+
+Plan: 14 to add, 0 to change, 0 to destroy.
+
+───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
+
+Saved the plan to: personal-project.plan
+
+To perform exactly these actions, run the following command to apply:
+    terraform apply "personal-project.plan"
+[freznicek@lenovo-t14 terraform 0]$ ./terraform.sh apply "personal-project.plan"
+module.toplevel.openstack_compute_keypair_v2.pubkey: Creating...
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Creating...
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Creating...
+module.toplevel.openstack_compute_keypair_v2.pubkey: Creation complete after 1s [id=general-tf-demo-keypair]
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Creation complete after 1s [id=e4684b28-ae66-4451-9f33-db447363c7c0]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Creating...
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Creating...
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Creating...
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Creating...
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Creating...
+module.toplevel.openstack_networking_port_v2.bastion_port: Creating...
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Creating...
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Creation complete after 0s [id=3579549a-7fb3-4422-95d2-89dd2040fcbc]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Creation complete after 0s [id=0a0e1719-ebd9-4e7c-9642-1419a3410a9f]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Creation complete after 0s [id=640ed715-5d0f-4489-893d-b1cf61048034]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Creation complete after 0s [id=f8d7179a-9110-46f7-a297-df570a02378e]
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Creation complete after 5s [id=e15542db-193a-48dd-bacc-5f64b479121b]
+module.toplevel.openstack_networking_port_v2.bastion_port: Creation complete after 5s [id=e37bfaea-1b7e-415f-a49d-efb1ba212b17]
+module.toplevel.openstack_compute_instance_v2.bastion: Creating...
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Creation complete after 6s [id=d211bac5-ba75-412e-9ca6-84284ca7a72d]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Creating...
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Creating...
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Creation complete after 7s [id=04af2bfb-fbb1-4ad4-9c60-aa37fea9b8c6]
+module.toplevel.openstack_compute_instance_v2.bastion: Still creating... [10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Still creating... [10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Still creating... [10s elapsed]
+module.toplevel.openstack_compute_instance_v2.bastion: Creation complete after 12s [id=044e75f2-81ae-4186-95e0-409b186c06f1]
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Creating...
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Creation complete after 11s [id=228a7292-8ec0-4a4b-b25a-06f4b4917aef]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Creation complete after 11s [id=2c811c7a-d075-4186-b143-79ac3a06eaeb]
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Creation complete after 1s [id=195.113.243.143/044e75f2-81ae-4186-95e0-409b186c06f1/]
+
+Apply complete! Resources: 14 added, 0 changed, 0 destroyed.
+[freznicek@lenovo-t14 terraform 0]$ openstack server list
++--------------------------------------+--------------------------------+--------+-----------------------------------------------------------+---------------------+----------------+
+| ID                                   | Name                           | Status | Networks                                                  | Image               | Flavor         |
++--------------------------------------+--------------------------------+--------+-----------------------------------------------------------+---------------------+----------------+
+| 228a7292-8ec0-4a4b-b25a-06f4b4917aef | general-tf-demo-server-1       | ACTIVE | internal-ipv4-general-private=172.22.1.47                 | ubuntu-jammy-x86_64 | e1.small       |
+| 2c811c7a-d075-4186-b143-79ac3a06eaeb | general-tf-demo-server-2       | ACTIVE | internal-ipv4-general-private=172.22.3.35                 | ubuntu-jammy-x86_64 | e1.small       |
+| 044e75f2-81ae-4186-95e0-409b186c06f1 | general-tf-demo-bastion-server | ACTIVE | internal-ipv4-general-private=172.22.1.8, 195.113.243.143 | ubuntu-jammy-x86_64 | standard.small |
++--------------------------------------+--------------------------------+--------+-----------------------------------------------------------+---------------------+----------------+
+[freznicek@lenovo-t14 terraform 0]$ ssh ubuntu@195.113.243.143 'uname -a;uptime'
+The authenticity of host '195.113.243.143 (195.113.243.143)' can't be established.
+ED25519 key fingerprint is SHA256:xlVZc/zsjI6Eko98QVy5V6nuBaublIyOa7xmClqdCXQ.
+This key is not known by any other names
+Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
+Warning: Permanently added '195.113.243.143' (ED25519) to the list of known hosts.
+Linux general-tf-demo-bastion-server 5.15.0-73-generic #80-Ubuntu SMP Mon May 15 15:18:26 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
+ 17:18:44 up 0 min,  0 users,  load average: 0.79, 0.22, 0.07
+[freznicek@lenovo-t14 terraform 0]$ ./terraform.sh destroy
+module.toplevel.data.openstack_networking_network_v2.external_network: Reading...
+module.toplevel.openstack_compute_keypair_v2.pubkey: Refreshing state... [id=general-tf-demo-keypair]
+module.toplevel.data.openstack_images_image_v2.nodes_image: Reading...
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Refreshing state... [id=e4684b28-ae66-4451-9f33-db447363c7c0]
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Refreshing state... [id=04af2bfb-fbb1-4ad4-9c60-aa37fea9b8c6]
+module.toplevel.data.openstack_images_image_v2.nodes_image: Read complete after 1s [id=9a071dba-67d5-445f-9d32-0f56360fb10f]
+module.toplevel.data.openstack_networking_network_v2.external_network: Read complete after 1s [id=5a778b8d-4194-48fd-880d-181aaf7222c2]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Refreshing state... [id=0a0e1719-ebd9-4e7c-9642-1419a3410a9f]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Refreshing state... [id=3579549a-7fb3-4422-95d2-89dd2040fcbc]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Refreshing state... [id=640ed715-5d0f-4489-893d-b1cf61048034]
+module.toplevel.openstack_networking_port_v2.bastion_port: Refreshing state... [id=e37bfaea-1b7e-415f-a49d-efb1ba212b17]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Refreshing state... [id=f8d7179a-9110-46f7-a297-df570a02378e]
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Refreshing state... [id=d211bac5-ba75-412e-9ca6-84284ca7a72d]
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Refreshing state... [id=e15542db-193a-48dd-bacc-5f64b479121b]
+module.toplevel.openstack_compute_instance_v2.bastion: Refreshing state... [id=044e75f2-81ae-4186-95e0-409b186c06f1]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Refreshing state... [id=228a7292-8ec0-4a4b-b25a-06f4b4917aef]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Refreshing state... [id=2c811c7a-d075-4186-b143-79ac3a06eaeb]
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Refreshing state... [id=195.113.243.143/044e75f2-81ae-4186-95e0-409b186c06f1/]
+
+Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with
+the following symbols:
+  - destroy
+
+Terraform will perform the following actions:
+
+  # module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate will be destroyed
+  - resource "openstack_compute_floatingip_associate_v2" "bastion_fip_associate" {
+      - floating_ip = "195.113.243.143" -> null
+      - id          = "195.113.243.143/044e75f2-81ae-4186-95e0-409b186c06f1/" -> null
+      - instance_id = "044e75f2-81ae-4186-95e0-409b186c06f1" -> null
+      - region      = "Ostrava" -> null
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.bastion will be destroyed
+  - resource "openstack_compute_instance_v2" "bastion" {
+      - access_ip_v4        = "172.22.1.8" -> null
+      - all_metadata        = {} -> null
+      - all_tags            = [] -> null
+      - availability_zone   = "nova" -> null
+      - created             = "2023-08-06 17:17:56 +0000 UTC" -> null
+      - flavor_id           = "f5bb56cc-297d-4f1b-bf17-202fa0a8e9a3" -> null
+      - flavor_name         = "standard.small" -> null
+      - force_delete        = false -> null
+      - id                  = "044e75f2-81ae-4186-95e0-409b186c06f1" -> null
+      - image_id            = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+      - image_name          = "ubuntu-jammy-x86_64" -> null
+      - key_pair            = "general-tf-demo-keypair" -> null
+      - name                = "general-tf-demo-bastion-server" -> null
+      - power_state         = "active" -> null
+      - region              = "Ostrava" -> null
+      - security_groups     = [
+          - "general-tf-demo_security_group",
+        ] -> null
+      - stop_before_destroy = false -> null
+      - tags                = [] -> null
+      - updated             = "2023-08-06 17:18:00 +0000 UTC" -> null
+      - user_data           = "c875cd218164c30103ab9399e7237ce0745df6ef" -> null
+
+      - network {
+          - access_network = false -> null
+          - fixed_ip_v4    = "172.22.1.8" -> null
+          - mac            = "fa:16:3e:18:ca:b5" -> null
+          - name           = "internal-ipv4-general-private" -> null
+          - port           = "e37bfaea-1b7e-415f-a49d-efb1ba212b17" -> null
+          - uuid           = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16" -> null
+        }
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.nodes[0] will be destroyed
+  - resource "openstack_compute_instance_v2" "nodes" {
+      - access_ip_v4        = "172.22.1.47" -> null
+      - all_metadata        = {} -> null
+      - all_tags            = [] -> null
+      - availability_zone   = "nova" -> null
+      - created             = "2023-08-06 17:17:57 +0000 UTC" -> null
+      - flavor_id           = "77f5fa9b-255a-4bff-af57-be0bcf0dba03" -> null
+      - flavor_name         = "e1.small" -> null
+      - force_delete        = false -> null
+      - id                  = "228a7292-8ec0-4a4b-b25a-06f4b4917aef" -> null
+      - image_id            = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+      - image_name          = "ubuntu-jammy-x86_64" -> null
+      - key_pair            = "general-tf-demo-keypair" -> null
+      - name                = "general-tf-demo-server-1" -> null
+      - power_state         = "active" -> null
+      - region              = "Ostrava" -> null
+      - security_groups     = [
+          - "general-tf-demo_security_group",
+        ] -> null
+      - stop_before_destroy = false -> null
+      - tags                = [] -> null
+      - updated             = "2023-08-06 17:18:02 +0000 UTC" -> null
+      - user_data           = "4f71dc6cb6cef198c6b7be755b918c12ed196042" -> null
+
+      - block_device {
+          - boot_index            = 0 -> null
+          - delete_on_termination = true -> null
+          - destination_type      = "local" -> null
+          - multiattach           = false -> null
+          - source_type           = "image" -> null
+          - uuid                  = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+          - volume_size           = 10 -> null
+        }
+
+      - network {
+          - access_network = false -> null
+          - fixed_ip_v4    = "172.22.1.47" -> null
+          - mac            = "fa:16:3e:60:49:ec" -> null
+          - name           = "internal-ipv4-general-private" -> null
+          - port           = "e15542db-193a-48dd-bacc-5f64b479121b" -> null
+          - uuid           = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16" -> null
+        }
+    }
+
+  # module.toplevel.openstack_compute_instance_v2.nodes[1] will be destroyed
+  - resource "openstack_compute_instance_v2" "nodes" {
+      - access_ip_v4        = "172.22.3.35" -> null
+      - all_metadata        = {} -> null
+      - all_tags            = [] -> null
+      - availability_zone   = "nova" -> null
+      - created             = "2023-08-06 17:17:57 +0000 UTC" -> null
+      - flavor_id           = "77f5fa9b-255a-4bff-af57-be0bcf0dba03" -> null
+      - flavor_name         = "e1.small" -> null
+      - force_delete        = false -> null
+      - id                  = "2c811c7a-d075-4186-b143-79ac3a06eaeb" -> null
+      - image_id            = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+      - image_name          = "ubuntu-jammy-x86_64" -> null
+      - key_pair            = "general-tf-demo-keypair" -> null
+      - name                = "general-tf-demo-server-2" -> null
+      - power_state         = "active" -> null
+      - region              = "Ostrava" -> null
+      - security_groups     = [
+          - "general-tf-demo_security_group",
+        ] -> null
+      - stop_before_destroy = false -> null
+      - tags                = [] -> null
+      - updated             = "2023-08-06 17:18:00 +0000 UTC" -> null
+      - user_data           = "02ba299fe90493a6657b8efdc54727f3ceceb1eb" -> null
+
+      - block_device {
+          - boot_index            = 0 -> null
+          - delete_on_termination = true -> null
+          - destination_type      = "local" -> null
+          - multiattach           = false -> null
+          - source_type           = "image" -> null
+          - uuid                  = "9a071dba-67d5-445f-9d32-0f56360fb10f" -> null
+          - volume_size           = 10 -> null
+        }
+
+      - network {
+          - access_network = false -> null
+          - fixed_ip_v4    = "172.22.3.35" -> null
+          - mac            = "fa:16:3e:23:b4:4d" -> null
+          - name           = "internal-ipv4-general-private" -> null
+          - port           = "d211bac5-ba75-412e-9ca6-84284ca7a72d" -> null
+          - uuid           = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16" -> null
+        }
+    }
+
+  # module.toplevel.openstack_compute_keypair_v2.pubkey will be destroyed
+  - resource "openstack_compute_keypair_v2" "pubkey" {
+      - fingerprint = "75:e0:a4:d6:4c:76:ba:21:f1:d1:75:c8:75:22:93:4f" -> null
+      - id          = "general-tf-demo-keypair" -> null
+      - name        = "general-tf-demo-keypair" -> null
+      - public_key  = <<-EOT
+            ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCh5m8MwPW2mSXPFj0P3SSnAjukeQinvdESJfUeVqxOLozx3uAprm+ghPlun4V0mqfIfs6SmJM2wN8oDjd18yJVgCc1tfaSTDYDnVdrVPzWQYDdCqca0a3z+fXuK/sffv+9SH4LdNGqm6wA6xjJAbp8HbsnUNbcxs9bt9GJToxRjVCHjawJxlBBUemuYU7x7B8tdq3W5Fxtc9dIEcpO7NLvVujSSzbTwxVANSpOsbhroN6IQP299hB7Ggoa7P0MNaJa9VHJSU4Z6N7lYDrMG5gkm6LxL6s37ljyQS7IVDNKbhj1WrWfxAWrYtQy5alzisa7uuaxb1dOwEEWzZI5Z59T79cZActsJJPf6e4zurYo8Tqw9vpJId8ohDEQVnmb5asDGMz5G8xXa4G98McVYL1766fN1FxflYLIVRi7uPTLjN76COh/Q/ZxYuByFYl62VY+vT3CxcYInsqOkhwgfmHMbepq3ndRRIrN97IDDMutT5peTLSwpsmME+202Tg12TL7aGMyeNfcRxJkm3nHvXXKSAu1fJKXPvTQZZRxctX9GQ+2iYBhB57WnmtvfzgfcrAdZTXH3Mh08xRB+Uv/VqupLhm9Fgs/+IVUyi0AezsL6NrGItyPVcVU2HXF6xdsIFyHgb2Jhbdm2PzN/n7lcRa6lkltPBpLSWZb0N0DSHbrJw== freznicek@fedora
+        EOT -> null
+      - region      = "Ostrava" -> null
+    }
+
+  # module.toplevel.openstack_networking_floatingip_v2.bastion_fip will be destroyed
+  - resource "openstack_networking_floatingip_v2" "bastion_fip" {
+      - address   = "195.113.243.143" -> null
+      - all_tags  = [] -> null
+      - fixed_ip  = "172.22.1.8" -> null
+      - id        = "04af2bfb-fbb1-4ad4-9c60-aa37fea9b8c6" -> null
+      - pool      = "external-ipv4-general-public" -> null
+      - port_id   = "e37bfaea-1b7e-415f-a49d-efb1ba212b17" -> null
+      - region    = "Ostrava" -> null
+      - tags      = [] -> null
+      - tenant_id = "1b20bb11afbe41c1bd681d2e319ab9a0" -> null
+    }
+
+  # module.toplevel.openstack_networking_port_v2.bastion_port will be destroyed
+  - resource "openstack_networking_port_v2" "bastion_port" {
+      - admin_state_up         = true -> null
+      - all_fixed_ips          = [
+          - "172.22.1.8",
+        ] -> null
+      - all_security_group_ids = [
+          - "e4684b28-ae66-4451-9f33-db447363c7c0",
+        ] -> null
+      - all_tags               = [] -> null
+      - device_id              = "044e75f2-81ae-4186-95e0-409b186c06f1" -> null
+      - device_owner           = "compute:nova" -> null
+      - dns_assignment         = [] -> null
+      - id                     = "e37bfaea-1b7e-415f-a49d-efb1ba212b17" -> null
+      - mac_address            = "fa:16:3e:18:ca:b5" -> null
+      - name                   = "general-tf-demo-bastion-server-port" -> null
+      - network_id             = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16" -> null
+      - port_security_enabled  = true -> null
+      - region                 = "Ostrava" -> null
+      - security_group_ids     = [
+          - "e4684b28-ae66-4451-9f33-db447363c7c0",
+        ] -> null
+      - tags                   = [] -> null
+      - tenant_id              = "1b20bb11afbe41c1bd681d2e319ab9a0" -> null
+
+      - binding {
+          - vif_details = {} -> null
+          - vnic_type   = "normal" -> null
+        }
+
+      - fixed_ip {
+          - subnet_id = "3170bacf-72e9-418f-8b0c-72f2e67eefd1" -> null
+        }
+    }
+
+  # module.toplevel.openstack_networking_port_v2.nodes_ports[0] will be destroyed
+  - resource "openstack_networking_port_v2" "nodes_ports" {
+      - admin_state_up         = true -> null
+      - all_fixed_ips          = [
+          - "172.22.1.47",
+        ] -> null
+      - all_security_group_ids = [
+          - "e4684b28-ae66-4451-9f33-db447363c7c0",
+        ] -> null
+      - all_tags               = [] -> null
+      - device_id              = "228a7292-8ec0-4a4b-b25a-06f4b4917aef" -> null
+      - device_owner           = "compute:nova" -> null
+      - dns_assignment         = [] -> null
+      - id                     = "e15542db-193a-48dd-bacc-5f64b479121b" -> null
+      - mac_address            = "fa:16:3e:60:49:ec" -> null
+      - name                   = "general-tf-demo_server_port_1" -> null
+      - network_id             = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16" -> null
+      - port_security_enabled  = true -> null
+      - region                 = "Ostrava" -> null
+      - security_group_ids     = [
+          - "e4684b28-ae66-4451-9f33-db447363c7c0",
+        ] -> null
+      - tags                   = [] -> null
+      - tenant_id              = "1b20bb11afbe41c1bd681d2e319ab9a0" -> null
+
+      - binding {
+          - vif_details = {} -> null
+          - vnic_type   = "normal" -> null
+        }
+
+      - fixed_ip {
+          - subnet_id = "3170bacf-72e9-418f-8b0c-72f2e67eefd1" -> null
+        }
+    }
+
+  # module.toplevel.openstack_networking_port_v2.nodes_ports[1] will be destroyed
+  - resource "openstack_networking_port_v2" "nodes_ports" {
+      - admin_state_up         = true -> null
+      - all_fixed_ips          = [
+          - "172.22.3.35",
+        ] -> null
+      - all_security_group_ids = [
+          - "e4684b28-ae66-4451-9f33-db447363c7c0",
+        ] -> null
+      - all_tags               = [] -> null
+      - device_id              = "2c811c7a-d075-4186-b143-79ac3a06eaeb" -> null
+      - device_owner           = "compute:nova" -> null
+      - dns_assignment         = [] -> null
+      - id                     = "d211bac5-ba75-412e-9ca6-84284ca7a72d" -> null
+      - mac_address            = "fa:16:3e:23:b4:4d" -> null
+      - name                   = "general-tf-demo_server_port_2" -> null
+      - network_id             = "968fe5cf-e7b3-4d47-8239-d6f3ea2edd16" -> null
+      - port_security_enabled  = true -> null
+      - region                 = "Ostrava" -> null
+      - security_group_ids     = [
+          - "e4684b28-ae66-4451-9f33-db447363c7c0",
+        ] -> null
+      - tags                   = [] -> null
+      - tenant_id              = "1b20bb11afbe41c1bd681d2e319ab9a0" -> null
+
+      - binding {
+          - vif_details = {} -> null
+          - vnic_type   = "normal" -> null
+        }
+
+      - fixed_ip {
+          - subnet_id = "3170bacf-72e9-418f-8b0c-72f2e67eefd1" -> null
+        }
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4 will be destroyed
+  - resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_http4" {
+      - direction         = "ingress" -> null
+      - ethertype         = "IPv4" -> null
+      - id                = "0a0e1719-ebd9-4e7c-9642-1419a3410a9f" -> null
+      - port_range_max    = 80 -> null
+      - port_range_min    = 80 -> null
+      - protocol          = "tcp" -> null
+      - region            = "Ostrava" -> null
+      - remote_ip_prefix  = "0.0.0.0/0" -> null
+      - security_group_id = "e4684b28-ae66-4451-9f33-db447363c7c0" -> null
+      - tenant_id         = "1b20bb11afbe41c1bd681d2e319ab9a0" -> null
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4 will be destroyed
+  - resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_https4" {
+      - direction         = "ingress" -> null
+      - ethertype         = "IPv4" -> null
+      - id                = "f8d7179a-9110-46f7-a297-df570a02378e" -> null
+      - port_range_max    = 443 -> null
+      - port_range_min    = 443 -> null
+      - protocol          = "tcp" -> null
+      - region            = "Ostrava" -> null
+      - remote_ip_prefix  = "0.0.0.0/0" -> null
+      - security_group_id = "e4684b28-ae66-4451-9f33-db447363c7c0" -> null
+      - tenant_id         = "1b20bb11afbe41c1bd681d2e319ab9a0" -> null
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4 will be destroyed
+  - resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_icmp4" {
+      - direction         = "ingress" -> null
+      - ethertype         = "IPv4" -> null
+      - id                = "3579549a-7fb3-4422-95d2-89dd2040fcbc" -> null
+      - port_range_max    = 0 -> null
+      - port_range_min    = 0 -> null
+      - protocol          = "icmp" -> null
+      - region            = "Ostrava" -> null
+      - remote_ip_prefix  = "0.0.0.0/0" -> null
+      - security_group_id = "e4684b28-ae66-4451-9f33-db447363c7c0" -> null
+      - tenant_id         = "1b20bb11afbe41c1bd681d2e319ab9a0" -> null
+    }
+
+  # module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4 will be destroyed
+  - resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_ssh4" {
+      - direction         = "ingress" -> null
+      - ethertype         = "IPv4" -> null
+      - id                = "640ed715-5d0f-4489-893d-b1cf61048034" -> null
+      - port_range_max    = 22 -> null
+      - port_range_min    = 22 -> null
+      - protocol          = "tcp" -> null
+      - region            = "Ostrava" -> null
+      - remote_ip_prefix  = "0.0.0.0/0" -> null
+      - security_group_id = "e4684b28-ae66-4451-9f33-db447363c7c0" -> null
+      - tenant_id         = "1b20bb11afbe41c1bd681d2e319ab9a0" -> null
+    }
+
+  # module.toplevel.openstack_networking_secgroup_v2.secgroup_default will be destroyed
+  - resource "openstack_networking_secgroup_v2" "secgroup_default" {
+      - all_tags    = [] -> null
+      - description = "general-tf-demo Security group" -> null
+      - id          = "e4684b28-ae66-4451-9f33-db447363c7c0" -> null
+      - name        = "general-tf-demo_security_group" -> null
+      - region      = "Ostrava" -> null
+      - tags        = [] -> null
+      - tenant_id   = "1b20bb11afbe41c1bd681d2e319ab9a0" -> null
+    }
+
+Plan: 0 to add, 0 to change, 14 to destroy.
+
+Do you really want to destroy all resources?
+  Terraform will destroy all your managed infrastructure, as shown above.
+  There is no undo. Only 'yes' will be accepted to confirm.
+
+  Enter a value: yes
+
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Destroying... [id=3579549a-7fb3-4422-95d2-89dd2040fcbc]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Destroying... [id=640ed715-5d0f-4489-893d-b1cf61048034]
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Destroying... [id=195.113.243.143/044e75f2-81ae-4186-95e0-409b186c06f1/]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Destroying... [id=0a0e1719-ebd9-4e7c-9642-1419a3410a9f]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Destroying... [id=f8d7179a-9110-46f7-a297-df570a02378e]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Destroying... [id=228a7292-8ec0-4a4b-b25a-06f4b4917aef]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Destroying... [id=2c811c7a-d075-4186-b143-79ac3a06eaeb]
+module.toplevel.openstack_compute_floatingip_associate_v2.bastion_fip_associate: Destruction complete after 2s
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Destroying... [id=04af2bfb-fbb1-4ad4-9c60-aa37fea9b8c6]
+module.toplevel.openstack_compute_instance_v2.bastion: Destroying... [id=044e75f2-81ae-4186-95e0-409b186c06f1]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_ssh4: Destruction complete after 6s
+module.toplevel.openstack_networking_floatingip_v2.bastion_fip: Destruction complete after 5s
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Still destroying... [id=0a0e1719-ebd9-4e7c-9642-1419a3410a9f, 10s elapsed]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Still destroying... [id=f8d7179a-9110-46f7-a297-df570a02378e, 10s elapsed]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Still destroying... [id=3579549a-7fb3-4422-95d2-89dd2040fcbc, 10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Still destroying... [id=228a7292-8ec0-4a4b-b25a-06f4b4917aef, 10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Still destroying... [id=2c811c7a-d075-4186-b143-79ac3a06eaeb, 10s elapsed]
+module.toplevel.openstack_compute_instance_v2.nodes[0]: Destruction complete after 11s
+module.toplevel.openstack_compute_instance_v2.nodes[1]: Destruction complete after 11s
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Destroying... [id=d211bac5-ba75-412e-9ca6-84284ca7a72d]
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Destroying... [id=e15542db-193a-48dd-bacc-5f64b479121b]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_icmp4: Destruction complete after 11s
+module.toplevel.openstack_compute_instance_v2.bastion: Still destroying... [id=044e75f2-81ae-4186-95e0-409b186c06f1, 10s elapsed]
+module.toplevel.openstack_compute_instance_v2.bastion: Destruction complete after 10s
+module.toplevel.openstack_compute_keypair_v2.pubkey: Destroying... [id=general-tf-demo-keypair]
+module.toplevel.openstack_networking_port_v2.bastion_port: Destroying... [id=e37bfaea-1b7e-415f-a49d-efb1ba212b17]
+module.toplevel.openstack_compute_keypair_v2.pubkey: Destruction complete after 0s
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_https4: Destruction complete after 16s
+module.toplevel.openstack_networking_port_v2.nodes_ports[0]: Destruction complete after 5s
+module.toplevel.openstack_networking_port_v2.nodes_ports[1]: Destruction complete after 5s
+module.toplevel.openstack_networking_port_v2.bastion_port: Destruction complete after 5s
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Still destroying... [id=0a0e1719-ebd9-4e7c-9642-1419a3410a9f, 20s elapsed]
+module.toplevel.openstack_networking_secgroup_rule_v2.secgroup_rule_http4: Destruction complete after 21s
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Destroying... [id=e4684b28-ae66-4451-9f33-db447363c7c0]
+module.toplevel.openstack_networking_secgroup_v2.secgroup_default: Destruction complete after 8s
+
+Destroy complete! Resources: 14 destroyed.
+[freznicek@lenovo-t14 terraform 0]$
diff --git a/clouds/g2/ostrava/general/terraform/terraform.sh b/clouds/g2/ostrava/general/terraform/terraform.sh
new file mode 100755
index 0000000000000000000000000000000000000000..a36b8f9eb1e4cffcaeea378ba1bdab0fa2494f5f
--- /dev/null
+++ b/clouds/g2/ostrava/general/terraform/terraform.sh
@@ -0,0 +1,48 @@
+#!/usr/bin/env bash
+# terraform wrapper for automatic personal/group project reconfiguration
+# terraform.sh <arguments>
+#
+# <arguments> are:
+# * detect-cloud
+# * detect-project
+# * validate-tools
+# * or any valid terraform arguments
+
+# functions
+SCRIPT_DIR=$(dirname $(readlink -f $0))
+source ${SCRIPT_DIR}/../../../../common/lib.sh.inc
+
+
+if [[ "$1" =~ (detect-(cloud|project)|validate-tools) ]]; then
+    if [ "$1" == "detect-cloud" ]; then
+        log "Using OpenStack cloud:"
+        openstack version show -fcsv | grep identity
+    elif [ "$1" == "detect-project" ]; then
+        project_type=group
+        if prj_name=$(is_personal_project); then
+            project_type=personal
+        fi
+        log "Using OpenStack ${project_type} project named: ${prj_name}"
+    elif [ "$1" == "validate-tools" ]; then
+        log "Using commandline tools:"
+        report_tools "terraform version"
+    fi
+    exit $?
+else
+    project_type=group
+    if prj_name=$(is_personal_project); then
+        project_type=personal
+        if [ "$1" == "plan" ]; then
+            terraform "$@" --var-file=personal-projects.tfvars
+        else
+            terraform "$@"
+        fi
+    else
+        terraform "$@"
+    fi
+fi
+
+
+
+
+
diff --git a/clouds/g2/ostrava/general/terraform/variables.tf b/clouds/g2/ostrava/general/terraform/variables.tf
new file mode 100644
index 0000000000000000000000000000000000000000..bddb30b20d0752b54ec63bd458ed804d3dbcc1b1
--- /dev/null
+++ b/clouds/g2/ostrava/general/terraform/variables.tf
@@ -0,0 +1,24 @@
+variable "router_creation_enable" {
+  description = "Create dedicated router instance. true/false ~ create new / reuse existing personal router"
+  default     = true
+}
+
+variable "internal_network_creation_enable" {
+  description = "Create dedicated internal network. true/false ~ create new / reuse existing personal network"
+  default     = true
+}
+
+variable "internal_network_name" {
+  description = "Internal network name. Either dedicated new network or existing personal network name"
+  default     = "<var.infra_name>_network"
+}
+
+variable "internal_subnet_creation_enable" {
+  description = "Create dedicated subnet instance. true/false ~ create new / reuse existing personal subnet"
+  default     = true
+}
+
+variable "internal_subnet_name" {
+  description = "Internal network subnet name. Either dedicated new subnet or existing personal subnet name"
+  default     = "<var.infra_name>_subnet"
+}
diff --git a/clouds/g2/ostrava/terraform/README.md b/clouds/g2/ostrava/terraform/README.md
deleted file mode 100644
index fe527c36e18e6c1442817d10464701a15c1784d8..0000000000000000000000000000000000000000
--- a/clouds/g2/ostrava/terraform/README.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Terraform Kubernetes Training
-
-This Terraform module creates an infrastructure required for a Kubernetes cluster in OpenStack.
-
-## Create Infrastructure
-
-1. Clone the repository.
-1. Load you OpenStack application credentials to environment variables `source ~/conf/prod-meta-cloud-new-openstack-all-roles-openrc.sh`
-1. Override any variable if needed. Every variable specified in [modules/kube_training/variables.tf](modules/kube_training/variables.tf) can be overridden in the [main.tf](main.tf) file in its *module* section.
-1. If create infrastructure for kubespray see [this section](#kubespray)
-1. In the root folder run `terraform init`.
-1. In the root folder run `terraform validate`.
-1. Run `terraform plan -out plan1` to generate terraform plan.
-1. Run `terraform apply "plan1"` to apply the plan.
-
-## Destroy Infrastructure
-
-To delete all created resources run the following commands:
-
-```sh
-terraform plan -destroy -out plan1
-terraform apply "plan1"
-```
-
-## SSH to Workers
-
-To connect to worker machines just use `sshuttle`.
-
-```sh
-sshuttle -r ubuntu@<any-master-ip> 10.10.10.0/24
-```
diff --git a/clouds/g2/ostrava/terraform/main.tf b/clouds/g2/ostrava/terraform/main.tf
deleted file mode 100644
index cdd7354cbd323c8e004688ae466219fcf2c6d20f..0000000000000000000000000000000000000000
--- a/clouds/g2/ostrava/terraform/main.tf
+++ /dev/null
@@ -1,45 +0,0 @@
-terraform {
-  backend "local" {}
-}
-
-terraform {
-  required_providers {
-    openstack = {
-      source  = "terraform-provider-openstack/openstack"
-      version = "~> 1.47.0"
-    }
-  }
-}
-
-
-provider "openstack" {
-  # auth arguments are read from environment variables (sourced opestack RC file)
-  auth_url = "https://identity.ostrava.openstack.cloud.e-infra.cz/v3"
-}
-
-
-module "kube_training" {
-  source = "./modules/kube_training"
-
-  # Example of variable override
-  master_nodes_count = 3
-  worker_nodes_count = 1
-  kusername          = "user-kubernetes-demo"
-  public_key         = "~/.ssh/id_rsa.pub"
-
-  master_nodes_flavor = "e1.small"
-  worker_nodes_flavor = "e1.small"
-  image = "ubuntu-jammy-x86_64"
-
-  int_network = "10.10.10.0/24"
-  pool = "external-ipv4-general-public"
-
-  # attach additional single volume 64GB
-  master_node_volume_size = 64
-
-  # If you are using this modul for install kubespray
-  kube_vip = "10.10.10.5"
-  kube_fip = false
-  kube_fip_create_port = false
-}
-
diff --git a/clouds/g2/ostrava/terraform/modules/kube_training/cloudinit.txt b/clouds/g2/ostrava/terraform/modules/kube_training/cloudinit.txt
deleted file mode 100644
index b760d4eb67613269833858fb3bec83579c51d0ad..0000000000000000000000000000000000000000
--- a/clouds/g2/ostrava/terraform/modules/kube_training/cloudinit.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-users:
-  - default
-  - name: ubuntu
-    shell: /bin/bash
-    ssh_authorized_keys:
-      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDSS8J5AStswCnf2JQboCyue8JzX5T/Tsg68LasOT3XZkAMelVrjYBIZ/0P858WMTMW5Qc+ebSmbm0eOopuaN9FrZW2ZsaDyzPamAuxseoTkRV+7Oz5NOF0WCYspgLsbMcaQ+F+qrKzMJRLwduhL67inIJVYkgeXY6S1N2wZAEgYUE3jbZrhaGNA1kQf2dJoMtnikrtOB+vyZkLgFRfgjmq+ny5rCM277otFxwCHhm2+jrWtM8lPY6kJ6WcZfg2njdYW3Oda479jMUg28t4pjqmBygKl3MQ9MOVlJkde4Ez5LhTynXMkSPhH5PnzQrfkQMU2YozCNQ2KBiGDdB3Cd2Lqsou32zUk1/sKc+aN1+8jtm+iogpgYxAPwyCh8S/brVbDu9BerowNRMa4Nual/7YKdtwPEClFp34dgV7tvXVcnVF/TtAkJAUtd02Fh9iS2iM9IrC0gkDEBUr0HGY5U83zODf356aVGTE6hs65wsURGAT6z/DvWYZtMLWJB8Y3p7qHGV1N1OHSLDHgjzuhAHI54h8zhjQaiPsH3Yx4324D1ndtJX8DeWkKdzCNARnw8sfIUhCkwbgv0v6ZkDy8yP6jsHjBc89NjB9kNw1dZcnaDLNqGctcCy50BOeciBYC598i0hec2MieoN0Z2E7lbWZps/+0korxtIxp7TzcKfiKw== secureduser@securedhost
diff --git a/clouds/g2/ostrava/terraform/modules/kube_training/instances.tf b/clouds/g2/ostrava/terraform/modules/kube_training/instances.tf
deleted file mode 100644
index 4c3e2f98c5d56b9c345805ee5c7a87d904779327..0000000000000000000000000000000000000000
--- a/clouds/g2/ostrava/terraform/modules/kube_training/instances.tf
+++ /dev/null
@@ -1,38 +0,0 @@
-
-####################
-# Define instances #
-####################
-
-resource "openstack_compute_instance_v2" "master_nodes" {
-  count           = var.master_nodes_count
-  name            = "${var.kusername}-${var.master_nodes_name_prefix}-${count.index+1}"
-  image_name      = var.image
-  flavor_name     = var.master_nodes_flavor
-  key_pair        = openstack_compute_keypair_v2.pubkey.name
-  security_groups = [openstack_networking_secgroup_v2.secgroup_default.name]
-  user_data       = "#cloud-config\nhostname: ${var.kusername}-${var.master_nodes_name_prefix}-${count.index+1}.local\n${file("${path.module}/cloudinit.txt")}"
-
-  network {
-    uuid = openstack_networking_network_v2.network_default.id
-    port = element(openstack_networking_port_v2.master_ports.*.id, count.index)
-  }
-
-}
-
-
-resource "openstack_compute_instance_v2" "worker_nodes" {
-  count           = var.worker_nodes_count
-  name            = "${var.kusername}-${var.worker_nodes_name_prefix}-${count.index+1}"
-  image_name      = var.image
-  flavor_name     = var.worker_nodes_flavor
-  key_pair        = openstack_compute_keypair_v2.pubkey.name
-  security_groups = [openstack_networking_secgroup_v2.secgroup_default.name]
-  user_data       = "#cloud-config\nhostname: ${var.kusername}-${var.worker_nodes_name_prefix}-${count.index+1}.local\n${file("${path.module}/cloudinit.txt")}"
-
-  network {
-    uuid = openstack_networking_network_v2.network_default.id
-    port = element(openstack_networking_port_v2.worker_ports.*.id, count.index)
-  }
-
-}
-
diff --git a/clouds/g2/ostrava/terraform/modules/kube_training/main.tf b/clouds/g2/ostrava/terraform/modules/kube_training/main.tf
deleted file mode 100644
index a73d8c2d00b0a2d55b24a6cc995eadd42903603c..0000000000000000000000000000000000000000
--- a/clouds/g2/ostrava/terraform/modules/kube_training/main.tf
+++ /dev/null
@@ -1,6 +0,0 @@
-
-resource "openstack_compute_keypair_v2" "pubkey" {
-  name       = "${var.kusername}-kubedemo"
-  public_key = file("${var.public_key}")
-}
-
diff --git a/clouds/g2/ostrava/terraform/modules/kube_training/networks.tf b/clouds/g2/ostrava/terraform/modules/kube_training/networks.tf
deleted file mode 100644
index e3144e6656fc5e957d9a986cc67411587a391a26..0000000000000000000000000000000000000000
--- a/clouds/g2/ostrava/terraform/modules/kube_training/networks.tf
+++ /dev/null
@@ -1,95 +0,0 @@
-###############################################################
-# Define networking                                           #
-# Security group rules are in separate file secgroup_rules.tf #
-###############################################################
-
-resource "openstack_networking_network_v2" "network_default" {
-  name           = "${var.kusername}_kubedemo"
-  admin_state_up = "true"
-}
-
-resource "openstack_networking_subnet_v2" "subnet_default" {
-  name            = "${var.kusername}_kubedemo"
-  network_id      = openstack_networking_network_v2.network_default.id
-  cidr            = var.int_network
-  ip_version      = 4
-  dns_nameservers = ["1.1.1.1", "8.8.8.8"]
-}
-
-data "openstack_networking_network_v2" "terraform-demo-external-net" {
-  name = var.pool
-}
-
-resource "openstack_networking_router_v2" "router_default" {
-  name                = "${var.kusername}_kubedemo"
-  admin_state_up      = "true"
-  external_network_id = data.openstack_networking_network_v2.terraform-demo-external-net.id
-}
-
-resource "openstack_networking_router_interface_v2" "terraform-demo-router-interface-1" {
-  router_id = openstack_networking_router_v2.router_default.id
-  subnet_id = openstack_networking_subnet_v2.subnet_default.id
-}
-
-# Floating VIP IPs
-resource "openstack_networking_floatingip_v2" "vip_fip" {
-  count = var.kube_fip ? 1 : 0
-  pool  = var.pool
-}
-
-resource "openstack_networking_floatingip_associate_v2" "res_vip_fip_associate" {
-  count       = var.kube_fip_create_port && var.kube_fip ? 1 : 0
-  floating_ip = openstack_networking_floatingip_v2.vip_fip[count.index].address
-  port_id     = openstack_networking_port_v2.vip_port[count.index].id
-}
-
-# Floating IPs (only for master nodes)
-resource "openstack_networking_floatingip_v2" "fip_head_master" {
-  pool  = var.pool
-}
-
-resource "openstack_compute_floatingip_associate_v2" "res_fip_associate" {
-  floating_ip = openstack_networking_floatingip_v2.fip_head_master.address
-  instance_id = openstack_compute_instance_v2.master_nodes[0].id
-}
-
-# Ports
-resource "openstack_networking_port_v2" "vip_port" {
-  count              = var.kube_fip_create_port && var.kube_fip ? 1 : 0
-  name               = "${var.kusername}_vip_port"
-  network_id         = openstack_networking_network_v2.network_default.id
-  admin_state_up     = "true"
-  security_group_ids = [openstack_networking_secgroup_v2.secgroup_default.id]
-  fixed_ip {
-    subnet_id = openstack_networking_subnet_v2.subnet_default.id
-    ip_address = var.kube_vip
-  }
-}
-
-resource "openstack_networking_port_v2" "worker_ports" {
-  count              = var.worker_nodes_count
-  name               = "${var.kusername}_worker_port_${count.index+1}"
-  network_id         = openstack_networking_network_v2.network_default.id
-  admin_state_up     = "true"
-  security_group_ids = [openstack_networking_secgroup_v2.secgroup_default.id]
-  fixed_ip {
-    subnet_id = openstack_networking_subnet_v2.subnet_default.id
-  }
-  allowed_address_pairs {
-    ip_address = var.kube_vip
-  }
-}
-
-resource "openstack_networking_port_v2" "master_ports" {
-  count              = var.master_nodes_count
-  name               = "${var.kusername}_master_port_${count.index+1}"
-  network_id         = openstack_networking_network_v2.network_default.id
-  admin_state_up     = "true"
-  security_group_ids = [openstack_networking_secgroup_v2.secgroup_default.id]
-  fixed_ip {
-    subnet_id = openstack_networking_subnet_v2.subnet_default.id
-  }
-  allowed_address_pairs {
-    ip_address = var.kube_vip
-  }
-}
\ No newline at end of file
diff --git a/clouds/g2/ostrava/terraform/modules/kube_training/output.tf b/clouds/g2/ostrava/terraform/modules/kube_training/output.tf
deleted file mode 100644
index 2151fcd0cf762c979ad74e63c46cd9cdc731285a..0000000000000000000000000000000000000000
--- a/clouds/g2/ostrava/terraform/modules/kube_training/output.tf
+++ /dev/null
@@ -1,19 +0,0 @@
-output "master_instance_ip" {
-  value = openstack_compute_instance_v2.master_nodes[*].access_ip_v4
-}
-
-output "worker_instance_ip" {
-  value = openstack_compute_instance_v2.worker_nodes[*].access_ip_v4
-}
-
-output "vip_ip" {
-  value = var.kube_vip
-}
-
-output "vip_fip" {
-  value = var.kube_fip ? openstack_networking_floatingip_v2.vip_fip[0].address : null
-}
-
-output "head_master_fip" {
-  value = openstack_networking_floatingip_v2.fip_head_master.address
-}
\ No newline at end of file
diff --git a/clouds/g2/ostrava/terraform/modules/kube_training/providers.tf b/clouds/g2/ostrava/terraform/modules/kube_training/providers.tf
deleted file mode 100644
index ef4ba65152b61ce99a5dfe96616724d08fad199b..0000000000000000000000000000000000000000
--- a/clouds/g2/ostrava/terraform/modules/kube_training/providers.tf
+++ /dev/null
@@ -1,9 +0,0 @@
-terraform {
-  required_providers {
-    openstack = {
-      source  = "terraform-provider-openstack/openstack"
-      version = "~> 1.47.0"
-    }
-  }
-}
-
diff --git a/clouds/g2/ostrava/terraform/modules/kube_training/secgroup_rules.tf b/clouds/g2/ostrava/terraform/modules/kube_training/secgroup_rules.tf
deleted file mode 100644
index 8b13b6578c7e770a57f17754bcad43deb4df14ef..0000000000000000000000000000000000000000
--- a/clouds/g2/ostrava/terraform/modules/kube_training/secgroup_rules.tf
+++ /dev/null
@@ -1,96 +0,0 @@
-##################################
-# Define Network Security Groups #
-##################################
-
-
-resource "openstack_networking_secgroup_v2" "secgroup_default" {
-  name        = "${var.kusername}_kubedemo"
-  description = "Security group for Kubernetes demo"
-}
-
-
-# Allow all internal TCP & UDP
-
-resource "openstack_networking_secgroup_rule_v2" "alltcp4" {
-  direction         = "ingress"
-  ethertype         = "IPv4"
-  protocol          = "tcp"
-  port_range_min    = 1
-  port_range_max    = 32768
-  remote_ip_prefix  = var.int_network
-  security_group_id = openstack_networking_secgroup_v2.secgroup_default.id
-}
-
-resource "openstack_networking_secgroup_rule_v2" "alludp4" {
-  direction         = "ingress"
-  ethertype         = "IPv4"
-  protocol          = "udp"
-  port_range_min    = 1
-  port_range_max    = 32768
-  remote_ip_prefix  = var.int_network
-  security_group_id = openstack_networking_secgroup_v2.secgroup_default.id
-}
-
-
-# External communication
-# HTTP(S)
-
-resource "openstack_networking_secgroup_rule_v2" "https4" {
-  direction         = "ingress"
-  ethertype         = "IPv4"
-  protocol          = "tcp"
-  port_range_min    = 443
-  port_range_max    = 443
-  remote_ip_prefix  = "0.0.0.0/0"
-  security_group_id = openstack_networking_secgroup_v2.secgroup_default.id
-}
-
-resource "openstack_networking_secgroup_rule_v2" "http4" {
-  direction         = "ingress"
-  ethertype         = "IPv4"
-  protocol          = "tcp"
-  port_range_min    = 80
-  port_range_max    = 80
-  remote_ip_prefix  = "0.0.0.0/0"
-  security_group_id = openstack_networking_secgroup_v2.secgroup_default.id
-}
-
-
-
-# ICMP
-
-resource "openstack_networking_secgroup_rule_v2" "icmp4" {
-  direction         = "ingress"
-  ethertype         = "IPv4"
-  protocol          = "icmp"
-  port_range_min    = 0
-  port_range_max    = 0
-  remote_ip_prefix  = "0.0.0.0/0"
-  security_group_id = openstack_networking_secgroup_v2.secgroup_default.id
-}
-
-
-
-# SSH
-
-resource "openstack_networking_secgroup_rule_v2" "ssh4" {
-  direction         = "ingress"
-  ethertype         = "IPv4"
-  protocol          = "tcp"
-  port_range_min    = 22
-  port_range_max    = 22
-  remote_ip_prefix  = "0.0.0.0/0"
-  security_group_id = openstack_networking_secgroup_v2.secgroup_default.id
-}
-
-# LB
-
-resource "openstack_networking_secgroup_rule_v2" "lb4" {
-  direction         = "ingress"
-  ethertype         = "IPv4"
-  protocol          = "tcp"
-  port_range_min    = 6443
-  port_range_max    = 6443
-  remote_ip_prefix  = "0.0.0.0/0"
-  security_group_id = openstack_networking_secgroup_v2.secgroup_default.id
-}
\ No newline at end of file
diff --git a/clouds/g2/ostrava/terraform/modules/kube_training/variables.tf b/clouds/g2/ostrava/terraform/modules/kube_training/variables.tf
deleted file mode 100644
index 0767679a90d7b29f981151f174993191ee1e2612..0000000000000000000000000000000000000000
--- a/clouds/g2/ostrava/terraform/modules/kube_training/variables.tf
+++ /dev/null
@@ -1,94 +0,0 @@
-variable "kusername" {
-  description = "Name prefix for all resources. Use a-z, 0-9 and the hyphen (-) only."
-  default     = "kubetraining"
-}
-
-variable "public_key" {
-  default = "~/.ssh/id_rsa.pub"
-}
-
-#########################
-# master nodes settings #
-#########################
-variable "master_nodes_count" {
-  default = 3
-}
-
-variable "master_nodes_name_prefix" {
-  description = "Use a-z, 0-9 and the hyphen (-) only."
-  default = "master"
-}
-
-variable "master_nodes_flavor" {
-  default = "hpc.8core-32ram-ssd-ephem"
-}
-
-
-#########################
-# worker nodes settings #
-#########################
-variable "worker_nodes_count" {
-  default = 8
-}
-
-variable "worker_nodes_name_prefix" {
-  description = "Use a-z, 0-9 and the hyphen (-) only."
-  default     = "worker"
-}
-
-variable "worker_nodes_flavor" {
-  default = "standard.small"
-}
-
-
-variable "int_network" {
-  description = "Internal network address, use CIDR notation"
-  default     = "10.0.0.0/24"
-}
-
-variable "pool" {
-  description = "FIP pool"
-  default     = "public-cesnet-195-113-167-GROUP"
-}
-
-
-variable "image" {
-  description = "Image used for both master and worker servers"
-  default     = "88f8e72a-bbf0-4ccc-8ff2-4f3188cd0d18"
-}
-
-variable "ssh_user_name" {
-  default = "ubuntu"
-}
-
-variable "kube_vip" {
-  description = "Internal IP for kube-vip to access kube-api"
-  default     = "10.0.0.5"
-}
-
-variable "kube_fip" {
-  description = "Allocate floating IP for kubespray"
-  type        = bool
-  default     = false
-}
-
-variable "kube_fip_create_port" {
-  description = "True if you want floating IP address for kube-vip to access kube-api"
-  type        = bool
-  default     = false
-}
-
-
-#########################
-# master node volumes
-#########################
-
-variable "master_node_volumes_count" {
-  description = "Number of volumes added to master nodes (0 to disable attaching volumes)"
-  default     = ""
-}
-
-variable "master_node_volume_size" {
-  description = "Size of volume attached to master nodes (in GB)"
-  default     = 500
-}
diff --git a/clouds/g2/ostrava/terraform/modules/kube_training/volumes.tf b/clouds/g2/ostrava/terraform/modules/kube_training/volumes.tf
deleted file mode 100644
index 1ae0f2e909efa5d5356152e976e35f697699a52c..0000000000000000000000000000000000000000
--- a/clouds/g2/ostrava/terraform/modules/kube_training/volumes.tf
+++ /dev/null
@@ -1,14 +0,0 @@
-
-resource "openstack_blockstorage_volume_v3" "master_volumes_b" {
-  count = var.master_node_volumes_count != "" ? var.master_node_volumes_count : var.master_nodes_count
-  name  = "${var.kusername}-master-node-volume-b-${count.index+1}"
-  size  = var.master_node_volume_size
-}
-
-resource "openstack_compute_volume_attach_v2" "master_volumes_b_attachments" {
-  count = var.master_node_volumes_count != "" ? var.master_node_volumes_count : var.master_nodes_count
-  instance_id = element(openstack_compute_instance_v2.master_nodes.*.id, count.index)
-  volume_id   = element(openstack_blockstorage_volume_v3.master_volumes_b.*.id, count.index)
-  #device = "/dev/sdb"
-}
-