Skip to content

Latest commit

 

History

History
156 lines (116 loc) · 5.27 KB

README.md

File metadata and controls

156 lines (116 loc) · 5.27 KB

img Licence


MCN

Librairie de modules Terraform pour l'infrastructure du CEAI

Librairie de modules Terraform réutilisables pour concevoir des déploiements dans le laboratoire d'expérimentation infonuagique du CEAI.

Comment utiliser ces modules ?

Prérequis

Importer les modules

Importer le module vide ceai-lib pour importer le contenu du dépôt Git. Vous pourrez par la suite référencer les modules via le chemin d'import Terraform: ./.terraform/{nom_module_import}/ .

Vous pouvez spécifier le tag de version de la librairie via le paramètre ref. Sinon vous obtenez la version la plus récente (non recommandé).

module "ceai_lib" {
  source = "github.com/CQEN-QDCE/ceai-cqen-terraform-lib?ref=v1.0"
}
module "sea_network" {
  source = "./.terraform/modules/ceai-lib/aws/sea-network"
}

Exemples de déploiements

Bonnes pratiques d'utilisation

Les modules tiennent compte de l'utilisation de certaines bonnes pratiques dans leur fonctionnement.

AWS

Utiliser la connexion au compte AWS via un profil de connexion du client AWS.

Sur la machine qui exécute le déploiement, modifier le fichier $HOME/.aws/config (Le créer s'il n'existe pas).

[profile {CompteExemple}]
sso_start_url = {Url de connexion AWS SSO}
sso_region = ca-central-1
sso_account_id = {Numéro du compte}
sso_role_name = {Nom du role que vous possédez sur ce compte}
region = ca-central-1
output = json

Votre déploiement devra connaître le nom du profil utilisé pour se connecter à AWS. L'utilisation d'une variable est recommandée.

variable "aws_profile" {
  type = string
  description = "Nom du profil de connexion SSO dans le fichier .aws/config du poste qui exécute le déploiement"
}

Identifier le type de compte SEA de travail utilisé

Les modules pour les ressources à déployer dans SEA sont presque tous dépendant du module sea-network. Celui-ci doit connaître le type de compte de travail utilisé (Sandbox, Dev ou Prod). L'utilisation d'une variable est recommandée.

variable "workload_account_type" {
  type = string
  description = "Type de compte de travail ASEA (Prefix du VPC partagé) [Sandbox, Dev, Prod]"
}
module "sea_network" {
  source = "./.terraform/modules/ceai-lib/aws/sea-network"
  
  aws_profile = var.aws_profile
  workload_account_type = var.workload_account_type
}

Prévoir des valeurs pour les tags system et environment et forcer ceux-ci en déclarent votre provider.

Nous recommandons d'utiliser deux variables dans le fichier variables.tf

variable "system" {
  type = string
  description = "Nom du système déployé."
  default = "Exemple"
}

variable "environment" {
  type = string
  description = "Nom de l'environnement du système déployé."
  default = "Dev"
}

Forcer les tags dans provider.tf

provider "aws" {
    region = "ca-central-1"
    profile = var.aws_profile

    default_tags {
        tags = {
            system = var.system
            environment = var.environment
        }
    }
}

Contribuer un module à la librairie

Pour contribuer un module à la librairie assurez-vous que celui-ci respecte certaines règles de base:

  • Suivre la nomenclature des répertoires en cours: [fournisseur]/[nom-du-module];
  • Créer un exemple démontrant l'utilisation de votre module dans le répertoire examples, celui-ci vous servira de tests;
  • Appliquer le formatage Terraform au code: terraform fmt -recursive
  • Générer la documentation de votre module à l'aide de Terraform-docs;
    # Sur un système ayant l'environnement golang installé
    go install -v github.com/terraform-docs/terraform-docs@latest
    cd [repertoire module]
    terraform-docs markdown . > README.md
  • Créer une branche release/vX.X-rcX Pour un premier release candidate, s'il n'y en a pas en cours.
  • Taguer le release candidate dans la branche release quand il est prêt.
  • Contacter un mainteneur pour migrer et taguer la nouvelle version dans la branche main

Règles spécifiques aux modules AWS-SEA

  • Utiliser le modules aws-sea-network pour retrouver les VPC du compte de travail.

License

Ce projet est sous la Licence Libre du Québec - Permissive (LiLiQ-P) version 1.1.

Référez-vous au fichier LICENSE pour plus de détails.

Références