diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1377554 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.swp diff --git a/terraform/training/102.md b/terraform/training/102.md index 4d83846..a57430e 100644 --- a/terraform/training/102.md +++ b/terraform/training/102.md @@ -53,6 +53,17 @@ Ajouter une resource output pour afficher l'url de votre serveur demo-flask: ```bash # Adaptez demo-flask avec le nom de votre serveur output "demo-flask-url" { - value = "${format("http://%s", openstack_compute_instance_v2.demo-flask.address)}" + value = "${format("http://%s", openstack_compute_instance_v2.demo-flask.address)}:8080" } ``` + +## Ajout d'une resource security group +Vous avez essayer d'ouvrir l'url ? Cela fonctionne-t-il ? + +Il vous manque sans doute quelques resources pour gerer les security groups rules: +``` +openstack_networking_secgroup_v2 +openstack_networking_secgroup_rule_v2 +``` + +N'oubliez pas que `demo-flask` ecoute par defaut sur le port 8080 ! diff --git a/terraform/training/103.md b/terraform/training/103.md new file mode 100644 index 0000000..c4b70f9 --- /dev/null +++ b/terraform/training/103.md @@ -0,0 +1,57 @@ +# Terraform 103 + +## Objectif + +Maintenant que vous avez les rudiments terraform, essayer de deployer `demo-flask` en backend avec `nginx` en frontend tout en utilisant une `floatin-ip` sur le frontend. + +``` + INTERNET + + │ + │ + │ + │ + │ + │ + │ + │ + ▼ + ┌───────────────────┐ + │ │ + │ FLOATING IP │ + │ │ +┌──────────┴───────────────────┴───────────┐ +│ │ +│ │ +│ │ +│ FRONTEND (NGINX) │ +│ │ +│ │ +│ │ +│ │ +└────────────────────┬─────────────────────┘ + │ + │ + │ + │ + │ + ▼ +┌──────────────────────────────────────────┐ +│ │ +│ │ +│ │ +│ │ +│ BACKEND (DEMO-FLASK) │ +│ │ +│ │ +│ │ +└──────────────────────────────────────────┘ +``` + +Pour vous aider, je vous donne un fichier d'installation de nginx (template terraform) en mode proxy + certificat https: + +[install-nginx.sh.tpl](files/install-nginx.sh.tpl) + + +## Solution +La solution est dans les fichiers `.tf.gpg` mais ils sont chiffres avec la clef GPG d'arnaud. Vous ne pouvez pas les dechiffrer, ils vous faut trouver la solution par vous meme. diff --git a/terraform/training/files/.gitignore b/terraform/training/files/.gitignore new file mode 100644 index 0000000..dce1191 --- /dev/null +++ b/terraform/training/files/.gitignore @@ -0,0 +1,4 @@ +*.tf +*.tfstate +.terraform.lock.hcl +.terraform diff --git a/terraform/training/files/backend.tf.gpg b/terraform/training/files/backend.tf.gpg new file mode 100644 index 0000000..8a7346b Binary files /dev/null and b/terraform/training/files/backend.tf.gpg differ diff --git a/terraform/training/files/frontend.tf.gpg b/terraform/training/files/frontend.tf.gpg new file mode 100644 index 0000000..5d59856 Binary files /dev/null and b/terraform/training/files/frontend.tf.gpg differ diff --git a/terraform/training/files/install-nginx.sh.tpl b/terraform/training/files/install-nginx.sh.tpl new file mode 100644 index 0000000..7d709bd --- /dev/null +++ b/terraform/training/files/install-nginx.sh.tpl @@ -0,0 +1,19 @@ +#!/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 + diff --git a/terraform/training/files/network.tf.gpg b/terraform/training/files/network.tf.gpg new file mode 100644 index 0000000..6ab2a47 Binary files /dev/null and b/terraform/training/files/network.tf.gpg differ diff --git a/terraform/training/files/output.tf.gpg b/terraform/training/files/output.tf.gpg new file mode 100644 index 0000000..86ca9de Binary files /dev/null and b/terraform/training/files/output.tf.gpg differ diff --git a/terraform/training/files/provider.tf.gpg b/terraform/training/files/provider.tf.gpg new file mode 100644 index 0000000..b448ac0 Binary files /dev/null and b/terraform/training/files/provider.tf.gpg differ