Descriptif du projet
- Auteur : Florian MUNIER
- Contact : florian.munier@imt-atlantique.net
- Formation : MS Infrastructures Cloud et DevOps
- Date : 16/01/2023 - 26/01/2023
- Description : Ce projet a pour but de mettre en place une infrastructure composée :
- d'un réseau
- d'un sous-réseau
- d'une paire de clés généréé automatiquement pour ce projet, copiée dans votre répertoire "/$HOME/.ssh/" et sur les instances (clé privée)
- d'une instance bastion
- de 3 instances d'orchestration
- d'une IP flottante admin
- d'une IP flottante application
- de groupes de sécurité
- d'un fichier "private_ips.txt" contenant les IP locales des instances, généré automatiquement et copié sur les instances
- d'un fichier "public_ips.txt" contenant les IP publiques des instances "bastion" et "node01", généré automatiquement
Clone du projet
git clone https://gitlab.imt-atlantique.fr/f21munie/projet_terraform.git
Installation de Terraform
- Installer Terraform :
TF_VERSION=1.3.6
echo "Downloading terraform binary ..."
if [ ! -e terraform_${TF_VERSION}_linux_amd64.zip ]; then
curl -O https://releases.hashicorp.com/terraform/${TF_VERSION}/terraform_${TF_VERSION}_linux_amd64.zip
fi
if [ ! -x ~/bin/terraform ]; then
unzip terraform_${TF_VERSION}_linux_amd64.zip -d ~/bin/
fi
rm -f terraform_${TF_VERSION}_linux_amd64.zip
- Vérifier le bon fonctionnement de Terraform :
terraform -v
Terraform v1.3.6 on linux_amd64
Configuration de l'interaction avec Openstack
Pour pouvoir interagir avec Openstack, créer ou récupérer via horizon un fichier RC, et initialiser l'environnement :
cd projet_terraform
source os-openrc.sh
env | grep OS_
Le fichier "os-openrc.sh" correspond à votre fichier RC perso. N'oubliez pas de préciser le chemin.
Renseigner les variables de Terraform
Il est nécessaire de paramétrer les variables suivantes afin de choisir vos caractéristiques de l'infrastructure (, nom du réseau, du sous-réseau, du routeur, le CIDR, ...). Pour cela, allez dans le fichier "main.tf" et veuillez à renseigner les variables. Noubliez pas de modifier le chemin du projet <PROJECT_PATH> s'il ne correspond pas.
source = "./mod-os-private-network/"
PROJECT_PATH = "/$HOME/projet_terraform/mod-os-private-network"
EXTERNAL_NETWORK = "external"
ROUTER_NAME = "router_tf_private"
NETWORK_NAME = "network_tf_private"
SUBNET_NAME = "subnet_tf_private"
SUBNET_IP_RANGE = "192.168.1.0/24"
INSTANCE_BASTION_NAME = "bastion"
INSTANCE_BASTION_IMAGE = "imta-ubuntu20"
INSTANCE_BASTION_FLAVOR = "m1.small"
INSTANCE_BASTION_KEY_PAIR = "openstack"
INSTANCE_ORCHEST_NAME = ["node01", "node02", "node03"]
INSTANCE_ORCHEST_IMAGE = "imta-ubuntu20"
INSTANCE_ORCHEST_FLAVOR = "m1.small"
INSTANCE_ORCHEST_KEY_PAIR = "openstack"
SECGROUP_BASTION_NAME = "secgroup_bastion"
SECGROUP_APPLICATION_NAME = "secgroup_application"
SECGROUP_INTERNAL_NETWORK_NAME = "secgroup_internal_network"
Déploiement de l'architecture
terraform init
terraform plan
terraform apply
terraform apply vous demandera d'entrer une valeur (Enter a value:), taper "yes" et valider avec "entrée".
Visualisation de l'architecture
Vous pouvez vérifier l'état des ressources vues par Terraform. Elles seront listées avec leurs attribus.
terraform show
Vous pouvez également lister les ressources par type dans Openstack, directement en ligne de commande :
openstack network list
openstack subnet list
openstack router list
openstack floating ip list
openstack security group list
L'architecture est graphiquement visualisable via Openstack :
Projet / Réseau / Topologie du réseau
Suppression de l'architecture
Si vous voulez supprimer l'architecture, lancer la commande suivante :
terraform destroy