From 64670ebd17f967c2f83d4df70aed970aa95a7d51 Mon Sep 17 00:00:00 2001
From: Sebastian Rieger <sebastian.rieger@informatik.hs-fulda.de>
Date: Sun, 13 Apr 2025 10:18:37 +0200
Subject: [PATCH] updated certificate, image name and AUTH_URL of new charmed
 openstack deployment, changed old GOGS repo to new git-ce.rwth-aachen.de repo

---
 CloudComp-example-openrc                      |  2 +-
 clouds-example.yaml                           |  2 +-
 demo1_getting_started.py                      | 14 +++++---
 demo2_instance_with_init_script.py            | 10 +++---
 demo3_microservice.py                         | 13 ++++----
 demo4_scale_out.py                            | 18 +++++------
 demo4_scale_out_add_worker.py                 | 11 ++++---
 destroy_all_demo_instances.py                 |  2 +-
 .../cloudcomp-counter-demo-with-vpc.json      |  2 +-
 .../cloudcomp-counter-demo.json               |  2 +-
 example-projects/demo3-microservice-in-aws.py | 11 ++++---
 example-projects/demo4-scale-out-lb-in-aws.py | 19 ++++++-----
 .../aws-boto3-rds-db/start.py                 |  6 ++--
 .../start.py                                  |  6 ++--
 .../start-and-add-new-target.py               |  6 ++--
 .../aws-boto3-standalone-db/start.py          |  6 ++--
 faafo/contrib/install-aws.sh                  |  4 +--
 faafo/contrib/install.sh                      |  5 ++-
 root-ca.crt                                   | 32 +++++++++----------
 terraform/K3S/terraform.tfvars                |  4 +--
 terraform/lab1/lab1.tf                        |  4 +--
 terraform/lab4-scale-out-lb/lab4.tf           |  4 +--
 22 files changed, 97 insertions(+), 86 deletions(-)

diff --git a/CloudComp-example-openrc b/CloudComp-example-openrc
index 402cbdf..9f4a8d3 100644
--- a/CloudComp-example-openrc
+++ b/CloudComp-example-openrc
@@ -17,7 +17,7 @@ export GROUP_NUMBER=0
 # OpenStack API is version 3. For example, your cloud provider may implement
 # Image API v1.1, Block Storage API v2, and Compute API v2.0. OS_AUTH_URL is
 # only for the Identity API served through keystone.
-export OS_AUTH_URL=https://10.32.4.182:5000/v3
+export OS_AUTH_URL=https://10.32.4.29:5000/v3
 # With the addition of Keystone we have standardized on the term **project**
 # as the entity that owns the resources.
 #export OS_PROJECT_ID=bba62cf6bf0b447491829d207e1b05f9
diff --git a/clouds-example.yaml b/clouds-example.yaml
index 6e940b9..5f96f0f 100644
--- a/clouds-example.yaml
+++ b/clouds-example.yaml
@@ -11,7 +11,7 @@ clouds:
     auth:
       # auth_url: https://private-cloud.example.com:5000/v3
       # auth_url: https://private-cloud2.example.com:5000/v3
-      auth_url: https://10.32.4.182:5000/v3
+      auth_url: https://10.32.4.29:5000/v3
       username: "CloudComp0"
       password: "demo"
       # project_id: bba62cf6bf0b447491829d207e1b05f9
diff --git a/demo1_getting_started.py b/demo1_getting_started.py
index 10b7f38..055fd2b 100644
--- a/demo1_getting_started.py
+++ b/demo1_getting_started.py
@@ -9,21 +9,23 @@
 # libCloud: https://libcloud.apache.org/
 # libCloud API documentation: https://libcloud.readthedocs.io/en/latest/
 # OpenStack API documentation: https://developer.openstack.org/
+#
 # this code was initially based on the former tutorial:
 #   https://developer.openstack.org/firstapp-libcloud/
 
-# Only needed for the password prompt:
+# Only needed when using a password prompt:
 # import getpass
 
 from libcloud.compute.providers import get_driver
 from libcloud.compute.types import Provider
 
 # For our new Charmed OpenStack private cloud, we need to specify the path to the
-# root CA certificate
+# root CA certificate for now, until we have a valid certificate for the OpenStack API.
+# This is necessary to avoid SSL certificate verification errors.
 import libcloud.security
 libcloud.security.CA_CERTS_PATH = ['./root-ca.crt']
 # Disable SSL certificate verification (not recommended for production)
-# libcloud.security.VERIFY_SSL_CERT = False
+#libcloud.security.VERIFY_SSL_CERT = False
 
 # Please use 1-29 for 0 in the following variable to specify your group number.
 # (will be used for the username, project etc., as coordinated in the lab sessions)
@@ -31,6 +33,7 @@ libcloud.security.CA_CERTS_PATH = ['./root-ca.crt']
 GROUP_NUMBER = 0
 
 
+
 ###############################################################################################
 #
 #  no changes necessary below this line in this example
@@ -38,8 +41,11 @@ GROUP_NUMBER = 0
 ###############################################################################################
 
 # web service endpoint of the private cloud infrastructure
-AUTH_URL = 'https://private-cloud.informatik.hs-fulda.de:5000'
+#AUTH_URL = 'https://private-cloud.informatik.hs-fulda.de:5000'
 # auth_url = 'https://private-cloud2.informatik.hs-fulda.de:5000'
+# using the IP address of the OpenStack API endpoint to avoid DNS resolution issues for students
+# using Linux or MacOS as our VPN currently does not support IPv6
+AUTH_URL = "https://10.32.4.29:5000"
 # your username in OpenStack
 AUTH_USERNAME = 'CloudComp' + str(GROUP_NUMBER)
 # your project in OpenStack
diff --git a/demo2_instance_with_init_script.py b/demo2_instance_with_init_script.py
index 0e317d1..400a682 100644
--- a/demo2_instance_with_init_script.py
+++ b/demo2_instance_with_init_script.py
@@ -26,6 +26,7 @@ libcloud.security.CA_CERTS_PATH = ['./root-ca.crt']
 # Please use 1-29 as environment variable GROUP_NUMBER to specify your group number.
 # (will be used for the username, project etc., as coordinated in the lab sessions)
 
+# get the GROUP_NUMBER from an env var, was only hard-coded as easy entry in demo1
 group_number = os.environ.get('GROUP_NUMBER')
 if group_number is None:
     sys.exit('Please set the GROUP_NUMBER environment variable to your group number,\n'
@@ -37,8 +38,8 @@ if group_number is None:
 
 # web service endpoint of the private cloud infrastructure
 # auth_url = 'https://private-cloud.informatik.hs-fulda.de:5000'
-AUTH_URL = 'https://10.32.4.182:5000'
 # auth_url = 'https://private-cloud2.informatik.hs-fulda.de:5000'
+AUTH_URL = 'https://10.32.4.29:5000'
 # your username in OpenStack
 AUTH_USERNAME = 'CloudComp' + str(group_number)
 print(f'Using username: {AUTH_USERNAME}\n')
@@ -50,7 +51,7 @@ PROJECT_NETWORK = 'CloudComp' + str(group_number) + '-net'
 # The image to look for and use for the started instance
 # ubuntu_image_name = "Ubuntu 18.04 - Bionic Beaver - 64-bit - Cloud Based Image"
 #UBUNTU_IMAGE_NAME = "auto-sync/ubuntu-jammy-22.04-amd64-server-20240319-disk1.img"
-UBUNTU_IMAGE_NAME = "ubuntu-22.04-jammy-x86_64"
+UBUNTU_IMAGE_NAME = "ubuntu-22.04-jammy-server-cloud-image-amd64"
 
 # The public key to be used for SSH connection, please make sure, that you have the
 # corresponding private key
@@ -175,9 +176,8 @@ def main():  # noqa: C901 pylint: disable=too-many-branches,too-many-statements,
     #
     ###########################################################################
 
-    hsfd_faafo_cloud_init_script = 'https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/faafo/contrib/install.sh'  # noqa: E501 pylint: disable=line-too-long
-    # testing / faafo dev branch:
-    # hsfd_faafo_cloud_init_script = 'https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/branch/dev_faafo/faafo/contrib/install.sh'  # noqa: E501 pylint: disable=line-too-long
+    # new repo on git-ce.rwth-aachen.de:
+    hsfd_faafo_cloud_init_script = 'https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples/-/raw/master/faafo/contrib/install.sh'
 
     userdata = '#!/usr/bin/env bash\n' \
                f'curl -L -s {hsfd_faafo_cloud_init_script} | bash -s -- ' \
diff --git a/demo3_microservice.py b/demo3_microservice.py
index f4765d6..0fb10f4 100644
--- a/demo3_microservice.py
+++ b/demo3_microservice.py
@@ -35,8 +35,8 @@ if group_number is None:
 
 # web service endpoint of the private cloud infrastructure
 # auth_url = 'https://private-cloud.informatik.hs-fulda.de:5000'
-AUTH_URL = 'https://10.32.4.182:5000'
 # auth_url = 'https://private-cloud2.informatik.hs-fulda.de:5000'
+AUTH_URL = 'https://10.32.4.29:5000'
 # your username in OpenStack
 AUTH_USERNAME = 'CloudComp' + str(group_number)
 print(f'Using username: {AUTH_USERNAME}\n')
@@ -48,7 +48,7 @@ PROJECT_NETWORK = 'CloudComp' + str(group_number) + '-net'
 # The image to look for and use for the started instance
 # ubuntu_image_name = "Ubuntu 18.04 - Bionic Beaver - 64-bit - Cloud Based Image"
 #UBUNTU_IMAGE_NAME = "auto-sync/ubuntu-jammy-22.04-amd64-server-20240319-disk1.img"
-UBUNTU_IMAGE_NAME = "ubuntu-22.04-jammy-x86_64"
+UBUNTU_IMAGE_NAME = "ubuntu-22.04-jammy-server-cloud-image-amd64"
 
 # The public key to be used for SSH connection, please make sure, that you have the
 # corresponding private key
@@ -192,9 +192,11 @@ def main():  # noqa: C901 pylint: disable=too-many-branches,too-many-statements,
     #
     ###########################################################################
 
+    # new repo on git-ce.rwth-aachen.de:
+    hsfd_faafo_cloud_init_script = 'https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples/-/raw/master/faafo/contrib/install.sh'
+
     userdata = '#!/usr/bin/env bash\n' \
-               'curl -L -s https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-' \
-               'examples/raw/master/faafo/contrib/install.sh | bash -s -- ' \
+               f'curl -L -s {hsfd_faafo_cloud_init_script} | bash -s -- ' \
                '-i messaging -i faafo -r api\n'
     print('\nUsing cloud-init userdata for controller:\n"' + userdata + '"\n')
 
@@ -252,8 +254,7 @@ def main():  # noqa: C901 pylint: disable=too-many-branches,too-many-statements,
     ###########################################################################
 
     userdata = '#!/usr/bin/env bash\n' \
-               'curl -L -s https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-' \
-               'examples/raw/master/faafo/contrib/install.sh | bash -s -- ' \
+               f'curl -L -s {hsfd_faafo_cloud_init_script} | bash -s -- ' \
                f'-i faafo -r worker -e "http://{ip_controller}" -m "amqp://faafo:guest@' \
                f'{ip_controller}:5672/"\n'
     print('\nUsing cloud-init userdata for worker:\n"' + userdata + '"\n')
diff --git a/demo4_scale_out.py b/demo4_scale_out.py
index b119652..d0a0803 100644
--- a/demo4_scale_out.py
+++ b/demo4_scale_out.py
@@ -35,8 +35,8 @@ if group_number is None:
 
 # web service endpoint of the private cloud infrastructure
 # auth_url = 'https://private-cloud.informatik.hs-fulda.de:5000'
-AUTH_URL = 'https://10.32.4.182:5000'
 # auth_url = 'https://private-cloud2.informatik.hs-fulda.de:5000'
+AUTH_URL = 'https://10.32.4.29:5000'
 # your username in OpenStack
 AUTH_USERNAME = 'CloudComp' + str(group_number)
 print(f'Using username: {AUTH_USERNAME}\n')
@@ -48,7 +48,7 @@ PROJECT_NETWORK = 'CloudComp' + str(group_number) + '-net'
 # The image to look for and use for the started instance
 # ubuntu_image_name = "Ubuntu 18.04 - Bionic Beaver - 64-bit - Cloud Based Image"
 #UBUNTU_IMAGE_NAME = "auto-sync/ubuntu-jammy-22.04-amd64-server-20240319-disk1.img"
-UBUNTU_IMAGE_NAME = "ubuntu-22.04-jammy-x86_64"
+UBUNTU_IMAGE_NAME = "ubuntu-22.04-jammy-server-cloud-image-amd64"
 
 # The public key to be used for SSH connection, please make sure, that you have the
 # corresponding private key
@@ -250,9 +250,11 @@ def main():  # noqa: C901 pylint: disable=too-many-branches,too-many-statements,
     #
     ###########################################################################
 
+    # new repo on git-ce.rwth-aachen.de:
+    hsfd_faafo_cloud_init_script = 'https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples/-/raw/master/faafo/contrib/install.sh'
+
     userdata_service = '#!/usr/bin/env bash\n' \
-               'curl -L -s https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-' \
-               'examples/raw/master/faafo/contrib/install.sh | bash -s -- ' \
+               f'curl -L -s {hsfd_faafo_cloud_init_script} | bash -s -- ' \
                '-i database -i messaging\n'
     print('\nUsing cloud-init userdata for service:\n"' + userdata_service + '"\n')
 
@@ -275,9 +277,7 @@ def main():  # noqa: C901 pylint: disable=too-many-branches,too-many-statements,
     ###########################################################################
 
     userdata_api = '#!/usr/bin/env bash\n' \
-                   'curl -L -s https://gogs.informatik.hs-fulda.de/srieger/' \
-                   'cloud-computing-msc-ai-examples/raw/master/faafo/contrib/' \
-                   'install.sh | bash -s -- ' \
+                   f'curl -L -s {hsfd_faafo_cloud_init_script} | bash -s -- ' \
                    f'-i faafo -r api -m "amqp://faafo:guest@{services_ip}:5672/" ' \
                    f'-d "mysql+pymysql://faafo:password@{services_ip}:3306/faafo"'
     print('\nUsing cloud-init userdata for api:\n"' + userdata_api + '"\n')
@@ -320,9 +320,7 @@ def main():  # noqa: C901 pylint: disable=too-many-branches,too-many-statements,
     ###########################################################################
 
     userdata_worker = '#!/usr/bin/env bash\n' \
-                      'curl -L -s https://gogs.informatik.hs-fulda.de/srieger/' \
-                      'cloud-computing-msc-ai-examples/raw/master/faafo/contrib/' \
-                      'install.sh | bash -s -- ' \
+                      f'curl -L -s {hsfd_faafo_cloud_init_script} | bash -s -- ' \
                       f'-i faafo -r worker -e "http://{api_1_ip}" '\
                       f'-m "amqp://faafo:guest@{services_ip}:5672/"'
     print('\nUsing cloud-init userdata for worker:\n"' + userdata_worker + '"\n')
diff --git a/demo4_scale_out_add_worker.py b/demo4_scale_out_add_worker.py
index 249e5ff..ecdc62b 100644
--- a/demo4_scale_out_add_worker.py
+++ b/demo4_scale_out_add_worker.py
@@ -33,8 +33,8 @@ if group_number is None:
 
 # web service endpoint of the private cloud infrastructure
 # auth_url = 'https://private-cloud.informatik.hs-fulda.de:5000'
-AUTH_URL = 'https://10.32.4.182:5000'
 # auth_url = 'https://private-cloud2.informatik.hs-fulda.de:5000'
+AUTH_URL = 'https://10.32.4.29:5000'
 # your username in OpenStack
 AUTH_USERNAME = 'CloudComp' + str(group_number)
 print(f'Using username: {AUTH_USERNAME}\n')
@@ -46,7 +46,7 @@ PROJECT_NETWORK = 'CloudComp' + str(group_number) + '-net'
 # The image to look for and use for the started instance
 # ubuntu_image_name = "Ubuntu 18.04 - Bionic Beaver - 64-bit - Cloud Based Image"
 #UBUNTU_IMAGE_NAME = "auto-sync/ubuntu-jammy-22.04-amd64-server-20240319-disk1.img"
-UBUNTU_IMAGE_NAME = "ubuntu-22.04-jammy-x86_64"
+UBUNTU_IMAGE_NAME = "ubuntu-22.04-jammy-server-cloud-image-amd64"
 
 # The public key to be used for SSH connection, please make sure, that you have the
 # corresponding private key
@@ -189,10 +189,11 @@ def main():  # noqa: C901 pylint: disable=too-many-branches,too-many-statements,
     #
     ###########################################################################
 
+    # new repo on git-ce.rwth-aachen.de:
+    hsfd_faafo_cloud_init_script = 'https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples/-/raw/master/faafo/contrib/install.sh'
+
     userdata_worker = '#!/usr/bin/env bash\n' \
-                      'curl -L -s https://gogs.informatik.hs-fulda.de/srieger/' \
-                      'cloud-computing-msc-ai-examples/raw/master/faafo/contrib/' \
-                      'install.sh | bash -s -- ' \
+                      f'curl -L -s {hsfd_faafo_cloud_init_script} | bash -s -- ' \
                       f'-i faafo -r worker -e "http://{api_1_ip}" '\
                       f'-m "amqp://faafo:guest@{services_ip}:5672/"'
     print('\nUsing cloud-init userdata for worker:\n"' + userdata_worker + '"\n')
diff --git a/destroy_all_demo_instances.py b/destroy_all_demo_instances.py
index 1173ea8..727ba09 100644
--- a/destroy_all_demo_instances.py
+++ b/destroy_all_demo_instances.py
@@ -39,7 +39,7 @@ if group_number is None:
 
 # web service endpoint of the private cloud infrastructure
 # auth_url = 'https://private-cloud.informatik.hs-fulda.de:5000'
-AUTH_URL = 'https://10.32.4.182:5000'
+AUTH_URL = 'https://10.32.4.29:5000'
 # auth_url = 'https://private-cloud2.informatik.hs-fulda.de:5000'
 # your username in OpenStack
 AUTH_USERNAME = 'CloudComp' + str(group_number)
diff --git a/example-projects/counter-demo/aws-cloudformation/cloudcomp-counter-demo-with-vpc.json b/example-projects/counter-demo/aws-cloudformation/cloudcomp-counter-demo-with-vpc.json
index 68ffbf5..62f38a2 100644
--- a/example-projects/counter-demo/aws-cloudformation/cloudcomp-counter-demo-with-vpc.json
+++ b/example-projects/counter-demo/aws-cloudformation/cloudcomp-counter-demo-with-vpc.json
@@ -68,7 +68,7 @@
                 "VERTSYS_PATH=\"$SCRIPT_ROOT_PATH/verteilte-systeme-bsc-ai-examples/VerteilteSysteme-Examples/build/\"\n",
                 "#JARS = \"TCPServer.jar TCPServerMulti.jar UDPServer.jar UDPServerMulti.jar UDPTimeCounterServer.jar TCPTimeCounterServer.jar TCPPerfServer.jar\"\n",
                 "JARS=\"TCPServer.jar TCPPerfServer.jar UDPServer.jar UDPTimeCounterServer.jar TCPTimeCounterServer.jar TCPTimeCounterRESTServer.jar\"\n",
-                "REPO=\"https://gogs.informatik.hs-fulda.de/srieger/verteilte-systeme-bsc-ai-examples.git\"\n",
+                "REPO=\"https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples.git\"\n",
                 "\n",
                 "# Create path to run the script\n",
                 "mkdir $SCRIPT_ROOT_PATH\n",
diff --git a/example-projects/counter-demo/aws-cloudformation/old-example-without-vpc/cloudcomp-counter-demo.json b/example-projects/counter-demo/aws-cloudformation/old-example-without-vpc/cloudcomp-counter-demo.json
index 0bd683a..903cab6 100644
--- a/example-projects/counter-demo/aws-cloudformation/old-example-without-vpc/cloudcomp-counter-demo.json
+++ b/example-projects/counter-demo/aws-cloudformation/old-example-without-vpc/cloudcomp-counter-demo.json
@@ -79,7 +79,7 @@
                 "VERTSYS_PATH=\"$SCRIPT_ROOT_PATH/verteilte-systeme-bsc-ai-examples/VerteilteSysteme-Examples/build/\"\n",
                 "#JARS = \"TCPServer.jar TCPServerMulti.jar UDPServer.jar UDPServerMulti.jar UDPTimeCounterServer.jar TCPTimeCounterServer.jar TCPPerfServer.jar\"\n",
                 "JARS=\"TCPServer.jar TCPPerfServer.jar UDPServer.jar UDPTimeCounterServer.jar TCPTimeCounterServer.jar TCPTimeCounterRESTServer.jar\"\n",
-                "REPO=\"https://gogs.informatik.hs-fulda.de/srieger/verteilte-systeme-bsc-ai-examples.git\"\n",
+                "REPO=\"https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples.git\"\n",
                 "\n",
                 "# Create path to run the script\n",
                 "mkdir $SCRIPT_ROOT_PATH\n",
diff --git a/example-projects/demo3-microservice-in-aws.py b/example-projects/demo3-microservice-in-aws.py
index 23af54f..68ef61a 100644
--- a/example-projects/demo3-microservice-in-aws.py
+++ b/example-projects/demo3-microservice-in-aws.py
@@ -203,8 +203,11 @@ def main():
     #
     # Thanks to Stefan Friedmann for finding this fix ;)
 
-    userdata = '''#!/usr/bin/env bash
-    curl -L -s https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/faafo/contrib/install-aws.sh | bash -s -- \
+    # new repo on git-ce.rwth-aachen.de:
+    hsfd_faafo_cloud_init_script = 'https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples/-/raw/master/faafo/contrib/install-aws.sh'
+
+    userdata = f'''#!/usr/bin/env bash
+    curl -L -s {hsfd_faafo_cloud_init_script} | bash -s -- \
         -i messaging -i faafo -r api
     rabbitmqctl add_user faafo guest
     rabbitmqctl set_user_tags faafo administrator
@@ -268,8 +271,8 @@ def main():
     #
     ###########################################################################
 
-    userdata = '''#!/usr/bin/env bash
-    curl -L -s https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/faafo/contrib/install-aws.sh | bash -s -- \
+    userdata = f'''#!/usr/bin/env bash
+    curl -L -s {hsfd_faafo_cloud_init_script} | bash -s -- \
         -i faafo -r worker -e 'http://%(ip_controller)s' -m 'amqp://faafo:guest@%(ip_controller)s:5672/'
     ''' % {'ip_controller': private_ip_controller}
 
diff --git a/example-projects/demo4-scale-out-lb-in-aws.py b/example-projects/demo4-scale-out-lb-in-aws.py
index 4b85beb..2915026 100644
--- a/example-projects/demo4-scale-out-lb-in-aws.py
+++ b/example-projects/demo4-scale-out-lb-in-aws.py
@@ -286,8 +286,11 @@ def main():
     #
     # Thanks to Stefan Friedmann for finding this fix ;)
 
-    userdata_service = '''#!/usr/bin/env bash
-    curl -L -s https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/faafo/contrib/install-aws.sh | bash -s -- \
+    # new repo on git-ce.rwth-aachen.de:
+    hsfd_faafo_cloud_init_script = 'https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples/-/raw/master/faafo/contrib/install-aws.sh'
+
+    userdata_service = f'''#!/usr/bin/env bash
+    curl -L -s {hsfd_faafo_cloud_init_script} | bash -s -- \
         -i database -i messaging
     rabbitmqctl add_user faafo guest
     rabbitmqctl set_user_tags faafo administrator
@@ -312,8 +315,8 @@ def main():
     #
     ###########################################################################
 
-    userdata_api = '''#!/usr/bin/env bash
-    curl -L -s https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/faafo/contrib/install-aws.sh | bash -s -- \
+    userdata_api = f'''#!/usr/bin/env bash
+    curl -L -s {hsfd_faafo_cloud_init_script} | bash -s -- \
         -i faafo -r api -m 'amqp://faafo:guest@%(services_ip)s:5672/' \
         -d 'mysql+pymysql://faafo:password@%(services_ip)s:3306/faafo'
     ''' % {'services_ip': services_ip}
@@ -350,13 +353,13 @@ def main():
     #
     ###########################################################################
 
-    userdata_worker = '''#!/usr/bin/env bash
-    curl -L -s https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/faafo/contrib/install-aws.sh | bash -s -- \
+    userdata_worker = f'''#!/usr/bin/env bash
+    curl -L -s {hsfd_faafo_cloud_init_script} | bash -s -- \
         -i faafo -r worker -e 'http://%(api_1_ip)s' -m 'amqp://faafo:guest@%(services_ip)s:5672/'
     ''' % {'api_1_ip': api_1_ip, 'services_ip': services_ip}
 
-    # userdata_api-api-2 = '''#!/usr/bin/env bash
-    # curl -L -s https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/faafo/contrib/install-aws.sh | bash -s -- \
+    # userdata_api-api-2 = f'''#!/usr/bin/env bash
+    # curl -L -s {hsfd_faafo_cloud_init_script} | bash -s -- \
     #     -i faafo -r worker -e 'http://%(api_2_ip)s' -m 'amqp://faafo:guest@%(services_ip)s:5672/'
     # ''' % {'api_2_ip': api_2_ip, 'services_ip': services_ip}
 
diff --git a/example-projects/tug-of-war-in-the-clouds/aws-boto3-rds-db/start.py b/example-projects/tug-of-war-in-the-clouds/aws-boto3-rds-db/start.py
index c2c6fcd..63a7bc5 100644
--- a/example-projects/tug-of-war-in-the-clouds/aws-boto3-rds-db/start.py
+++ b/example-projects/tug-of-war-in-the-clouds/aws-boto3-rds-db/start.py
@@ -200,9 +200,9 @@ userDataWebServer = ('#!/bin/bash\n'
                      # 'cp tug-of-war-in-the-clouds.tar.gz /var/www/html/\n'
                      # 'tar zxvf tug-of-war-in-the-clouds.tar.gz\n'
                      'cd /var/www/html\n'
-                     'wget https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/index.php\n'
-                     'wget https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/cloud.php\n'
-                     'wget https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/config.php\n'
+                     'wget https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/index.php\n'
+                     'wget https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/cloud.php\n'
+                     'wget https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/config.php\n'
                      '\n'
                      '# change hostname of db connection\n'
                      'sed -i s/localhost/' + dbEndpointAddress + '/g /var/www/html/config.php\n'
diff --git a/example-projects/tug-of-war-in-the-clouds/aws-boto3-standalone-db-autoscaling/start.py b/example-projects/tug-of-war-in-the-clouds/aws-boto3-standalone-db-autoscaling/start.py
index e28516c..f01b3b8 100644
--- a/example-projects/tug-of-war-in-the-clouds/aws-boto3-standalone-db-autoscaling/start.py
+++ b/example-projects/tug-of-war-in-the-clouds/aws-boto3-standalone-db-autoscaling/start.py
@@ -266,9 +266,9 @@ userDataWebServer = ('#!/bin/bash\n'
                      # 'cp tug-of-war-in-the-clouds.tar.gz /var/www/html/\n'
                      # 'tar zxvf tug-of-war-in-the-clouds.tar.gz\n'
                      'cd /var/www/html\n'
-                     'wget https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/index.php\n'
-                     'wget https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/cloud.php\n'
-                     'wget https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/config.php\n'
+                     'wget https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/index.php\n'
+                     'wget https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/cloud.php\n'
+                     'wget https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/config.php\n'
                      '\n'
                      '# change hostname of db connection\n'
                      'sed -i s/localhost/' + privateIpDB + '/g /var/www/html/config.php\n'
diff --git a/example-projects/tug-of-war-in-the-clouds/aws-boto3-standalone-db/start-and-add-new-target.py b/example-projects/tug-of-war-in-the-clouds/aws-boto3-standalone-db/start-and-add-new-target.py
index 8262ee5..bd72db7 100644
--- a/example-projects/tug-of-war-in-the-clouds/aws-boto3-standalone-db/start-and-add-new-target.py
+++ b/example-projects/tug-of-war-in-the-clouds/aws-boto3-standalone-db/start-and-add-new-target.py
@@ -80,9 +80,9 @@ userDataWebServer = ('#!/bin/bash\n'
                      # 'cp tug-of-war-in-the-clouds.tar.gz /var/www/html/\n'
                      # 'tar zxvf tug-of-war-in-the-clouds.tar.gz\n'
                      'cd /var/www/html\n'
-                     'wget https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/index.php\n'
-                     'wget https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/cloud.php\n'
-                     'wget https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/config.php\n'
+                     'wget https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/index.php\n'
+                     'wget https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examplesraw/master/example-projects/tug-of-war-in-the-clouds/web-content/cloud.php\n'
+                     'wget https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/config.php\n'
                      '\n'
                      '# change hostname of db connection\n'
                      'sed -i s/localhost/' + privateIpDB + '/g /var/www/html/config.php\n'
diff --git a/example-projects/tug-of-war-in-the-clouds/aws-boto3-standalone-db/start.py b/example-projects/tug-of-war-in-the-clouds/aws-boto3-standalone-db/start.py
index 7600e2f..75b38a4 100644
--- a/example-projects/tug-of-war-in-the-clouds/aws-boto3-standalone-db/start.py
+++ b/example-projects/tug-of-war-in-the-clouds/aws-boto3-standalone-db/start.py
@@ -190,9 +190,9 @@ userDataWebServer = ('#!/bin/bash\n'
                      # 'cp tug-of-war-in-the-clouds.tar.gz /var/www/html/\n'
                      # 'tar zxvf tug-of-war-in-the-clouds.tar.gz\n'
                      'cd /var/www/html\n'
-                     'wget https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/index.php\n'
-                     'wget https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/cloud.php\n'
-                     'wget https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/config.php\n'
+                     'wget https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/index.php\n'
+                     'wget https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/cloud.php\n'
+                     'wget https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/config.php\n'
                      '\n'
                      '# change hostname of db connection\n'
                      'sed -i s/localhost/' + privateIpDB + '/g /var/www/html/config.php\n'
diff --git a/faafo/contrib/install-aws.sh b/faafo/contrib/install-aws.sh
index 909f771..d5c4c0c 100755
--- a/faafo/contrib/install-aws.sh
+++ b/faafo/contrib/install-aws.sh
@@ -151,8 +151,8 @@ if [[ -e /etc/os-release ]]; then
             exit 1
         fi
 
-        # HSFD changed to local repo
-        git clone https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples
+        # HSFD changed to git-ce.rwth-aachen.de repo
+        git clone https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples.git
         cd cloud-computing-msc-ai-examples/faafo
         # following line required by bug 1636150
         sudo pip3 install --upgrade pbr
diff --git a/faafo/contrib/install.sh b/faafo/contrib/install.sh
index d2787d3..7bfcab5 100755
--- a/faafo/contrib/install.sh
+++ b/faafo/contrib/install.sh
@@ -151,9 +151,8 @@ if [[ -e /etc/os-release ]]; then
             exit 1
         fi
 
-        # HSFD changed to local repo
-        #git clone https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples
-        git clone https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples
+        # HSFD changed to git-ce.rwth-aachen.de repo
+        git clone https://git-ce.rwth-aachen.de/sebastian.rieger/cloud-computing-msc-ai-examples.git
         cd cloud-computing-msc-ai-examples/faafo
         # following line required by bug 1636150
         sudo pip install --upgrade pbr
diff --git a/root-ca.crt b/root-ca.crt
index 4eff62b..984b7f7 100644
--- a/root-ca.crt
+++ b/root-ca.crt
@@ -1,23 +1,23 @@
 -----BEGIN CERTIFICATE-----
-MIIDazCCAlOgAwIBAgIUft3PZ4voZ3j7AcudVegnUHjbWacwDQYJKoZIhvcNAQEL
+MIIDazCCAlOgAwIBAgIUNuL4xjm+DmLpQ8+XdaFLF6WCeXswDQYJKoZIhvcNAQEL
 BQAwPTE7MDkGA1UEAxMyVmF1bHQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkg
-KGNoYXJtLXBraS1sb2NhbCkwHhcNMjUwNDExMTQyMjMzWhcNMzUwNDA5MTMyMzAz
+KGNoYXJtLXBraS1sb2NhbCkwHhcNMjUwNDExMTk1MDUzWhcNMzUwNDA5MTg1MTIz
 WjA9MTswOQYDVQQDEzJWYXVsdCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAo
 Y2hhcm0tcGtpLWxvY2FsKTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-AMWY2GS/EYzQZ1OuDBtfO7bG3ttjc6k0JN+nQerJZCFRU/juS+KkMskraXRwgtO7
-GaWz10FxV1SryGc33qwigusChsRDKH1BDh5yCtA10e/Fsfs5i6uqlg0pWNKnJYt3
-/H+u4MuNMBKZUgG5Sq4QmMwPRFEDJMgxesOz7BxvNoSUoUxYSxP9+3wCogcj1avK
-phfmyXxkeqWemh2qjUXuqAyoOg4mdz34UQSzAfj7ncKEIQuetbxgzinUgtMFmGha
-ZFBE0qAGmGZX268r142HYN8O724NI8ssZwDP157/voyUFgTHSd5AFjy3SEq7djCh
-DfoEnL4I/WMuZCm71cxBma0CAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud
-EwEB/wQFMAMBAf8wHQYDVR0OBBYEFBqKj5ecs/o3P+s4KaNQbiF745p1MB8GA1Ud
-IwQYMBaAFBqKj5ecs/o3P+s4KaNQbiF745p1MA0GCSqGSIb3DQEBCwUAA4IBAQAc
-OnPiNc2w1fyhspI30VqKfpELP8jJjzJxU/qwk8A5921JWOEAC8hCJssBgr1R3acA
-4mTxteoYZ55mQXuU+h8z0F1OiRAFVJ9lP5LSsDATqqD1PmxCXpgKmsENhTb1Ta8+
-JO+i+xt0L+WRe9L2jidQPFaa6cB6V+RpsOMF844Pq20sJiJRc/tffhxMGoVo9yCE
-a4wInh5V7JSJGERRZmAHBR923K5nrM/yAoUIjLzDdmvE/2h9ASYflDyxNHA4ayfX
-R+dOAgRsA14kKJAwCW5ehoKz0RojHUgEwjI7np2AskPnvTwe51JB3YtXhydKg1VN
-7E4UbP5m/P9eVwP4/5zt
+ANNZ/hPUFFUeiDX76gBYIKnpukB2Ebw0CAXlUnteHjLUCXyzvx+47C5RL4z9kJfv
+SpCVbMwYAw6/0xLvOCIsuPHMR+HMqVHnRhKRPeA0uuWycXs5v0qUK0tcfufA4I+v
+NhS5TDngfdScWr/HjhWdKxtZuTNI66nYDjluLfin2sjgwkKuOiE+/amReK7XYAnH
+zfkCi7BB2QcdEupvq8yqVh9N+KsoXAAdGmyfNIfSYWRbeSa+EQhE0FMDdx8UPO7+
+X/aFvylZVEHPeXX6/DfeELlxNYzWWWUeVEy3vYH1LRoDFB14mimx2QcuqL+gtIot
+c7NPkFna+b1Zoa6EYlvXkl0CAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud
+EwEB/wQFMAMBAf8wHQYDVR0OBBYEFCwXMS3Ia0vMYuMPBQkE7w47NhSZMB8GA1Ud
+IwQYMBaAFCwXMS3Ia0vMYuMPBQkE7w47NhSZMA0GCSqGSIb3DQEBCwUAA4IBAQCg
+pQbydWUkeIcvCHxJrNh2Y8USW/jVWjARZ7/5bkSDM5hl7+DX24+m6k+Dvm9bf0ta
+c/6PLEByozjbR8IEqsonzawOb404opQVDujdrY65wUMkyIcBNA04R3a6RuoGndse
+CAK2Du60CW6XXSvrgRO/7gcQajs5B0NOykrubDb58JdaR3weIinhrmsr+0I9zqtv
+sLFrWlgXmelVhW3Sa7gFVbFehYdFy/3OCTFsrX9yIJjDL8u+cZdEFI/Vp0SHIWHO
+l2lqvX0E/VieM0D6FiIO/oVtD4zE+2162DtNg7iSyrYVnTjRK0wXIVMAXchJ2H6L
+mx+DEn45qORcxFOzj1QB
 -----END CERTIFICATE-----
 -----BEGIN CERTIFICATE-----
 MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb
diff --git a/terraform/K3S/terraform.tfvars b/terraform/K3S/terraform.tfvars
index 1580a14..cdf5477 100644
--- a/terraform/K3S/terraform.tfvars
+++ b/terraform/K3S/terraform.tfvars
@@ -1,6 +1,6 @@
 ## These are for connecting with Openstack and sharing the Keypair
 
-auth_url        = "https://10.32.4.182:5000/v3"
+auth_url        = "https://10.32.4.29:5000/v3"
 region          = "RegionOne"
 tenant_name     = "CloudComp10" # Also known as project 
 user_name       = "CloudComp10"
@@ -22,7 +22,7 @@ domain_name     = "default"
 num_worker_nodes = 3
 master_flavor    = "m1.small"
 worker_flavor    = "m1.medium"
-os_image         = "ubuntu-22.04-jammy-x86_64"
+os_image         = "ubuntu-22.04-jammy-server-cloud-image-amd64"
 volume_size      = 15
 dns_servers     = ["10.33.16.100"]
 floating_ip_pool = "ext_net"
diff --git a/terraform/lab1/lab1.tf b/terraform/lab1/lab1.tf
index bb00681..4376f25 100644
--- a/terraform/lab1/lab1.tf
+++ b/terraform/lab1/lab1.tf
@@ -12,13 +12,13 @@ variable "group_number" {
 
 # Define OpenStack credentials, project config etc.
 locals {
-  auth_url        = "https://10.32.4.182:5000/v3"
+  auth_url        = "https://10.32.4.29:5000/v3"
   user_name       = "CloudComp32"
   user_password = "demo"
   tenant_name     = "CloudComp${var.group_number}"
   #network_name    = "CloudComp${var.group_number}-net"
   router_name     = "CloudComp${var.group_number}-router"
-  image_name      = "ubuntu-22.04-jammy-x86_64"
+  image_name      = "ubuntu-22.04-jammy-server-cloud-image-amd64"
   flavor_name     = "m1.small"
   region_name     = "RegionOne"
   floating_net    = "ext_net"
diff --git a/terraform/lab4-scale-out-lb/lab4.tf b/terraform/lab4-scale-out-lb/lab4.tf
index 2eae2ec..531bfec 100644
--- a/terraform/lab4-scale-out-lb/lab4.tf
+++ b/terraform/lab4-scale-out-lb/lab4.tf
@@ -12,13 +12,13 @@ variable "group_number" {
 
 # Define OpenStack credentials, project config etc.
 locals {
-  auth_url      = "https://10.32.4.182:5000/v3"
+  auth_url      = "https://10.32.4.29:5000/v3"
   user_name     = "CloudComp${var.group_number}"
   user_password = "<password of your group here, private-cloud is only reachable via vpn>"
   tenant_name   = "CloudComp${var.group_number}"
   #network_name  = "CloudComp${var.group_number}-net"
   router_name   = "CloudComp${var.group_number}-router"
-  image_name    = "ubuntu-22.04-jammy-x86_64"
+  image_name    = "ubuntu-22.04-jammy-server-cloud-image-amd64"
   flavor_name   = "m1.small"
   region_name   = "RegionOne"
   dns_nameservers = [ "10.33.16.100" ]
-- 
GitLab