From afd3bef5c2a263736b8e555bc7582322b618a30e Mon Sep 17 00:00:00 2001 From: Sebastian Rieger Date: Thu, 5 May 2022 13:37:27 +0200 Subject: [PATCH] removed old demo4 tf file, added terraform state stuff to .gitignore --- .gitignore | 6 + .../lab4-scale-out-lb/demo4-scale-out-lb.tf | 353 ------------------ 2 files changed, 6 insertions(+), 353 deletions(-) delete mode 100644 terraform/lab4-scale-out-lb/demo4-scale-out-lb.tf diff --git a/.gitignore b/.gitignore index 44c6b32..1c777ed 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,8 @@ clouds.yaml **/clouds.yaml +venv +**/terraform.exe +**/terraform.tfstate +**/terraform.tfstate.backup +**/.terraform.lock.hcl +**/.terraform diff --git a/terraform/lab4-scale-out-lb/demo4-scale-out-lb.tf b/terraform/lab4-scale-out-lb/demo4-scale-out-lb.tf deleted file mode 100644 index 6e3a9e4..0000000 --- a/terraform/lab4-scale-out-lb/demo4-scale-out-lb.tf +++ /dev/null @@ -1,353 +0,0 @@ -# Define CloudComp group number -variable "group_number" { - type = string - default = "30" -} - -# Define OpenStack credentials, project config etc. -locals { - auth_url = "https://private-cloud.informatik.hs-fulda.de:5000/v3" - user_name = "CloudComp${var.group_number}" - user_password = "demo" - tenant_name = "CloudComp${var.group_number}" - network_name = "CloudComp${var.group_number}-net" - image_name = "Ubuntu 18.04 - Bionic Beaver - 64-bit - Cloud Based Image" - flavor_name = "m1.small" - region_name = "RegionOne" -} - -# Define OpenStack provider -terraform { -required_version = ">= 0.14.0" - required_providers { - openstack = { - source = "terraform-provider-openstack/openstack" - version = ">= 1.40.0" - } - } -} - -# Configure the OpenStack Provider -provider "openstack" { - user_name = local.user_name - tenant_name = local.tenant_name - password = local.user_password - auth_url = local.auth_url - region = local.region_name - use_octavia = true -} - -# import keypair -resource "openstack_compute_keypair_v2" "terraform-keypair" { - name = "my-terraform-pubkey" - #public_key = file("~/.ssh/id_rsa.pub") -} - -# create api security group -resource "openstack_networking_secgroup_v2" "terraform-secgroup-api" { - name = "my-terraform-secgroup-api" - description = "for API services only" -} - -resource "openstack_networking_secgroup_rule_v2" "terraform-secgroup-api-rule-http" { - 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.terraform-secgroup-api.id -} - -resource "openstack_networking_secgroup_rule_v2" "terraform-secgroup-api-rule-ssh" { - 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.terraform-secgroup-api.id -} - -# create worker security group -resource "openstack_networking_secgroup_v2" "terraform-secgroup-worker" { - name = "my-terraform-secgroup-worker" - description = "for services that run on a worker node" -} - -resource "openstack_networking_secgroup_rule_v2" "terraform-secgroup-worker-rule-ssh" { - 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.terraform-secgroup-worker.id -} - -resource "openstack_networking_secgroup_v2" "terraform-secgroup-control" { - name = "my-terraform-secgroup-control" - description = "for services that run on a control node" -} - -resource "openstack_networking_secgroup_rule_v2" "terraform-secgroup-control-rule-ssh" { - 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.terraform-secgroup-control.id -} - -resource "openstack_networking_secgroup_rule_v2" "terraform-secgroup-control-rule-http" { - 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.terraform-secgroup-control.id -} - -resource "openstack_networking_secgroup_rule_v2" "terraform-secgroup-control-rule-rabbitmq" { - direction = "ingress" - ethertype = "IPv4" - protocol = "tcp" - port_range_min = 5672 - port_range_max = 5672 - remote_group_id = openstack_networking_secgroup_v2.terraform-secgroup-worker.id - security_group_id = openstack_networking_secgroup_v2.terraform-secgroup-control.id -} - -# create services security group -resource "openstack_networking_secgroup_v2" "terraform-secgroup-services" { - name = "my-terraform-secgroup-services" - description = "for DB and AMQP services only" -} - -resource "openstack_networking_secgroup_rule_v2" "terraform-secgroup-services-rule-ssh" { - 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.terraform-secgroup-services.id -} - -resource "openstack_networking_secgroup_rule_v2" "terraform-secgroup-services-rule-http" { - 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.terraform-secgroup-services.id -} - -resource "openstack_networking_secgroup_rule_v2" "terraform-secgroup-services-rule-mysql-api" { - direction = "ingress" - ethertype = "IPv4" - protocol = "tcp" - port_range_min = 3306 - port_range_max = 3306 - remote_group_id = openstack_networking_secgroup_v2.terraform-secgroup-api.id - security_group_id = openstack_networking_secgroup_v2.terraform-secgroup-services.id -} - -resource "openstack_networking_secgroup_rule_v2" "terraform-secgroup-services-rule-rabbitmq-worker" { - direction = "ingress" - ethertype = "IPv4" - protocol = "tcp" - port_range_min = 5672 - port_range_max = 5672 - remote_group_id = openstack_networking_secgroup_v2.terraform-secgroup-worker.id - security_group_id = openstack_networking_secgroup_v2.terraform-secgroup-services.id -} - -resource "openstack_networking_secgroup_rule_v2" "terraform-secgroup-services-rule-rabbitmq-api" { - direction = "ingress" - ethertype = "IPv4" - protocol = "tcp" - port_range_min = 5672 - port_range_max = 5672 - remote_group_id = openstack_networking_secgroup_v2.terraform-secgroup-api.id - security_group_id = openstack_networking_secgroup_v2.terraform-secgroup-services.id -} - - -########################################################################### -# -# create app-services instance -# -########################################################################### -resource "openstack_compute_instance_v2" "terraform-instance-app-services" { - name = "my-terraform-app-services" - image_name = local.image_name - flavor_name = local.flavor_name - key_pair = openstack_compute_keypair_v2.terraform-keypair.name - security_groups = [openstack_networking_secgroup_v2.terraform-secgroup-services.name] - - network { - name = local.network_name - } - - user_data = <<-EOF - #!/usr/bin/env bash - curl -L -s https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/faafo/contrib/install.sh | bash -s -- \ - -i database -i messaging - rabbitmqctl add_user faafo guest - rabbitmqctl set_user_tags faafo administrator - rabbitmqctl set_permissions -p / faafo ".*" ".*" ".*" - EOF -} - -########################################################################### -# -# create app-api instances -# -########################################################################### -resource "openstack_compute_instance_v2" "terraform-instance-app-api-1" { - name = "my-terraform-app-api-1" - image_name = local.image_name - flavor_name = local.flavor_name - key_pair = openstack_compute_keypair_v2.terraform-keypair.name - security_groups = [openstack_networking_secgroup_v2.terraform-secgroup-api.name] - - network { - name = local.network_name - } - - user_data = <<-EOF - #!/usr/bin/env bash - curl -L -s https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/faafo/contrib/install.sh | bash -s -- \ - -i faafo -r api -m 'amqp://faafo:guest@${openstack_compute_instance_v2.terraform-instance-app-services.access_ip_v4}:5672/' \ - -d 'mysql+pymysql://faafo:password@${openstack_compute_instance_v2.terraform-instance-app-services.access_ip_v4}:3306/faafo' - EOF -} - -resource "openstack_compute_instance_v2" "terraform-instance-app-api-2" { - name = "my-terraform-app-api-2" - image_name = local.image_name - flavor_name = local.flavor_name - key_pair = openstack_compute_keypair_v2.terraform-keypair.name - security_groups = [openstack_networking_secgroup_v2.terraform-secgroup-api.id] - - network { - name = local.network_name - } - - user_data = <<-EOF - #!/usr/bin/env bash - curl -L -s https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/faafo/contrib/install.sh | bash -s -- \ - -i faafo -r api -m 'amqp://faafo:guest@${openstack_compute_instance_v2.terraform-instance-app-services.access_ip_v4}:5672/' \ - -d 'mysql+pymysql://faafo:password@${openstack_compute_instance_v2.terraform-instance-app-services.access_ip_v4}:3306/faafo' - EOF -} - -########################################################################### -# -# create worker instances -# -########################################################################### -resource "openstack_compute_instance_v2" "terraform-instance-app-worker-1" { - name = "my-terraform-app-worker-1" - image_name = local.image_name - flavor_name = local.flavor_name - key_pair = openstack_compute_keypair_v2.terraform-keypair.name - security_groups = [openstack_networking_secgroup_v2.terraform-secgroup-worker.id] - - network { - name = local.network_name - } - - user_data = <<-EOF - #!/usr/bin/env bash - curl -L -s https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/faafo/contrib/install.sh | bash -s -- \ - -i faafo -r worker -e 'http://${openstack_compute_instance_v2.terraform-instance-app-api-1.access_ip_v4}' -m 'amqp://faafo:guest@${openstack_compute_instance_v2.terraform-instance-app-services.access_ip_v4}:5672/' - EOF -} - -resource "openstack_compute_instance_v2" "terraform-instance-app-worker-2" { - name = "my-terraform-app-worker-2" - image_name = local.image_name - flavor_name = local.flavor_name - key_pair = openstack_compute_keypair_v2.terraform-keypair.name - security_groups = [openstack_networking_secgroup_v2.terraform-secgroup-worker.id] - - network { - name = local.network_name - } - - user_data = <<-EOF - #!/usr/bin/env bash - curl -L -s https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/faafo/contrib/install.sh | bash -s -- \ - -i faafo -r worker -e 'http://${openstack_compute_instance_v2.terraform-instance-app-api-1.access_ip_v4}' -m 'amqp://faafo:guest@${openstack_compute_instance_v2.terraform-instance-app-services.access_ip_v4}:5672/' - EOF -} - -########################################################################### -# -# create load balancer -# -########################################################################### -data "openstack_networking_network_v2" "network_1" { - name = local.network_name -} - -resource "openstack_lb_loadbalancer_v2" "lb_1" { - vip_subnet_id = data.openstack_networking_network_v2.network_1.subnets[0] -} - -resource "openstack_lb_listener_v2" "listener_1" { - protocol = "HTTP" - protocol_port = 80 - loadbalancer_id = openstack_lb_loadbalancer_v2.lb_1.id - connection_limit = 1024 -} - -resource "openstack_lb_pool_v2" "pool_1" { - protocol = "HTTP" - lb_method = "ROUND_ROBIN" - listener_id = openstack_lb_listener_v2.listener_1.id -} - -resource "openstack_lb_members_v2" "members_1" { - pool_id = openstack_lb_pool_v2.pool_1.id - - member { - address = openstack_compute_instance_v2.terraform-instance-app-api-1.access_ip_v4 - protocol_port = 80 - } - - member { - address = openstack_compute_instance_v2.terraform-instance-app-api-2.access_ip_v4 - protocol_port = 80 - } -} - -resource "openstack_lb_monitor_v2" "monitor_1" { - pool_id = openstack_lb_pool_v2.pool_1.id - type = "HTTP" - delay = 5 - timeout = 5 - max_retries = 3 - http_method = "GET" - url_path = "/" - expected_codes = 200 -} - -########################################################################### -# -# assign floating ip to load balancer -# -########################################################################### -resource "openstack_networking_floatingip_v2" "fip_1" { - pool = "public1" - port_id = openstack_lb_loadbalancer_v2.lb_1.vip_port_id -} - -output "loadbalancer_vip_addr" { - value = openstack_networking_floatingip_v2.fip_1 -}