Skip to content
Snippets Groups Projects
Select Git revision
  • 0083d9b071b542d0cb4c48df088f0b2bee14f0a4
  • master default protected
  • rancher
  • rebond_bastion
  • provisioner_ansible
5 results

projet_terraform

  • Clone with SSH
  • Clone with HTTPS
  • Descriptif du projet

    • Auteur : Florian MUNIER
    • Contact : florian.munier@imt-atlantique.net
    • Formation : MS Infrastructures Cloud et DevOps
    • Date : 23/01/2023 - 20/02/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'un routeur
      • d'une paire de clés généréé automatiquement pour ce projet, copiée dans le répertoire projet "projet_terraform/.ssh/"
      • d'une paire de clés généréé automatiquement pour les instances d'orchestration et copiées sur l'instance bastion dans le répertoire ".ssh"
      • d'une instance bastion
      • de 3 instances d'orchestration
      • d'une IP flottante admin
      • d'une IP flottante application
      • de 3 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
      • d'un fichier "hosts.ini" servant à lancer des commandes pour un projet Ansible

    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.

      module "mod-os-private-network" {
      source                           = "./mod-os-private-network/"
      KEYPAIR_PATH                     = "$HOME/.ssh"
      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"
      DNS                              = ["192.44.75.10"]
      INSTANCE_BASTION_NAME            = "bastion"
      INSTANCE_BASTION_IMAGE           = "imta-docker"
      INSTANCE_BASTION_FLAVOR          = "s10.medium"
      INSTANCE_BASTION_KEY_PAIR        = "projet_terraform"
      INSTANCE_ORCHEST_NAME            = ["node01", "node02", "node03"]
      INSTANCE_ORCHEST_IMAGE           = "imta-docker"
      INSTANCE_ORCHEST_FLAVOR          = "s10.medium"
      INSTANCE_ORCHEST_KEY_PAIR        = "id_rsa"
      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