# OpenTofu 102

## objectif

Parce qu'on ♥ `demo-flask`, nous allons maintenant deployer une instance `demo-flask` !

Youpi!


Commencez par travailler dans un nouveau dossier 102:

```bash
mkdir 102
cd 102
```

## provider.tf

Creer ensuite le fichier `provider.tf`:
```
terraform {
  required_providers {
    openstack = {
      source = "terraform-provider-openstack/openstack"
      version = "1.46.0"
    }
  }
}

provider "openstack" {
}

```

## demo-flask.tf

Creez maintenant `demo-flask.tf` pour demarrer un serveur qui utilisera le cloud-init suivant:

[install-demo-flask.sh](https://git.arnaudmorin.fr/arnaud/trainings/raw/branch/main/terraform/training/files/install-demo-flask.sh)

## init and apply

Lorsque vous etes pret:
```bash
tofu init
tofu apply
```

## resource output

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.access_ip_v4)}: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 !
