From 3778d2a26c462c60b88bc914ad88f7fd489217e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= <72651575+BreizhHardware@users.noreply.github.com> Date: Tue, 20 Jan 2026 10:42:26 +0100 Subject: [PATCH] Obisidian vault auto-backup: 20-01-2026 10:42:26 on . 21 files edited --- .obsidian/workspace.json | 24 +-- .../CIPA4/TP Terraform/101/main.tf | 47 +++++ .../CIPA4/TP Terraform/101/terraform.tfstate | 1 + .../TP Terraform/101/terraform.tfstate.backup | 1 + .../CIPA4/TP Terraform/102/demo-flask.tf | 50 +++++ .../TP Terraform/102/install-demo-flask.sh | 11 ++ .../CIPA4/TP Terraform/102/provider.tf | 11 ++ .../CIPA4/TP Terraform/102/terraform.tfstate | 1 + .../TP Terraform/102/terraform.tfstate.backup | 1 + .../TP Terraform/103/install-demo-flask.sh | 11 ++ .../TP Terraform/103/install-nginx.sh.tpl | 18 ++ .../CIPA4/TP Terraform/103/main.tf | 129 ++++++++++++ .../CIPA4/TP Terraform/103/provider.tf | 11 ++ .../CIPA4/TP Terraform/103/terraform.tfstate | 1 + .../TP Terraform/103/terraform.tfstate.backup | 1 + .../TP Terraform/104/install-demo-flask.sh | 11 ++ .../TP Terraform/104/install-nginx.sh.tpl | 18 ++ .../CIPA4/TP Terraform/104/main.tf | 184 ++++++++++++++++++ .../CIPA4/TP Terraform/104/provider.tf | 12 ++ .../CIPA4/TP Terraform/104/terraform.tfstate | 1 + .../TP Terraform/104/terraform.tfstate.backup | 1 + 21 files changed, 533 insertions(+), 12 deletions(-) create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/101/main.tf create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/101/terraform.tfstate create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/101/terraform.tfstate.backup create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/102/demo-flask.tf create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/102/install-demo-flask.sh create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/102/provider.tf create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/102/terraform.tfstate create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/102/terraform.tfstate.backup create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/103/install-demo-flask.sh create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/103/install-nginx.sh.tpl create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/103/main.tf create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/103/provider.tf create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/103/terraform.tfstate create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/103/terraform.tfstate.backup create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/104/install-demo-flask.sh create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/104/install-nginx.sh.tpl create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/104/main.tf create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/104/provider.tf create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/104/terraform.tfstate create mode 100644 ISEN/Cloud Computing/CIPA4/TP Terraform/104/terraform.tfstate.backup diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 4e789c4..9ed169e 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -204,8 +204,19 @@ "obsidian-git:Open Git source control": false } }, - "active": "e11a6a080eb83632", + "active": "622da1d4e0ba0f73", "lastOpenFiles": [ + "ISEN/Cloud Computing/CIPA4/TP Terraform/104/install-demo-flask.sh", + "ISEN/Cloud Computing/CIPA4/TP Terraform/104/terraform.tfstate.backup", + "ISEN/Cloud Computing/CIPA4/TP Terraform/104/main.tf", + "ISEN/Cloud Computing/CIPA4/TP Terraform/104/install-nginx.sh.tpl", + "ISEN/Cloud Computing/CIPA4/TP Terraform/104/terraform.tfstate", + "ISEN/Cloud Computing/CIPA4/TP Terraform/104/provider.tf", + "ISEN/Cloud Computing/CIPA4/TP Terraform/103/install-demo-flask.sh", + "ISEN/Cloud Computing/CIPA4/TP Terraform/103/terraform.tfstate.backup", + "ISEN/Cloud Computing/CIPA4/TP Terraform/103/main.tf", + "ISEN/Cloud Computing/CIPA4/TP Terraform/103/install-nginx.sh.tpl", + "ISEN/Cloud Computing/CIPA4/TP Terraform/103/terraform.tfstate", "ISEN/Cloud Computing/CIPA4/Cloud Computing Cours 5.md", "ISEN/Cloud Computing/CIPA4/Cloud Computing Cours 2.md", "ISEN/Cloud Computing/CIPA4/Cloud Computing Cours 1.md", @@ -216,7 +227,6 @@ "ISEN/English/A2/23 févr 2024.md", "ISEN/English/A2/20 oct 2023.md", "ISEN/English/A2/2 févr 2024.md", - "ISEN/English/Untitled", "ISEN/Réunion/CIPA 4/Réunion international.md", "README.md", "Protocol Data Units (PDU).md", @@ -224,17 +234,8 @@ "Pasted image 20250610091125.png", "Pasted image 20240505210657.png", "Pasted image 20240505210642.png", - "ISEN/Introduction a la cyber et a la cryptographie/CIPA 4/Intro2Cyber - Sujet TP 2025-2026.pdf", - "ISEN/Introduction a la cyber et a la cryptographie/CIPA 4/~$tro2Cyber - Sujet TP 2025-2026.docx", - "ISEN/Introduction a la cyber et a la cryptographie/CIPA 4/Intro2Cyber - Sujet TP 2025-2026.docx", - "ISEN/Introduction a la cyber et a la cryptographie/CIPA 4/~$tro2Cyber - Sujet TP 2025-2026.pdf", "ISEN/Introduction a la cyber et a la cryptographie/CIPA 4/Cours 1.md", "ISEN/Introduction a la cyber et a la cryptographie/CIPA 4/Untitled.md", - "ISEN/Introduction a la cyber et a la cryptographie/CIPA 4", - "ISEN/Introduction a la cyber et a la cryptographie", - "ISEN/Web/CIPA 4/TP/TP3/TP3_MARQUET.zip", - "ISEN/Web/CIPA 4/TP/TP3/Archive.zip", - "ISEN/Web/CIPA 4/TP/TP1/authentification.html~", "ISEN/Cloud Computing/CIPA4/TP 1 Ansible.md", "ISEN/Web/CIPA 4/Idée projet.md", "ISEN/Cloud Computing/CIPA4/TP 4 Ansible.md", @@ -246,7 +247,6 @@ "ISEN/Réunion/CIPA 4/Untitled.md", "ISEN/English/CIPA4/24 oct 2025.md", "ISEN/Réseau/CIPA4/TP/TP M02 Conversion.md", - "ISEN/English/CIPA4/Elevator pitch.md", "src/Pasted image 20240130111505.png", "src/Pasted image 20240123120819.png", "src/Pasted image 20240123120807.png", diff --git a/ISEN/Cloud Computing/CIPA4/TP Terraform/101/main.tf b/ISEN/Cloud Computing/CIPA4/TP Terraform/101/main.tf new file mode 100644 index 0000000..313726e --- /dev/null +++ b/ISEN/Cloud Computing/CIPA4/TP Terraform/101/main.tf @@ -0,0 +1,47 @@ +terraform { + required_providers { + openstack = { + source = "terraform-provider-openstack/openstack" + version = "1.46.0" + } + } +} + +provider "openstack" { +} + + +resource "openstack_compute_instance_v2" "server1" { + name = "server1" + image_name = "Debian 13" + flavor_name = "small" + key_pair = "isen" + network { + name = "public" + } + security_groups = ["allow_ssh_and_ping"] +} + +resource "openstack_networking_secgroup_v2" "allow_ssh_and_ping" { + name = "allow_ssh_and_ping" + description = "Security group to allow SSH and ping" +} + +resource "openstack_networking_secgroup_rule_v2" "allow_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.allow_ssh_and_ping.id +} + +resource "openstack_networking_secgroup_rule_v2" "allow_ping" { + direction = "ingress" + ethertype = "IPv4" + protocol = "icmp" + remote_ip_prefix = "0.0.0.0/0" + security_group_id = openstack_networking_secgroup_v2.allow_ssh_and_ping.id +} + diff --git a/ISEN/Cloud Computing/CIPA4/TP Terraform/101/terraform.tfstate b/ISEN/Cloud Computing/CIPA4/TP Terraform/101/terraform.tfstate new file mode 100644 index 0000000..13c1015 --- /dev/null +++ b/ISEN/Cloud Computing/CIPA4/TP Terraform/101/terraform.tfstate @@ -0,0 +1 @@ +{"version":4,"terraform_version":"1.11.3","serial":6,"lineage":"8bed9d06-a2b8-c601-2f35-29ce8d2d52f0","outputs":{},"resources":[{"mode":"managed","type":"openstack_compute_instance_v2","name":"server1","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"access_ip_v4":"51.91.90.66","access_ip_v6":"","admin_pass":null,"all_metadata":{},"all_tags":[],"availability_zone":"nova","availability_zone_hints":null,"block_device":[],"config_drive":null,"flavor_id":"f847fe12-45f5-46ed-bbb6-0610e595298b","flavor_name":"small","floating_ip":null,"force_delete":false,"id":"1b7abc44-eaa9-4804-90ab-902a238c23f5","image_id":"c8f79c22-0e21-42ce-9797-ceb683b335a2","image_name":"Debian 13","key_pair":"isen","metadata":null,"name":"server1","network":[{"access_network":false,"fixed_ip_v4":"51.91.90.66","fixed_ip_v6":"","floating_ip":"","mac":"fa:16:3e:a7:42:9f","name":"public","port":"","uuid":"09d8416d-7442-4f96-8f87-4d47314feaf6"}],"network_mode":null,"personality":[],"power_state":"active","region":"","scheduler_hints":[],"security_groups":["allow_ssh_and_ping"],"stop_before_destroy":false,"tags":[],"timeouts":null,"user_data":null,"vendor_options":[],"volume":[]},"sensitive_attributes":[[{"type":"get_attr","value":"admin_pass"}]],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19"}]},{"mode":"managed","type":"openstack_networking_secgroup_rule_v2","name":"allow_ping","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"description":"","direction":"ingress","ethertype":"IPv4","id":"ffe7ff86-8bbe-4b1a-8dc0-0afcae8060cb","port_range_max":0,"port_range_min":0,"protocol":"icmp","region":"","remote_group_id":"","remote_ip_prefix":"0.0.0.0/0","security_group_id":"10b14eb0-1f77-43c0-9e03-f07be661d7de","tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==","dependencies":["openstack_networking_secgroup_v2.allow_ssh_and_ping"]}]},{"mode":"managed","type":"openstack_networking_secgroup_rule_v2","name":"allow_ssh","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"description":"","direction":"ingress","ethertype":"IPv4","id":"8b032a32-426f-4bc3-b97d-6014e5175840","port_range_max":22,"port_range_min":22,"protocol":"tcp","region":"","remote_group_id":"","remote_ip_prefix":"0.0.0.0/0","security_group_id":"10b14eb0-1f77-43c0-9e03-f07be661d7de","tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==","dependencies":["openstack_networking_secgroup_v2.allow_ssh_and_ping"]}]},{"mode":"managed","type":"openstack_networking_secgroup_v2","name":"allow_ssh_and_ping","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"all_tags":[],"delete_default_rules":null,"description":"Security group to allow SSH and ping","id":"10b14eb0-1f77-43c0-9e03-f07be661d7de","name":"allow_ssh_and_ping","region":"","tags":[],"tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ=="}]}],"check_results":null} diff --git a/ISEN/Cloud Computing/CIPA4/TP Terraform/101/terraform.tfstate.backup b/ISEN/Cloud Computing/CIPA4/TP Terraform/101/terraform.tfstate.backup new file mode 100644 index 0000000..1223811 --- /dev/null +++ b/ISEN/Cloud Computing/CIPA4/TP Terraform/101/terraform.tfstate.backup @@ -0,0 +1 @@ +{"version":4,"terraform_version":"1.11.3","serial":5,"lineage":"8bed9d06-a2b8-c601-2f35-29ce8d2d52f0","outputs":{},"resources":[{"mode":"managed","type":"openstack_compute_instance_v2","name":"server1","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"access_ip_v4":"51.91.90.66","access_ip_v6":"","admin_pass":null,"all_metadata":{},"all_tags":[],"availability_zone":"nova","availability_zone_hints":null,"block_device":[],"config_drive":null,"flavor_id":"f847fe12-45f5-46ed-bbb6-0610e595298b","flavor_name":"small","floating_ip":null,"force_delete":false,"id":"1b7abc44-eaa9-4804-90ab-902a238c23f5","image_id":"c8f79c22-0e21-42ce-9797-ceb683b335a2","image_name":"Debian 13","key_pair":"isen","metadata":null,"name":"server1","network":[{"access_network":false,"fixed_ip_v4":"51.91.90.66","fixed_ip_v6":"","floating_ip":"","mac":"fa:16:3e:a7:42:9f","name":"public","port":"","uuid":"09d8416d-7442-4f96-8f87-4d47314feaf6"}],"network_mode":null,"personality":[],"power_state":"active","region":"","scheduler_hints":[],"security_groups":["allow_ssh_and_ping"],"stop_before_destroy":false,"tags":[],"timeouts":null,"user_data":null,"vendor_options":[],"volume":[]},"sensitive_attributes":[[{"type":"get_attr","value":"admin_pass"}]],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19"}]},{"mode":"managed","type":"openstack_networking_secgroup_rule_v2","name":"allow_ping","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"description":"","direction":"ingress","ethertype":"IPv4","id":"ffe7ff86-8bbe-4b1a-8dc0-0afcae8060cb","port_range_max":0,"port_range_min":0,"protocol":"icmp","region":"","remote_group_id":"","remote_ip_prefix":"0.0.0.0/0","security_group_id":"10b14eb0-1f77-43c0-9e03-f07be661d7de","tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==","dependencies":["openstack_networking_secgroup_v2.allow_ssh_and_ping"]}]},{"mode":"managed","type":"openstack_networking_secgroup_rule_v2","name":"allow_ssh","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"description":"","direction":"ingress","ethertype":"IPv4","id":"8b032a32-426f-4bc3-b97d-6014e5175840","port_range_max":22,"port_range_min":22,"protocol":"tcp","region":"","remote_group_id":"","remote_ip_prefix":"0.0.0.0/0","security_group_id":"10b14eb0-1f77-43c0-9e03-f07be661d7de","tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==","dependencies":["openstack_networking_secgroup_v2.allow_ssh_and_ping"]}]},{"mode":"managed","type":"openstack_networking_secgroup_v2","name":"allow_ssh_and_ping","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"all_tags":[],"delete_default_rules":null,"description":"Security group to allow SSH and ping","id":"10b14eb0-1f77-43c0-9e03-f07be661d7de","name":"allow_ssh_and_ping","region":"","tags":null,"tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ=="}]}],"check_results":null} diff --git a/ISEN/Cloud Computing/CIPA4/TP Terraform/102/demo-flask.tf b/ISEN/Cloud Computing/CIPA4/TP Terraform/102/demo-flask.tf new file mode 100644 index 0000000..ac21791 --- /dev/null +++ b/ISEN/Cloud Computing/CIPA4/TP Terraform/102/demo-flask.tf @@ -0,0 +1,50 @@ +resource "openstack_compute_instance_v2" "demo-flask" { + name = "demo-flask" + image_name = "Debian 13" + flavor_name = "small" + key_pair = "isen" + network { + name = "public" + } + security_groups = [openstack_networking_secgroup_v2.allow_ssh_and_ping.id] + user_data = file("install-demo-flask.sh") +} + +resource "openstack_networking_secgroup_v2" "allow_ssh_and_ping" { + name = "allow_ssh_and_ping" + description = "Security group to allow SSH and ping" + + +} + +resource "openstack_networking_secgroup_rule_v2" "allow_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.allow_ssh_and_ping.id +} + +resource "openstack_networking_secgroup_rule_v2" "allow_ping" { + direction = "ingress" + ethertype = "IPv4" + protocol = "icmp" + remote_ip_prefix = "0.0.0.0/0" + security_group_id = openstack_networking_secgroup_v2.allow_ssh_and_ping.id +} + +resource "openstack_networking_secgroup_rule_v2" "allow_flask_8080" { + direction = "ingress" + ethertype = "IPv4" + protocol = "tcp" + port_range_min = 8080 + port_range_max = 8080 + remote_ip_prefix = "0.0.0.0/0" + security_group_id = openstack_networking_secgroup_v2.allow_ssh_and_ping.id +} + +output "demo-flask-url" { + value = "${format("http://%s", openstack_compute_instance_v2.demo-flask.access_ip_v4)}:8080" +} \ No newline at end of file diff --git a/ISEN/Cloud Computing/CIPA4/TP Terraform/102/install-demo-flask.sh b/ISEN/Cloud Computing/CIPA4/TP Terraform/102/install-demo-flask.sh new file mode 100644 index 0000000..73cd427 --- /dev/null +++ b/ISEN/Cloud Computing/CIPA4/TP Terraform/102/install-demo-flask.sh @@ -0,0 +1,11 @@ +#!/bin/bash +apt-get update +apt-get -y install python3-pip git python3-venv +git clone https://github.com/arnaudmorin/demo-flask /opt/demo-flask +python3 -m venv /opt/demo-flask-venv +/opt/demo-flask-venv/bin/pip install -r /opt/demo-flask/requirements.txt +sed -i -r 's|^python3|/opt/demo-flask-venv/bin/python|' /opt/demo-flask/start.sh +cp /opt/demo-flask/demo-flask.service /etc/systemd/system/ +systemctl enable demo-flask.service +systemctl daemon-reload +systemctl start demo-flask.service \ No newline at end of file diff --git a/ISEN/Cloud Computing/CIPA4/TP Terraform/102/provider.tf b/ISEN/Cloud Computing/CIPA4/TP Terraform/102/provider.tf new file mode 100644 index 0000000..a7d8d99 --- /dev/null +++ b/ISEN/Cloud Computing/CIPA4/TP Terraform/102/provider.tf @@ -0,0 +1,11 @@ +terraform { + required_providers { + openstack = { + source = "terraform-provider-openstack/openstack" + version = "1.46.0" + } + } +} + +provider "openstack" { +} diff --git a/ISEN/Cloud Computing/CIPA4/TP Terraform/102/terraform.tfstate b/ISEN/Cloud Computing/CIPA4/TP Terraform/102/terraform.tfstate new file mode 100644 index 0000000..adcb7f3 --- /dev/null +++ b/ISEN/Cloud Computing/CIPA4/TP Terraform/102/terraform.tfstate @@ -0,0 +1 @@ +{"version":4,"terraform_version":"1.11.3","serial":17,"lineage":"2168cc63-698b-628c-35ac-857b12ae879c","outputs":{},"resources":[],"check_results":null} diff --git a/ISEN/Cloud Computing/CIPA4/TP Terraform/102/terraform.tfstate.backup b/ISEN/Cloud Computing/CIPA4/TP Terraform/102/terraform.tfstate.backup new file mode 100644 index 0000000..2b0ac99 --- /dev/null +++ b/ISEN/Cloud Computing/CIPA4/TP Terraform/102/terraform.tfstate.backup @@ -0,0 +1 @@ +{"version":4,"terraform_version":"1.11.3","serial":16,"lineage":"2168cc63-698b-628c-35ac-857b12ae879c","outputs":{"demo-flask-url":{"value":"http://51.91.90.92:8080","type":"string"}},"resources":[{"mode":"managed","type":"openstack_compute_instance_v2","name":"demo-flask","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"access_ip_v4":"51.91.90.92","access_ip_v6":"","admin_pass":null,"all_metadata":{},"all_tags":[],"availability_zone":"nova","availability_zone_hints":null,"block_device":[],"config_drive":null,"flavor_id":"f847fe12-45f5-46ed-bbb6-0610e595298b","flavor_name":"small","floating_ip":null,"force_delete":false,"id":"29830a3b-060a-4216-8f27-48ec3ecb6b6f","image_id":"c8f79c22-0e21-42ce-9797-ceb683b335a2","image_name":"Debian 13","key_pair":"isen","metadata":null,"name":"demo-flask","network":[{"access_network":false,"fixed_ip_v4":"51.91.90.92","fixed_ip_v6":"","floating_ip":"","mac":"fa:16:3e:94:ba:2f","name":"public","port":"","uuid":"09d8416d-7442-4f96-8f87-4d47314feaf6"}],"network_mode":null,"personality":[],"power_state":"active","region":"","scheduler_hints":[],"security_groups":["d38a5d46-450d-4607-b3cc-0c6d6561f68b"],"stop_before_destroy":false,"tags":null,"timeouts":null,"user_data":"25fd7277a5bc61bd8cad2afd025d2e1d356631db","vendor_options":[],"volume":[]},"sensitive_attributes":[[{"type":"get_attr","value":"admin_pass"}]],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19","dependencies":["openstack_networking_secgroup_v2.allow_ssh_and_ping"]}]},{"mode":"managed","type":"openstack_networking_secgroup_rule_v2","name":"allow_flask_8080","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"description":"","direction":"ingress","ethertype":"IPv4","id":"b510a1ee-61e6-485f-b988-dc006de5fbfe","port_range_max":8080,"port_range_min":8080,"protocol":"tcp","region":"","remote_group_id":"","remote_ip_prefix":"0.0.0.0/0","security_group_id":"d38a5d46-450d-4607-b3cc-0c6d6561f68b","tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==","dependencies":["openstack_networking_secgroup_v2.allow_ssh_and_ping"]}]},{"mode":"managed","type":"openstack_networking_secgroup_rule_v2","name":"allow_ping","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"description":"","direction":"ingress","ethertype":"IPv4","id":"178ccc44-1df4-4ea0-8c97-5e6fff89126f","port_range_max":0,"port_range_min":0,"protocol":"icmp","region":"","remote_group_id":"","remote_ip_prefix":"0.0.0.0/0","security_group_id":"d38a5d46-450d-4607-b3cc-0c6d6561f68b","tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==","dependencies":["openstack_networking_secgroup_v2.allow_ssh_and_ping"]}]},{"mode":"managed","type":"openstack_networking_secgroup_rule_v2","name":"allow_ssh","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"description":"","direction":"ingress","ethertype":"IPv4","id":"ca9763d2-d1a2-4921-b950-ca29f66b00c6","port_range_max":22,"port_range_min":22,"protocol":"tcp","region":"","remote_group_id":"","remote_ip_prefix":"0.0.0.0/0","security_group_id":"d38a5d46-450d-4607-b3cc-0c6d6561f68b","tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==","dependencies":["openstack_networking_secgroup_v2.allow_ssh_and_ping"]}]},{"mode":"managed","type":"openstack_networking_secgroup_v2","name":"allow_ssh_and_ping","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"all_tags":[],"delete_default_rules":null,"description":"Security group to allow SSH and ping","id":"d38a5d46-450d-4607-b3cc-0c6d6561f68b","name":"allow_ssh_and_ping","region":"","tags":null,"tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ=="}]}],"check_results":null} diff --git a/ISEN/Cloud Computing/CIPA4/TP Terraform/103/install-demo-flask.sh b/ISEN/Cloud Computing/CIPA4/TP Terraform/103/install-demo-flask.sh new file mode 100644 index 0000000..73cd427 --- /dev/null +++ b/ISEN/Cloud Computing/CIPA4/TP Terraform/103/install-demo-flask.sh @@ -0,0 +1,11 @@ +#!/bin/bash +apt-get update +apt-get -y install python3-pip git python3-venv +git clone https://github.com/arnaudmorin/demo-flask /opt/demo-flask +python3 -m venv /opt/demo-flask-venv +/opt/demo-flask-venv/bin/pip install -r /opt/demo-flask/requirements.txt +sed -i -r 's|^python3|/opt/demo-flask-venv/bin/python|' /opt/demo-flask/start.sh +cp /opt/demo-flask/demo-flask.service /etc/systemd/system/ +systemctl enable demo-flask.service +systemctl daemon-reload +systemctl start demo-flask.service \ No newline at end of file diff --git a/ISEN/Cloud Computing/CIPA4/TP Terraform/103/install-nginx.sh.tpl b/ISEN/Cloud Computing/CIPA4/TP Terraform/103/install-nginx.sh.tpl new file mode 100644 index 0000000..0353e86 --- /dev/null +++ b/ISEN/Cloud Computing/CIPA4/TP Terraform/103/install-nginx.sh.tpl @@ -0,0 +1,18 @@ +#!/bin/bash +apt-get update +apt-get install -y nginx python3-certbot-nginx certbot +cat < /etc/nginx/sites-enabled/default +server { + listen 80; + server_name ${frontend}.xip.opensteak.fr; + listen [::]:80; + access_log /var/log/nginx/reverse-access.log; + error_log /var/log/nginx/reverse-error.log; + location / { proxy_pass http://${backend}:8080; } +} +EOF + +systemctl restart nginx + +# certbot +certbot run --agree-tos --register-unsafely-without-email --non-interactive --nginx --redirect --domain ${frontend}.xip.opensteak.fr \ No newline at end of file diff --git a/ISEN/Cloud Computing/CIPA4/TP Terraform/103/main.tf b/ISEN/Cloud Computing/CIPA4/TP Terraform/103/main.tf new file mode 100644 index 0000000..a38bde9 --- /dev/null +++ b/ISEN/Cloud Computing/CIPA4/TP Terraform/103/main.tf @@ -0,0 +1,129 @@ +data "openstack_networking_network_v2" "public" { + name = "public" +} + +resource "openstack_networking_network_v2" "private" { + name = "private" + admin_state_up = true +} + +resource "openstack_networking_subnet_v2" "private_subnet" { + name = "private_subnet" + network_id = openstack_networking_network_v2.private.id + cidr = "192.168.1.0/24" + ip_version = 4 +} + +resource "openstack_networking_router_v2" "router" { + name = "router" + admin_state_up = true + external_network_id = data.openstack_networking_network_v2.public.id +} + +resource "openstack_networking_router_interface_v2" "router_interface" { + router_id = openstack_networking_router_v2.router.id + subnet_id = openstack_networking_subnet_v2.private_subnet.id +} + +resource "openstack_compute_instance_v2" "demo-flask" { + name = "demo-flask" + image_name = "Debian 13" + flavor_name = "small" + key_pair = "isen" + network { + name = openstack_networking_network_v2.private.name + } + security_groups = [openstack_networking_secgroup_v2.allow_ssh_and_ping.id] + user_data = file("install-demo-flask.sh") +} + +resource "openstack_compute_instance_v2" "nginx-frontend" { + name = "nginx-frontend" + image_name = "Debian 13" + flavor_name = "small" + key_pair = "isen" + network { + name = openstack_networking_network_v2.private.name + } + security_groups = [openstack_networking_secgroup_v2.allow_web.id] + user_data = templatefile("${path.module}/install-nginx.sh.tpl", { + frontend = "nginx-frontend" + backend = openstack_compute_instance_v2.demo-flask.access_ip_v4 + }) + depends_on = [openstack_compute_instance_v2.demo-flask] +} + +resource "openstack_networking_secgroup_v2" "allow_ssh_and_ping" { + name = "allow_ssh_and_ping" + description = "Security group to allow SSH and ping" +} + +resource "openstack_networking_secgroup_rule_v2" "allow_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.allow_ssh_and_ping.id +} + +resource "openstack_networking_secgroup_rule_v2" "allow_ping" { + direction = "ingress" + ethertype = "IPv4" + protocol = "icmp" + remote_ip_prefix = "0.0.0.0/0" + security_group_id = openstack_networking_secgroup_v2.allow_ssh_and_ping.id +} + +resource "openstack_networking_secgroup_rule_v2" "allow_flask_8080" { + direction = "ingress" + ethertype = "IPv4" + protocol = "tcp" + port_range_min = 8080 + port_range_max = 8080 + remote_ip_prefix = "0.0.0.0/0" + security_group_id = openstack_networking_secgroup_v2.allow_ssh_and_ping.id +} + +resource "openstack_networking_secgroup_v2" "allow_web" { + name = "allow_web" + description = "Security group to allow HTTP and HTTPS" +} + +resource "openstack_networking_secgroup_rule_v2" "allow_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.allow_web.id +} + +resource "openstack_networking_secgroup_rule_v2" "allow_https" { + 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.allow_web.id +} + +resource "openstack_networking_floatingip_v2" "frontend_fip" { + pool = "public" +} + +resource "openstack_compute_floatingip_associate_v2" "frontend_fip_assoc" { + floating_ip = openstack_networking_floatingip_v2.frontend_fip.address + instance_id = openstack_compute_instance_v2.nginx-frontend.id +} + +output "demo-flask-url" { + value = "${format("http://%s", openstack_compute_instance_v2.demo-flask.access_ip_v4)}:8080" +} + +output "nginx-url" { + value = "https://${openstack_networking_floatingip_v2.frontend_fip.address}.xip.opensteak.fr" +} \ No newline at end of file diff --git a/ISEN/Cloud Computing/CIPA4/TP Terraform/103/provider.tf b/ISEN/Cloud Computing/CIPA4/TP Terraform/103/provider.tf new file mode 100644 index 0000000..12aa84f --- /dev/null +++ b/ISEN/Cloud Computing/CIPA4/TP Terraform/103/provider.tf @@ -0,0 +1,11 @@ +terraform { + required_providers { + openstack = { + source = "terraform-provider-openstack/openstack" + version = "1.46.0" + } + } +} + +provider "openstack" { +} \ No newline at end of file diff --git a/ISEN/Cloud Computing/CIPA4/TP Terraform/103/terraform.tfstate b/ISEN/Cloud Computing/CIPA4/TP Terraform/103/terraform.tfstate new file mode 100644 index 0000000..21fd9d2 --- /dev/null +++ b/ISEN/Cloud Computing/CIPA4/TP Terraform/103/terraform.tfstate @@ -0,0 +1 @@ +{"version":4,"terraform_version":"1.11.3","serial":10,"lineage":"8a36cce1-b773-066c-ffec-b231f04cc7f7","outputs":{"demo-flask-url":{"value":"http://192.168.1.246:8080","type":"string"},"nginx-url":{"value":"https://51.91.90.74.xip.opensteak.fr","type":"string"}},"resources":[{"mode":"data","type":"openstack_networking_network_v2","name":"public","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"admin_state_up":"true","all_tags":[],"availability_zone_hints":[],"description":"","dns_domain":"","external":true,"id":"09d8416d-7442-4f96-8f87-4d47314feaf6","matching_subnet_cidr":null,"mtu":1500,"name":"public","network_id":null,"region":"","shared":"true","status":null,"subnets":["c13b40c7-46bf-4fde-9922-aacff44b1c81","d078cb7a-c710-494b-a8df-aec2af717701"],"tags":null,"tenant_id":"786fe7788212420bb15b304960771ed4","transparent_vlan":false},"sensitive_attributes":[]}]},{"mode":"managed","type":"openstack_compute_floatingip_associate_v2","name":"frontend_fip_assoc","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"fixed_ip":"","floating_ip":"51.91.90.74","id":"51.91.90.74/2c8a5529-b8a7-4841-be3a-85d867b8b462/","instance_id":"2c8a5529-b8a7-4841-be3a-85d867b8b462","region":"","timeouts":null,"wait_until_associated":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDB9fQ==","dependencies":["openstack_compute_instance_v2.demo-flask","openstack_compute_instance_v2.nginx-frontend","openstack_networking_floatingip_v2.frontend_fip","openstack_networking_network_v2.private","openstack_networking_secgroup_v2.allow_ssh_and_ping","openstack_networking_secgroup_v2.allow_web"]}]},{"mode":"managed","type":"openstack_compute_instance_v2","name":"demo-flask","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"access_ip_v4":"192.168.1.246","access_ip_v6":"","admin_pass":null,"all_metadata":{},"all_tags":[],"availability_zone":"nova","availability_zone_hints":null,"block_device":[],"config_drive":null,"flavor_id":"f847fe12-45f5-46ed-bbb6-0610e595298b","flavor_name":"small","floating_ip":null,"force_delete":false,"id":"fca808b2-3957-4247-8b99-d76f888552a7","image_id":"c8f79c22-0e21-42ce-9797-ceb683b335a2","image_name":"Debian 13","key_pair":"isen","metadata":null,"name":"demo-flask","network":[{"access_network":false,"fixed_ip_v4":"192.168.1.246","fixed_ip_v6":"","floating_ip":"","mac":"fa:16:3e:8e:06:c5","name":"private","port":"","uuid":"8b880d66-6d58-45cf-bb16-23064738dea2"}],"network_mode":null,"personality":[],"power_state":"active","region":"","scheduler_hints":[],"security_groups":["be9f38da-0880-49e9-a1f6-2ff71b659a34"],"stop_before_destroy":false,"tags":null,"timeouts":null,"user_data":"25fd7277a5bc61bd8cad2afd025d2e1d356631db","vendor_options":[],"volume":[]},"sensitive_attributes":[[{"type":"get_attr","value":"admin_pass"}]],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19","dependencies":["openstack_networking_network_v2.private","openstack_networking_secgroup_v2.allow_ssh_and_ping"]}]},{"mode":"managed","type":"openstack_compute_instance_v2","name":"nginx-frontend","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"access_ip_v4":"192.168.1.50","access_ip_v6":"","admin_pass":null,"all_metadata":{},"all_tags":[],"availability_zone":"nova","availability_zone_hints":null,"block_device":[],"config_drive":null,"flavor_id":"f847fe12-45f5-46ed-bbb6-0610e595298b","flavor_name":"small","floating_ip":null,"force_delete":false,"id":"2c8a5529-b8a7-4841-be3a-85d867b8b462","image_id":"c8f79c22-0e21-42ce-9797-ceb683b335a2","image_name":"Debian 13","key_pair":"isen","metadata":null,"name":"nginx-frontend","network":[{"access_network":false,"fixed_ip_v4":"192.168.1.50","fixed_ip_v6":"","floating_ip":"","mac":"fa:16:3e:da:1e:86","name":"private","port":"","uuid":"8b880d66-6d58-45cf-bb16-23064738dea2"}],"network_mode":null,"personality":[],"power_state":"active","region":"","scheduler_hints":[],"security_groups":["6b27a476-e067-4feb-9eb3-5a3bd96d4c6b"],"stop_before_destroy":false,"tags":null,"timeouts":null,"user_data":"4bc85ee54984cfce25c628675062216b201ceb37","vendor_options":[],"volume":[]},"sensitive_attributes":[[{"type":"get_attr","value":"admin_pass"}]],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxODAwMDAwMDAwMDAwLCJkZWxldGUiOjE4MDAwMDAwMDAwMDAsInVwZGF0ZSI6MTgwMDAwMDAwMDAwMH19","dependencies":["openstack_compute_instance_v2.demo-flask","openstack_networking_network_v2.private","openstack_networking_secgroup_v2.allow_ssh_and_ping","openstack_networking_secgroup_v2.allow_web"]}]},{"mode":"managed","type":"openstack_networking_floatingip_v2","name":"frontend_fip","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"address":"51.91.90.74","all_tags":[],"description":"","dns_domain":"","dns_name":"","fixed_ip":"","id":"6e28cd93-5630-4ea2-ae8d-2150360e13f9","pool":"public","port_id":"","region":"","subnet_id":null,"subnet_ids":null,"tags":null,"tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null,"value_specs":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwfX0="}]},{"mode":"managed","type":"openstack_networking_network_v2","name":"private","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"admin_state_up":true,"all_tags":[],"availability_zone_hints":[],"description":"","dns_domain":"","external":false,"id":"8b880d66-6d58-45cf-bb16-23064738dea2","mtu":1450,"name":"private","port_security_enabled":true,"qos_policy_id":"","region":"","segments":[],"shared":false,"tags":null,"tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null,"transparent_vlan":false,"value_specs":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwfX0="}]},{"mode":"managed","type":"openstack_networking_router_interface_v2","name":"router_interface","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"id":"31d361b7-fb1c-436e-b3fd-d58cb3a3dc47","port_id":"31d361b7-fb1c-436e-b3fd-d58cb3a3dc47","region":"","router_id":"2657a668-89fb-4cf9-9e29-ff05ba6c23b4","subnet_id":"2bdf4ddb-d8fc-456e-97e3-f539f7b3181a","timeouts":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwfX0=","dependencies":["data.openstack_networking_network_v2.public","openstack_networking_network_v2.private","openstack_networking_router_v2.router","openstack_networking_subnet_v2.private_subnet"]}]},{"mode":"managed","type":"openstack_networking_router_v2","name":"router","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"admin_state_up":true,"all_tags":[],"availability_zone_hints":[],"description":"","distributed":false,"enable_snat":true,"external_fixed_ip":[{"ip_address":"51.91.90.78","subnet_id":"d078cb7a-c710-494b-a8df-aec2af717701"}],"external_gateway":"09d8416d-7442-4f96-8f87-4d47314feaf6","external_network_id":"09d8416d-7442-4f96-8f87-4d47314feaf6","external_subnet_ids":null,"id":"2657a668-89fb-4cf9-9e29-ff05ba6c23b4","name":"router","region":"","tags":null,"tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null,"value_specs":null,"vendor_options":[]},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwfX0=","dependencies":["data.openstack_networking_network_v2.public"]}]},{"mode":"managed","type":"openstack_networking_secgroup_rule_v2","name":"allow_flask_8080","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"description":"","direction":"ingress","ethertype":"IPv4","id":"db652e93-6d0b-4d75-9710-0473edfbf39b","port_range_max":8080,"port_range_min":8080,"protocol":"tcp","region":"","remote_group_id":"","remote_ip_prefix":"0.0.0.0/0","security_group_id":"be9f38da-0880-49e9-a1f6-2ff71b659a34","tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==","dependencies":["openstack_networking_secgroup_v2.allow_ssh_and_ping"]}]},{"mode":"managed","type":"openstack_networking_secgroup_rule_v2","name":"allow_http","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"description":"","direction":"ingress","ethertype":"IPv4","id":"6055826c-1606-4d66-9ae6-8decf984c40d","port_range_max":80,"port_range_min":80,"protocol":"tcp","region":"","remote_group_id":"","remote_ip_prefix":"0.0.0.0/0","security_group_id":"6b27a476-e067-4feb-9eb3-5a3bd96d4c6b","tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==","dependencies":["openstack_networking_secgroup_v2.allow_web"]}]},{"mode":"managed","type":"openstack_networking_secgroup_rule_v2","name":"allow_https","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"description":"","direction":"ingress","ethertype":"IPv4","id":"43d15616-2647-4c34-8782-d5c45f634554","port_range_max":443,"port_range_min":443,"protocol":"tcp","region":"","remote_group_id":"","remote_ip_prefix":"0.0.0.0/0","security_group_id":"6b27a476-e067-4feb-9eb3-5a3bd96d4c6b","tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==","dependencies":["openstack_networking_secgroup_v2.allow_web"]}]},{"mode":"managed","type":"openstack_networking_secgroup_rule_v2","name":"allow_ping","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"description":"","direction":"ingress","ethertype":"IPv4","id":"d2f795b1-4a1b-4241-b5e3-16b70fdd4b06","port_range_max":0,"port_range_min":0,"protocol":"icmp","region":"","remote_group_id":"","remote_ip_prefix":"0.0.0.0/0","security_group_id":"be9f38da-0880-49e9-a1f6-2ff71b659a34","tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==","dependencies":["openstack_networking_secgroup_v2.allow_ssh_and_ping"]}]},{"mode":"managed","type":"openstack_networking_secgroup_rule_v2","name":"allow_ssh","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"description":"","direction":"ingress","ethertype":"IPv4","id":"e89d89b9-207e-421f-a818-a1cca4b50a90","port_range_max":22,"port_range_min":22,"protocol":"tcp","region":"","remote_group_id":"","remote_ip_prefix":"0.0.0.0/0","security_group_id":"be9f38da-0880-49e9-a1f6-2ff71b659a34","tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ==","dependencies":["openstack_networking_secgroup_v2.allow_ssh_and_ping"]}]},{"mode":"managed","type":"openstack_networking_secgroup_v2","name":"allow_ssh_and_ping","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"all_tags":[],"delete_default_rules":null,"description":"Security group to allow SSH and ping","id":"be9f38da-0880-49e9-a1f6-2ff71b659a34","name":"allow_ssh_and_ping","region":"","tags":null,"tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ=="}]},{"mode":"managed","type":"openstack_networking_secgroup_v2","name":"allow_web","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"all_tags":[],"delete_default_rules":null,"description":"Security group to allow HTTP and HTTPS","id":"6b27a476-e067-4feb-9eb3-5a3bd96d4c6b","name":"allow_web","region":"","tags":null,"tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjo2MDAwMDAwMDAwMDB9fQ=="}]},{"mode":"managed","type":"openstack_networking_subnet_v2","name":"private_subnet","provider":"provider[\"registry.opentofu.org/terraform-provider-openstack/openstack\"]","instances":[{"schema_version":0,"attributes":{"all_tags":[],"allocation_pool":[{"end":"192.168.1.254","start":"192.168.1.2"}],"allocation_pools":[{"end":"192.168.1.254","start":"192.168.1.2"}],"cidr":"192.168.1.0/24","description":"","dns_nameservers":null,"enable_dhcp":true,"gateway_ip":"192.168.1.1","host_routes":[],"id":"2bdf4ddb-d8fc-456e-97e3-f539f7b3181a","ip_version":4,"ipv6_address_mode":"","ipv6_ra_mode":"","name":"private_subnet","network_id":"8b880d66-6d58-45cf-bb16-23064738dea2","no_gateway":false,"prefix_length":null,"region":"","subnetpool_id":"","tags":null,"tenant_id":"bc0daf877c1b4147ac5fcaa7419b0a5f","timeouts":null,"value_specs":null},"sensitive_attributes":[],"private":"eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwfX0=","dependencies":["openstack_networking_network_v2.private"]}]}],"check_results":null} diff --git a/ISEN/Cloud Computing/CIPA4/TP Terraform/103/terraform.tfstate.backup b/ISEN/Cloud Computing/CIPA4/TP Terraform/103/terraform.tfstate.backup new file mode 100644 index 0000000..73caea7 --- /dev/null +++ b/ISEN/Cloud Computing/CIPA4/TP Terraform/103/terraform.tfstate.backup @@ -0,0 +1 @@ +{"version":4,"terraform_version":"1.11.3","serial":8,"lineage":"8a36cce1-b773-066c-ffec-b231f04cc7f7","outputs":{},"resources":[],"check_results":null} diff --git a/ISEN/Cloud Computing/CIPA4/TP Terraform/104/install-demo-flask.sh b/ISEN/Cloud Computing/CIPA4/TP Terraform/104/install-demo-flask.sh new file mode 100644 index 0000000..73cd427 --- /dev/null +++ b/ISEN/Cloud Computing/CIPA4/TP Terraform/104/install-demo-flask.sh @@ -0,0 +1,11 @@ +#!/bin/bash +apt-get update +apt-get -y install python3-pip git python3-venv +git clone https://github.com/arnaudmorin/demo-flask /opt/demo-flask +python3 -m venv /opt/demo-flask-venv +/opt/demo-flask-venv/bin/pip install -r /opt/demo-flask/requirements.txt +sed -i -r 's|^python3|/opt/demo-flask-venv/bin/python|' /opt/demo-flask/start.sh +cp /opt/demo-flask/demo-flask.service /etc/systemd/system/ +systemctl enable demo-flask.service +systemctl daemon-reload +systemctl start demo-flask.service \ No newline at end of file diff --git a/ISEN/Cloud Computing/CIPA4/TP Terraform/104/install-nginx.sh.tpl b/ISEN/Cloud Computing/CIPA4/TP Terraform/104/install-nginx.sh.tpl new file mode 100644 index 0000000..0353e86 --- /dev/null +++ b/ISEN/Cloud Computing/CIPA4/TP Terraform/104/install-nginx.sh.tpl @@ -0,0 +1,18 @@ +#!/bin/bash +apt-get update +apt-get install -y nginx python3-certbot-nginx certbot +cat < /etc/nginx/sites-enabled/default +server { + listen 80; + server_name ${frontend}.xip.opensteak.fr; + listen [::]:80; + access_log /var/log/nginx/reverse-access.log; + error_log /var/log/nginx/reverse-error.log; + location / { proxy_pass http://${backend}:8080; } +} +EOF + +systemctl restart nginx + +# certbot +certbot run --agree-tos --register-unsafely-without-email --non-interactive --nginx --redirect --domain ${frontend}.xip.opensteak.fr \ No newline at end of file diff --git a/ISEN/Cloud Computing/CIPA4/TP Terraform/104/main.tf b/ISEN/Cloud Computing/CIPA4/TP Terraform/104/main.tf new file mode 100644 index 0000000..8dae7d7 --- /dev/null +++ b/ISEN/Cloud Computing/CIPA4/TP Terraform/104/main.tf @@ -0,0 +1,184 @@ +resource "kubernetes_config_map" "nginx-config" { + metadata { + name = "nginx-config" + } + + data = { + "nginx.conf" = <