Architecture de Site Web industrielle
Les services AWS d'Amazon offre la possibilité de virtualiser entièrement une infrastructure d'une entreprise. Cette avancé technologie fait en sorte que tous les possibilités réseaux peuvent être schématisé et configuré dans les services d'AWS sans aucune intervention manuel (par un humain) par AWS. Cette approche offre l'avantage d'avoir rapidement tous les composantes qu'on a besoin et qu'on peut avoir l'équipement désiré à toute heure du jour ou de la nuit lorsque le besoin se fait vraiment sentir. De façon concrète, vous n'avez pas besoin d'attendre qu'une demande pour une Switch soit installé par un technicien informatique le lendemain pour pouvoir utiliser leur service par exemple. Les services sont tous automatisés ! Mais automatisé est un grand mot, ainsi, du côté AWS, c'est automatisé, mais du côté client des services AWS, ce n'est pas tout automatisé, il faudra ainsi remplir de nombreux formulaires d'informations sur la manière qu'on souhaite monter notre infrastructure de entreprises ou de notre organisation.
Au préalable, prenez notes qu'il faut que toutes vos composantes devraient être assemblé dans le même centre de données pour que l'opération puisse fonctionner correctement.
Une architecture Web avec des besoins industrielles devrait donc comprendre, est construit et selon l'ordre suivante :
- Création d'un VPC
- Création d'un Subnet
- Création d'un Security Group
- Création d'un Target Group (du Load Balancer)
- Création d'un certificat HTTPS (Certificate Manager)
- Création d'un Load Balancer
- Création d'un Amazon CloudFront
- Configuration Route 53
- Création d'une instance RDS
- Création d'une instance EC2
- Création d'un Launch Configuration
- Création d'un Auto Scaling Group
- Création d'un dépôt dans le compte de GitHub ou AWS CodeCommit pour le code source du projet.
- Création de AWS CodePipeline / AWS CodeDeploy
- Création d'un adresse d'envoi dans SES
Création d'un Security Group
Pour aller dans le Security Group, vous devez d'abord choisir la région, soit dans notre exemple Canada Central (ca-central-1) dans la barre noir du haut du site du compte AWS. Ensuite, vous aller dans la section EC2 (lequel correspondent aux instances de VM). Vous cliquez dans la colonne de gauche sur l'option «Security Group». Ensuite, vous cliquez sur le bouton Create Security Group. Dans notre exemple, nous avons choisis la création des 4 groupes de sécurités suivants :
Nom | Description |
---|---|
sg_elb_nomduprojet | Ce nom permet d'indiquer le groupe de sécurité pour l'équilibreur de charger (Load Balancer). |
sg_nomduprojet_public | Ce nom permet d'indiquer le groupe de sécurité pour les accès publiques. |
sg_nomduprojet_rds | Ce nom permet d'indiquer le groupe de sécurité pour les accès frontale à la base de données RDS. |
sg_nomduprojet_devops | Ce nom permet d'indiquer le groupe de sécurité pour les accès des DevOps. |
sg_elb_nomduprojet
Ce groupe de sécurité permet une communication totale aux navigateurs Web, ainsi dans ce groupe de sécurité, le port HTTP (port 80) et HTTPS (port 443) doivent être autorisé. Vous commencez par cocher dans la liste le groupe «sg_elb_nomduprojet» dans la liste. Ensuite, vous cliquez sur les options «Action > Edit inbound rules». Enfin, vous indiquez les valeurs de l'onglet «Inbound» suivante :
Type | Protocol | Port Range | Source | Description |
---|---|---|---|---|
HTTP | TCP | 80 | 0.0.0.0/0 | HTTP par IPv4 |
HTTP | TCP | 80 | ::/0 | HTTP par IPv6 |
HTTPS | TCP | 443 | 0.0.0.0/0 | HTTP par IPv4 |
HTTPS | TCP | 443 | ::/0 | HTTP par IPv6 |
sg_nomduprojet_public
Ce groupe de sécurité permet de gérer les communications par le protocole SSH entre les services SSH et entre le réseau du bureau de l'entreprise. De plus, il doit contenir les communications spécifiques entre les serveurs EC2, ainsi que l'équilibreur de charger (Load Balancer). Vous commencez par cocher dans la liste le groupe «sg_nomduprojet_public» dans la liste. Ensuite, vous cliquez sur les options «Action > Edit inbound rules». Enfin, vous indiquez les valeurs de l'onglet «Inbound» suivante :
Type | Protocol | Port Range | Source | Description |
---|---|---|---|---|
HTTP | TCP | 80 | sg_elb_nomduprojet | Équilibreur de charger |
HTTP | TCP | 80 | sg_nomduprojet_public | EC2 du nomduprojet |
SSH | TCP | 22 | 77.77.77.77/32 | IP donnant accès au bureau |
sg_nomduprojet_rds
Ce groupe de sécurité permet de gérer les bases de données RDS de type Aurora DB à partir d'instance EC2. Vous commencez par cocher dans la liste le groupe «sg_elb_nomduprojet_rds» dans la liste. Ensuite, vous cliquez sur les options «Action > Edit inbound rules». Enfin, vous indiquez les valeurs de l'onglet «Inbound» suivante :
Type | Protocol | Port Range | Source | Description |
---|---|---|---|---|
MySQL/Aurora | TCP | 3306 | sg_nomduprojet_public | Accès à MySQL |
sg_nomduprojet_devops
Ce groupe de sécurité permet aux employés de communiquer avec les serveurs à partir de la maison ou d'un emplacement de voyage. Les valeurs contenus dans ce tableau varieront donc continuellement. Vous commencez par cocher dans la liste le groupe «sg_nomduprojet_devops» dans la liste. Ensuite, vous cliquez sur les options «Action > Edit inbound rules». Enfin, vous indiquez les valeurs de l'onglet «Inbound» suivante :
Type | Protocol | Port Range | Source | Description |
---|---|---|---|---|
All traffic | All | All | 88.88.88.88/32 | IP donnant accès à la maison |
Création d'un Target Group (du Load Balancer)
Pour aller dans le Target Group, vous devez d'abord choisir la région, soit dans notre exemple Canada Central (ca-central-1) dans la barre noir du haut du site du compte AWS. Ensuite, vous aller dans la section EC2 (lequel correspondent aux instances de VM). Vous cliquez dans la colonne de gauche sur l'option «Target Groups». Enfin, vous cliquez sur le bouton Create target group entrer les valeurs suivantes dans les champs de formulaire :
Champ | Description |
---|---|
Target group name | tg-nomduprojet |
Target type | (*) Instance |
Protocol | HTTP |
Port | 80 |
VPC | vpc_nomduprojet |
Protocol | HTTP |
Path | / |
Port | (*) traffic port |
Unhealthy threshold | 2 |
Timeout | 5 |
Interval | 30 |
Success codes | 200-499 |
Création d'un certificat HTTPS (Certificate Manager)
Pour aller dans le Target Group, vous devez d'abord choisir la région, soit dans notre exemple Canada Central (ca-central-1) dans la barre noir du haut du site du compte AWS. Ensuite, vous aller dans la section «Certificate Manager». Puis, vous cliquez sur le menu de gauche «Certificate Manager». Vous cliquez sur le bouton Request a certificate.
Step 1: Add domain names
Lors de la première étape des champs de formulaires, ajouter le nom du domaine de votre site Web avec un «*» : «*.monsite.com». Ensuite vous cliquez sur le bouton Next.
Step 2: Select validation method
Lors de la deuxième étape des champs de formulaires, choisissez l'option : «(*)DNS validation».
Step 3: Review
Lors de la troisième étape des champs de formulaires, vous cliquez sur le bouton Confirm and request.
Step 4: Validation
Il affiche une validation en progression. Vous cliquez sur le bouton Continue. Par la suite, vous cliquez sur la liste des noms de domaines de «Certificate Manager». Vous ouvrez l'arbre du nom de domaine et vous cliquez sur le lien : «Export DNS configuration to a file».
Création d'un Load Balancer
Pour aller dans le Target Group, vous devez d'abord choisir la région, soit dans notre exemple Canada Central (ca-central-1) dans la barre noir du haut du site du compte AWS. Ensuite, vous aller dans la section EC2 (lequel correspondent aux instances de VM). Vous cliquez dans la colonne de gauche sur l'option «Load Balancers». Enfin, vous cliquez sur le bouton Create Load Balancer. Finalement, vous choisissez «HTTP/HTTPS» et vous cliquez sur le bouton Create :
Step 1: Configure Load Balancer
Lors de la première étape des champs de formulaires, vous entrez les informations suivantes :
Champ | Description |
---|---|
Name | elb-nomduprojet |
Schema | (*) internet-facing |
IP address type | ipv4 |
Listeners | |
HTTP | 80 |
HTTPS | 443 |
Availability Zones | |
VPC | vpc_nomduprojet |
Availability Zone | Subnet ID |
ca-central-1a | sb_nomduprojet_private_a |
ca-central-1a | sb_nomduprojet_public_a |
Step 2: Configure Security Settings
Lors de la deuxième étape des champs de formulaires, vous entrez les informations suivantes :
Champ | Description |
---|---|
Certificate type | (*) Choose a certificate from ACM (recommended) |
Certificate name | *.monsite.com |
Security policy | ELBSecurityPolicy-2016-08 |
Step 3: Configure Security Groups
Lors de la troisième étape des champs de formulaires, vous sélectionnez «(*) Select an existing security group» et vous entrez les informations suivantes :
Champ | Description |
---|---|
sg-xxxxxxxxxx | sg_nomduprojet_public |
sg-xxxxxxxxxx | sg_elb_nomduprojet |
Step 4: Configure Routing
Lors de la quatrième étape des champs de formulaires, vous entrez les informations suivantes :
Champ | Description |
---|---|
Target group | Existing target group |
Name | tg-nomduprojet |
Step 5: Register Targets
Lors de la cinquième étape des champs de formulaires, on ne peut pas rajouter immédiatement les instances dans l'équilibreur de charge (Load Balancer), on doit donc uniquement cliquer sur le bouton Next: Review et passer à l'étape suivante.
Step 6 : Review
Lors de la sixième étape des champs de formulaires, vous cliquez sur le bouton Create. Ensuite, vous cliquez sur le bouton Close.
Création d'un Amazon CloudFront
Pour aller dans le Amazon CloudFront, vous devez écrire le mot «CloudFront» dans le menu de AWS. Vous cliquez sur le bouton Créer une distribution en français ou Create Distribution en anglais. Deux sections s'affichent, vous cliquez sur le bouton Mise en route ou Get Started de la section Web, soit le premier des 2 boutons.
La deuxième étape s'affiche, vous entrez les valeurs suivantes dans les champs de formulaire :
Champ | Description |
---|---|
Nom du domaine d'origine Origin Domain Name |
elb-nomduprojet-* (Vous sélectionnez le champ commençant par cette valeur, car il rajoute un nom de domaine) |
Chemin d'origine Origin Path |
Vous laissez le champ vide |
ID d'origine Origin ID |
ELB-elb-nomduprojet (se champ est remplit automatiquement) |
En-têtes personnalisés d'origine Origin Custom Headers |
Header Name - Value |
Vous laissez se champ vide | |
Paramètres de comportement du cache par défaut / Default Cache Behavior Settings | |
Modèle de chemin Path Pattern |
Default (*) |
Stratégie de protocole d'utilisateur Viewer Protocol Policy |
HTTP et HTTPS HTTP and HTTPS |
Méthodes HTTP autorisées Allowed HTTP Methods |
GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE |
Configuration du chiffrement au niveau du champ Field-level Encryption Config |
Vous laissez se champ vide |
Méthodes HTTP mises en cache Cached HTTP Methods |
GET, HEAD (en cache par défaut) GET, HEAD (Cached by default) |
Réacheminer les en-têtes Cache Based on Selected Request Headers |
Whitelist |
Mise en cache d'un objet Object Caching |
(*) Customize |
Origin SSL Protocols | TLSv1.2 TLSv1.1 TLSv1 |
Origin Protocol Policy | Match Viewer |
Origin Response Timeout | 30 |
Origin Keep-alive Timeout | 5 |
HTTP Port | 80 |
HTTPS Port | 443 |
Whitelist Headers | Host Origin |
Durée de vie minimale Minimum TTL |
0 |
Durée de vie maximale Maximum TTL |
86400 |
Durée de vie par défaut Default TTL |
300 |
Réacheminer les cookies Forward Cookies |
Liste blanche Whitelist |
Placer les cookies dans la liste blanche Whitelist Cookies |
Pour un projet comme WordPress, vous devriez avoir les valeurs suivantes : comment_author_* comment_author_email_* comment_author_url_* wordpress_logged_in_* wordpress_test_cookie wp-setting-* |
Réacheminement et mise en cache des chaînes de requête Query String Forwarding and Caching |
Forward all, cache based on all |
Smooth Streaming | (*) No |
Restreindre l'accès des utilisateurs (Utiliser des URL signées ou des Cookies signées) Restrict Viewer Access (Use Signed URLs or Signed Cookies) |
(*) No |
Compresser automatiquement les objets Compress Objects Automatically |
(*) Yes |
Associations de fonction Lambda Lambda Function Associations |
Vous laissez ses champs vides |
Paramètres de distribution / Distribution Settings | |
Catégorie de tarifs Price Class |
Utiliser uniquement États-Unis, Canada et Europe Use Only U.S., Canada and Europe |
AWS WAF Web ACL | Aucun None |
Autres noms de domaine (CNAME) Alternate Domain Names (CNAMEs) |
Vous entrez la liste des noms de domaines de votre site : www.monsite.com monsite.com |
Certificat SSL SSL Certificate |
Vous sélectionnez «Certificat SSL personnalisé (exemple.com) :» «(*) Custom SSL Certificate». Si le certificat n'est pas encore disponible, vous n'avez qu'à sélectionner le Default et revenir le modifier 20 minutes plus tard. Vous devez choisir le bon certificat SSL en fonction de votre nom de site Web et vous n'avez pas besoin de cliquez sur le bouton Demander ou importer un certificat avec ACM ou Request or Import a Certificate with ACM |
Version minimale du protocole SSL Security Policy |
(*) TLSv1.1_2016 (recommanded) |
Versions HTTP prises en charge Supported HTTP Versions |
(*) HTTP/2, HTTP/1.1, HTTP/1.0 |
Objet racine par défaut Default Root Object |
Vous laissez se champ vide |
Journalisation Logging |
(*) Désactiver (*) Off |
Compartiment pour les journaux Bucket for Logs |
Vous laissez se champ vide |
Préfixe de journal Log Prefix |
Vous laissez se champ vide |
Journalisation des cookies Cookie Logging |
(*) On |
Activer IPv6 Enable IPv6 |
Vous activez cette option |
Commentaire Comment |
Vous laissez se champ vide |
État de la distribution Distribution State |
(*) Enabled |
Ensuite, vous cliquez sur le bouton Créer une distribution ou Create Distribution en anglais.
Configuration Route 53
Tout d'abord, vous devez avoir déjà votre nom de domaine pointant vers les enregistrements NS (NameServer) d'Amazon pour le nom de domaine que vous souhaitez héberger chez AWS. Ensuite, vous devez tout d'abord écrire le mot «Route 53» dans le menu de AWS et sélectionner Route 53. Cliquez ensuite sur le nom de domaine que vous souhaitez utiliser.
Création d'une entrée www
Vous commencez par créer une entrée «www» allant pointer vers votre site Web. Pour se faire, vous cliquez sur le bouton Create Record Set et vous entrez les informations suivantes dans le formulaire de champs :
Champ | Description |
---|---|
Name | www |
Type | A - IPv4 Address |
Alias | Choisir dans la liste de CloudFront le nom de votre site venant d'être créer dans la liste «Cloud Front distributions». |
Ensuite, vous cliquez sur le bouton Create.
- Il est a noter qu'il est possible que votre nom de Amazon CloudFront n'apparaissent pas et qu'il ne vous est donc pas possible de le sélectionner. Cette situation se produit pour deux raisons possibles, soit que le déploiement de CloudFront n'est pas terminé, car il prend au moins 20 minutes avant d'être complété ou vous avez mal orthographié le nom CNAME dans les autres noms de domaine du Amazon CloudFront (Alternate Domain Names (CNAMEs)) que vous venez de créer.
Création d'une entrée vide
Pour l'entrée sans le «www» ou vide, vous effectuez le même principe. Vous cliquez sur le bouton Create Record Set et vous entrez les informations suivantes dans le formulaire de champs :
Champ | Description |
---|---|
Name | Vous laissez se champ vide |
Type | A - IPv4 Address |
Alias | Choisir dans la liste de CloudFront le nom de votre site venant d'être créer dans la liste «Cloud Front distributions». |
Ensuite, vous cliquez sur le bouton Create.
- Il est a noter qu'il est possible que votre nom de Amazon CloudFront n'apparaissent pas et qu'il ne vous est donc pas possible de le sélectionner. Cette situation se produit pour deux raisons possibles, soit que le déploiement de CloudFront n'est pas terminé, car il prend au moins 20 minutes avant d'être complété ou vous avez mal orthographié le nom CNAME dans les autres noms de domaine du Amazon CloudFront (Alternate Domain Names (CNAMEs)) que vous venez de créer.
Création d'un enregistrement MX
Si votre site Web à besoin d'avoir un système d'envoi de courriel pour les mots de passe oublié par exemple, vous devrez donc créer un enregistrement MX (Mail eXchange) pointant vers le service SES d'AWS. Pour se faire, vous devez cliquez sur le bouton Create Record Set et vous entrez les informations suivantes dans le formulaire de champs :
Champ | Description |
---|---|
Name | www |
Type | MX - Mail exchange |
Alias | No |
TTL (Seconds) | 300 |
Value | 10 inbound-smtp.us-east-1.amazonaws.com |
Ensuite, vous cliquez sur le bouton Create.
Création d'une instance RDS
Pour aller dans le RDS, vous devez écrire le mot «rds» dans le menu de AWS. Vous cliquez dans la colonne de gauche sur «Databases». Vous cliquez ensuite sur le bouton Create database.
Step 1 : Select engine
Dans l'étape «Step 1 : Select engine», vous sélectionnez «Amazon Aurora» et vous sélectionnez la compatibilité MySQL 5.7. Puis vous cliquez sur le bouton Next.
Step 2 : Specify DB details
Dans l'étape «Step 2 : Specify DB details», vous entrez les informations suivantes dans le formulaire de champs :
Champ | Description |
---|---|
DB engine | Aurora - compatible with MySQL 5.7.12 |
Capacity type | Provisioned |
DB engine version | Aurora (MySQL)-5.7.12 |
DB instance class | db.r4.large - 2 vCPU, 15.25 GiB RAM (le type d'instance que vous choisissez ici dépendra énormément de vos tests de charge que vous avez au préalable effectuer). |
Multi AZ | No |
Settings | |
DB instance identifier | nomduprojet-rds |
Master username | root |
Master password | Vous devriez utiliser un mot de passe désiré ou utiliser l'utilitaire comme pwgen en ligne de commande pour en générer un. |
Confirm password | Vous répétez le même mot de passe que celui que vous avez écrit dans le champ Master password |
Vous cliquez sur le bouton Next.
Step 3 : Configure advanced settings
Lors de la troisième étape des champs de formulaires, vous entrez les informations suivantes dans les champs du formulaires :
Champ | Description |
---|---|
Virtual Private Cloud (VPC) | vpc_nomduprojet |
Subnet group | Default |
Public accessibility | No |
No preference | No |
VPC security groups | sg_nomduprojet_rds (Vous deviez supprimer le "Default" s'il existe) |
Database options | |
DB cluster identifier | Vous laissez se champ libre |
Database name | nomduprojet |
Port | 3306 |
DB parameter group | default.aurora-mysql5.7 |
DB cluster parameter group | default.aurora-mysql5.7 |
Option group | Vous ne modifiez pas se champ |
IAM DB authentication | No |
Encryption | |
Encryption | Enable encryption |
Master key | aws/rds |
Failover | |
Priority | No preference |
Backup | |
Backup retention period | 1 day |
Monitoring | |
Enhanced monitoring | Enable enhanced monitoring |
Monitoring Role Default | Default |
Granularity | 60 seconds |
Log exports | |
Select the log types to publish to Amazon CloudWatch Logs | [ ] Audit log [ ] Error log [ ] General log [ ] Slow query log |
Maintenance | |
Auto minor version upgrade | Enable auto minor version upgrade |
Maintenance window | No preference |
Deletion protection | |
[√] Enable deletion protection |
Vous cliquez sur le bouton Create Database. Ensuite vous cliquez sur le bouton View DB Instances details.
Récupération des informations de connexions
Vous cliquez sur la liste des bases de données de RDS. Vous ouvrez l'arbre, cliquez sur le noeud enfant. Vous allez ensuite, dans l'onglet «Connectivity» et vous collez le lien de ligne après Endpoint. Vous aurez par exemple «nomduprojet-rds.variable.ca-central-1.rds.amazonaws.com».
Création d'une instance EC2
Pour aller dans le Security Group, vous devez d'abord choisir la région, soit dans notre exemple Canada Central (ca-central-1) dans la barre noir du haut du site du compte AWS. Ensuite, vous aller dans la section EC2 (lequel correspondent aux instances de VM). Vous cliquez dans la colonne de gauches «Instances». Enfin, vous cliquez sur le bouton Launch Instance.
Étapes 1 - Choisir le type d'AMI / Step 1 - Choose AMI
Si la machine désirez est un Linux, vous devriez entrez les informations dans les champs du formulaire :
Champ | Description |
---|---|
AMI | Amazon Linux AMI 2018.03.0 (HVM) |
Ensuite, vous cliquez sur le bouton Select.
Étapes 2 - Choisir le type d'instance / Step 2 - Choose Instance Type
Lorsque vous choisissez un type d'instance, vous devez au préalable tenir compte des tests de volumétrie ou des tests de charge. Dans notre exemple, nous choisissons une instance assez grosse, mais il n'est pas certains que celle-ci conviennent à tous. Il est a noter que plus vous demandez une grande instance plus le prix se révèle élevé et si vous ne prenez pas une instance assez grosse, votre site risque de tomber car il aura trop de charge. De nombreux personnes préféreront mettre une instance plus grande que le besoin réel et descendront pour une instance plus petite s'ils voient que le besoin était exagéré. On entre donc les informations suivants dans les champs de formulaires :
Champ | Description |
---|---|
Instance Type | m5.large |
Ensuite, vous cliquez sur le bouton Next: Configure Instance Details.
Step 3 - Configure Instance Details
Lors de la troisième étape des champs de formulaires, vous entrez les informations suivantes dans les champs du formulaires :
Champ | Description |
---|---|
Number of instances | 1 |
Purchasing option | Vous ne devriez pas cocher cette option |
Network | vpc_nomduprojet |
Subnet | sb_public_a |
Auto-assign Public IP | Enable |
Placement group | Vous ne devriez pas cocher cette option |
Capacity Reservation | Open |
IAM role | EC2-nomduprojet |
CPU options | Vous ne devriez pas cocher cette option |
Shutdown behavior | Stop |
Stop - Hibernate behavior | [ ] Enable hibernation as an additional stop behavior |
Enable termination protection | [√] Protect against accidental termination |
Monitoring | [√] Enable CloudWatch detailed monitoring |
EBS-optimized instance | [ ] Launch as EBS-optimized instance |
Tenancy | Shared - Run a shared hardware instance |
On laisse le «Network interfaces» et «Advanced Details» inchangé. Enfin, vous cliquez sur le bouton Next: Add Storage.
Step 4: Add Storage
Dans la quatrième étape, on choisit la taille des volumes de disque dur. Vous pouvez augmenter par la suite la taille des volumes. Si vous n'êtes pas certains de la taille que vous devez choisir, sachez que AWS vous charge selon la taille du volume utilisé, ainsi, il ne charge pas pour l'espace disque de libre sur le volume. Ainsi, il peut être judicieux d'indiquer une taille trop importante pour le besoin réel.
Volume Type | Device | Snapshot | Size (GiB) | Volume Type | IOPS | Throughput | Delete on Terminaison | Encrypted |
---|---|---|---|---|---|---|---|---|
EBS | /dev/sdb | 10 | General propose SSD (gp2) | 100 / 3000 | N/A | [ ] ne pas cocher |
Vous cliquez sur le bouton Next: Add Tags
Step 5: Add Tags
Dans la cinquième étape, vous devez ajouter des balises d'identification. Vous devez sur le bouton Add tag 2 fois pour ajouter vos balises :
Clef | Valeur | Instances | Volumes |
---|---|---|---|
Projet | ec2-nomduprojet | [√] | [√] |
Name | ec2-nomduprojet-starterkit | [√] | [√] |
Step 6: Configure Security Group
Dans la sixième étape, vous choisissez les groupes de sécurités précédemment créer. Pour se faire, vous cliquez sur le bouton radio «Select an existing security group» et vous sélectionner les groupes de sécurité suivants :
Groupe de sécurité / Security Group |
---|
sg_nomduprojet_public |
sg_elb_nomduprojet |
Ensuite, vous cliquez sur le bouton Review and Launch.
Lancement de l'instance EC2
Il affiche un sommaire de tous les informations de l'instance EC2 allant être créé. Vous cliquez tous simplement sur le bouton Launch. Ensuite, une fenêtre surgissante apparaît avec le message suivant «Select an existing key pair or create a new key pair». Si vous avez déjà une clef pour d'autres instances, vous sélectionnez «Choose an existing key pair» et vous sélectionnez la clef de vos autres instances. Si vous n'avez pas de clef, alors, vous lui demandez dans créer une et vous sauvegarder précieusement cette clef à deux endroits différents sur votre poste de travail et sur une dossier partagé protégé et accessible par un nombre restreint d'utilisateur. De plus, il ne faut pas oublier que si vous ne sauvegarder pas la clef, vous ne serez pas en mesure de communiquer avec l'instance EC2, lequel ne sera pas très pratique, car vous devez effectuer de nombreux traitement de mise en oeuvre. Une fois cette étape de passer, vous cliquez sur le bouton Launch Instances et ensuite sur le bouton View Instances. Vous allez voir dans liste de la colonne «Status Checks» le message «Initializing», c'est votre instance que vous venez de créer.
Préparation de l'instance
Une fois votre instance EC2 démarrer, vos cochez votre instance dans la liste et vous cliquez sur le bouton Connect. Vous collez les informations de connexion et vous vous connectez en SSH sur l'instance EC2. Lorsque vous accès au prompt de Linux sur votre instance EC2, vous êtes en mesure commencer votre mise en oeuvre de l'instance EC2 ! Commencer par créer un volume physique à l'aide d'une commande comme ceci (voir les commandes lvm) :
sudo vgcreate vgdata /dev/sdb |
Par la suite, vous créez un volume logique dans le volume physique avec la commande suivante :
sudo lvcreate -l +100%FREE -n lvwww vgdata |
On peut formater le disque à l'aide d'une commande comme celle-ci :
sudo mkfs.ext4 /dev/mapper/vgdata-lvwww |
On créer un dossier et on monte le volume dessus avec les commandes suivantes :
sudo mkdir -p /var/www/html sudo mount --types=ext4 /dev/mapper/vgdata-lvwww /var/www/html |
Le volume est accessible, mais lorsque vous allez redémarrer l'instance, il ne sera plus accessible. Pour qu'il soit à nouveau disponibles après un démarrage à froid, vous devez éditer le fichier contenant les volumes à montés à l'aide d'une commande comme ceci :
sudo vi /etc/fstab |
Et vous collez la ligne suivante à fin du fichier texte :
/dev/mapper/vgdata-lvwww /var/www/html ext4 defaults,noatime 1 1 |
Une fois sauvegarder, vous redémarrer l'instance avec une commande ceci :
sudo reboot |
Une fois, le volume en place, et que l'instance EC2 a redémarrer avec succès, vous pouvez installer les plus applications de survit comme avec une commande comme celle-ci :
sudo yum install mc rsync mlocate nmap iftop iotop htop -y |
Vous pouvez installer une gestionnaire de version comme Git à l'aide de la commande suivante :
sudo yum install git -y |
Vous pouvez installer un serveur Web comme Apache 2.4 à l'aide de la commande suivante :
sudo yum install httpd24 -y |
Vous pouvez installer un client de base de données MySQL à l'aide de la commande suivante :
sudo yum install mysql57.x86_64 -y |
Vous pouvez installer le langage de programmation comme PHP 7.1 à l'aide de la commande suivante :
sudo yum install php71 -y |
Vous pouvez installer les extensions MySQL et MBString du PHP 7.1 à l'aide de la commande suivante :
sudo yum install php71-mysqlnd php71-mbstring.x86_64 -y |
Enfin, on peut installer AWS CodeDeploy à l'aide des commandes suivantes :
sudo yum install ruby wget -y wget https://aws-codedeploy-ca-central-1.s3.amazonaws.com/latest/install chmod +x ./install sudo ./install auto |
A partir de maintenant, tous les utilitaires et les services devrait installer. Il est maintenant temps de bâtir les fondations pour le projet lui-même. On commence donc par créer un dossier adéquat :
sudo mkdir /var/www/html/nomduprojet sudo chown -R ec2-user:apache /var/www/html/* |
Vous créer une configuration pour le projet Apache :
sudo vi /etc/httpd/conf.d/nomduprojet.conf |
Vous collez dans se fichier le contenu suivant avec quelques ajustements (voir httpd.conf) :
<VirtualHost *:80> ServerName www.nomduprojet.com ServerAlias nomduprojet.com DocumentRoot "/var/www/html/nomduprojet" <Directory /var/www/html/nomduprojet> AllowOverride All </Directory> Header set Access-Control-Allow-Origin "*" RemoteIPHeader X-Forwarded-For <IfModule mod_setenvif.c> SetEnvIf X-Forwarded-Proto "^https$" HTTPS </IfModule> LogLevel warn LogFormat "%{Host}i %a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D" combined1 ErrorLog /var/log/httpd/error.log CustomLog /var/log/httpd/access.log combined1 </VirtualHost> |
Vous démarrez ensuite les services que vous avez besoin à l'aide des commandes suivantes :
sudo chkconfig httpd on sudo service httpd start sudo service codedeploy-agent start |
Se connecter a la base de données RDS avec root
Pour que l'application soit en mesure d'utiliser la base de données, vous commencez donc par tenter de communiquer avec votre service RDS de base de données avec une commande comme ceci (le lien a été précédemment copier dans le presse-papier). Vous aurez donc une formulation ressemblant à ceci :
mysql -u root -p -h nomduprojet-rds-cluster.cluster-variable-central-1.rds.amazonaws.com |
- Si vous ne réussissez pas à vous connecter, vérifiez dans le groupe de sécurité «sg_nomduprojet_rds» qu'il contient bien un port 3306 et qu'il autorise le groupe de sécurité «sg_nomduprojet_public». Si la communication n'est pas possible, soit que l'instance RDS est arrêté ou que le port 3306 est bloqué dans le groupe de sécurité.
Une fois connectez à la base de données, un prompt «mysql>» apparaît, vous pouvez exécuter la commande SQL suivante pour créer un utilisateur spécifique à l'instance EC2 :
CREATE USER 'nomutilisateur'@'%' IDENTIFIED BY '*** mettre le mot de passe ***';
Ensuite, exécuter la commande SQL suivante pour lui donner des accès à la base de données (nomduprojet = Base de données, nomutilisateur = Utilisateur de la base de données) :
GRANT ALL PRIVILEGES ON nomduprojet.* TO 'nomutilisateur'@'%';
Ensuite, pouvez effectuer les opérations dans la base de données si nécessaires, en sélectionnant la base de données :
use nomduprojet;
Et vous entrez vos SOURCE, UPDATE, SELECT,... et tous autres instructions nécessaires à vos projets. Une fois vos opérations terminés, vous pouvez quitter le prompt de MySQL de la façon suivante :
quit;
Vérification de l'instance
Vous vérifiez que l'instance fonctionne correctement en ajoutant l'instance dans le Target Group.
Instantané (Snapshop) de l'instance EC2
Si tout fonctionne normalement, vous pouvez faire maintenant un instantané de l'instance EC2 de la façon suivante :
- Vous allez dans le EC2 Dashboard, vous cliquez sur «Running Instances».
- Vous cochez la machine virtuelle de votre instance EC2
- Vous cliquez sur le bouton Actions
- Vous choisissez «Images > Create Image» et vous entrez les informations suivantes dans les champs du formulaire :
- Vous cliquez sur le bouton Create Image
Champ | Description |
---|---|
Image name | ami-nomduprojet-starterkit |
Image description | Starter kit for project |
No reboot | Vous ne cochez pas cette case |
Création d'un Launch Configuration
Vous devez allez dans EC2 et cliquez dans la colonne de gauche sur «Launch Configuration». Ensuite, vous cliquez sur le bouton Create Launch Configuration.
Step 1 : Choose AMI
Une fenêtre va s'ouvrir et dans la colonne de gauche, vous cliquez sur «My AMIs». Vous cliquez sur le bouton Select correspondant à votre «ami-nomduprojet-starterkit».
Step 2 : Choose Instance Type
Dans une situation normal, vous choisissez les paramètres suivants :
Champ | Description |
---|---|
Instance Type | m5.large |
Step 3. Configure details
Champ | Description |
---|---|
Name | cl-nomduprojet |
Purchasing option | |
IAM role | EC2-Labs |
Monitoring | [√] Enable CloudWatch detailed monitoring |
EBS-optimized instance | [ ] Ne pas cocher cette case |
Advanced Details | |
Kernel ID | Use default |
RAM Disk ID | Use default |
User data | Ne rien écrire |
IP Address Type | (*) Assign a public IP address to every instance. |
Ensuite, vous cliquez sur le bouton Next: Add Storage.
Step 4. Add Storage
Vous cochez les 2 volumes avec la mention «Delete on terminaison», puis vous cliquez sur le bouton Next: Configure Security Group.
Step 5. Configure Security Group
Vous sélectionnez l'option «(*) Select an existing security group» et vous choisissez les groupes de sécurité suivant :
Champ | Description |
---|---|
sg-xxxxxxxxxx | sg_nomduprojet_public |
sg-xxxxxxxxxx | sg_elb_nomduprojet |
sg-xxxxxxxxxx | sg_nomduprojet_rds |
sg-xxxxxxxx | default VPC security group |
sg-xxxxxxxx | sg_nomduprojet_DevOps |
Après, vous cliquez sur le bouton Review.
Step 6. Review
Vous cliquez sur le bouton Create Launch Configuration. Une fenêtre apparaît «Select an existing key pair or create a new key pair». Vous sélectionnez «Choose an existing key pair» et vous sélectionnez la clef de vos autres instances et vous cochez la case. Enfin, vous cliquez sur le bouton Launch Instances.
Création d'un Auto Scaling Group
Vous cliquez sur le bouton Create an Auto Scaling Group using this launch configuration. Note : Si vous avez cliqué par erreur à l'extérieur, vous pouvez cliquez sur le bouton Create Auto Scaling group dans l'«Auto Scaling Group», ensuite vous cliquez sur «Launch Configuration» et vous sélectionnez votre «Launch Configuration» que vous venez de créer.
Step 1 : Configure Auto Scaling group details
Champ | Description |
---|---|
Group name | nomduprojet |
Launch Configuration | cl-nomduprojet |
Group size | Start With : 1 Instances |
Network | vpc_nomduprojet |
Subnet | sb_nomduprojet_public_a |
Advanced Details | |
Load Balancing | [√] Receive traffic from one or more load balancers |
Classic Load Balancers | Laisser se champ vide |
Target Groups | tg-nomduprojet |
Health Check Type | (*) EC2 |
Health Check Grace Period | 300 |
Monitoring | [√] Enable CloudWatch detailed monitoring |
Instance Protection | Laisser se champ vide |
Service-Linked Role | Ce champ est rempli automatiquement |
Cliquez sur le bouton Next: Configure scaling policies.
Step 2. Configure scaling policies
Vous sélectionnez «Use scaling policies to adjust the capacity of this group». Ensuite, vous sélectionnez «Scale between [ 1 ] and [ 3 ] instances. These will be the minimum and maximum size of your group.». Enfin, vous rentrez les valeurs de champs suivants :
Champ | Description |
---|---|
Name | sgs_nomduprojet |
Metric type | Average CPU Utilization |
Target value | 96 |
Instances need | 300 |
Disable scale-in | [ ] ne pas cocher cette casse |
Et vous cliquez sur le bouton Next: Configure Notifications.
Step 3. Configure Notifications
Vous cliquez sur le bouton Add notification et vous choisissez le groupe par défaut :
Champ | Description |
---|---|
Send a notification to | sns_as_nomduprojet |
Whenever instances | [√] launch [√] terminate [√] fail to launch [√] fail to terminate |
Vous cliquez sur le bouton Next: Configure Tags.
Step 4. Configure Tags
Vous créez la clef suivante :
Clef (Key) | Valeur (Value) | Tag News Instasnces |
---|---|---|
Name | nomduprojet | [√] |
Projet | ec2-nomduprojet | [√] |
Vous cliquez sur le bouton Review.
Step 5. Review
Cliquez sur le bouton Create Auto Scaling Group. Vous cliquez sur le bouton Close. Si l'opération a bien fonctionner, une instance EC2 sera créé et visible dans «EC2 Dashboard». Dans le Target Group du «Load Balancer», vous cocher le Target Group que vous venez de créer, et aller dans l'onglet «Targets», et vous devriez voir votre instances dans «Registered targets».
Création d'un dépôt dans le compte de GitHub ou AWS CodeCommit pour le code source du projet
S'il s'agit de GitHub, vous allez sur GitHub et vous cliquez sur le bouton New pour créer votre dépôt. Si vous utilisez AWS CodeCommit, vous allez dans AWS CodeCommit et vous créez votre dépôt.
Create a new repository dans GitHub
Champ | Description |
---|---|
Owner | Indiquer votre nom d'entreprise, exemple : Gladir.com |
Repository name | nomduprojet |
Description | une description du projet (*) Private |
Vous cliquez sur le bouton Create repository.
Ajustement des options de sécurités de GitHub
Dans le dépôt nouvellement créé de GitHub, vous effectuez les étapes suivantes :
- Aller dans l'onglet «Settings».
- Aller dans le «Collabators & teams».
- Dans la section «Teams».
- Cliquez sur le bouton Add team.
- Choisir le nom du votre groupe TI.
- Ensuite, on doit changer le droit d'accès pour «Admin».
Commiter le code du projet dans GitHub
Vous ajoutez le code du projet dans le dépôt de GitHub approprié. Avec TortoiseGit :
- Vous créez un dossier «C:\www\nomduprojet» sur le poste en locale vide.
- Vous cliquez sur le menu contextuel dans un explorateur de fichier et choisissez l'option «Git Clone...».
- Vous entrez les informations suivantes :
- Entrer vos compte personnels pour entreprise pour vous connecter a GitHub. Vous copiez les fichiers du projet. Vous commitez les fichiers dans le projet avec l'Option «Commit → Master» :
Champ | Description |
---|---|
URL | https://github.com/monentreprise/nomduprojet |
Directory | C:\www\nomduprojet |
Cliquez sur le bouton Ok.
Champ | Description |
---|---|
Message | GL-000: Create project nomduprojet |
Changes made | Vous cliquez sur «All» pour sélectionner tous les fichiers. |
Créer un fichier a la racine du projet dans votre GitHub ou AWS CodeCommit nommé «appspec.yml» :
version: 0.0 os: linux files: - source: / destination: /var/www/html/nomduprojet hooks: BeforeInstall: - location: scripts/BeforeInstall.sh timeout: 300 runas: root AfterInstall: - location: scripts/AfterInstall.sh timeout: 300 runas: root permissions: - object: /var/www/html/nomduprojet/ pattern: "*" owner: ec2-user group: apache mode: 664 type: - file - object: /var/www/html/nomduprojet/ pattern: "*" owner: ec2-user group: apache mode: 775 type: - directory |
ATTENTION ! Le fichier «appspec.yml» doit être présent dans la racine du projet GitHub ou AWS CodeCommit et ne jamais être supprimer car sinon le déploiement ne marchera pas.
Cliquez sur le bouton Commit & Push.
Création AWS CodeDeploy / AWS CodePipeline
AWS CodeDeploy
Dans le menu AWS, aller dans «CodeDeploy». Dans la colonne de gauche, vous cliquez sur «Deploy». Ensuite, dans le noeud de Deploy, vous cliquez sur «Applications». Enfin, vous cliquez sur le bouton Create Application.
Step 1 : Create application
Champ | Description |
---|---|
Application name | app-nomduprojet |
Compute platform | EC2/On-premises |
Vous cliquez sur le bouton Create Application.
Step 2 : Create de deployment group
Une fois l'application créer, vous êtes automatiquement amener dans la page «CodeDeploy > Deploy > Applications > Application». Vous cliquez sur le bouton Create deployment group.
Champ | Description |
---|---|
Enter a deployment group name | dg-nomduprojet |
Choose a service role | EC2-nomduprojet |
Choose how to deploy your application | (*) Blue-Green |
Specify the Amazon EC2 Auto Scaling groups or Amazon EC2 instances where the current application revision is deployed. | (*) Automatically copy Amazon EC2 Auto Scaling group |
Choose the Amazon EC2 Auto Scaling group where the current application revision is deployed. | nomduprojet |
Traffic rerouting | Reroute traffic immediately |
Choose whether instances in the original environment are terminated after the deployment is succeeds, and how long to wait before termination. | Terminate the original instances in the deployment group |
Days 0 Hours 0 Minutes 0 | |
Deployment configuration | CodeDeployDefault.AllAtOnce |
Select a load balancer to manage incoming traffic during the deployment process. The load balancer blocks traffic from each instance while it's being deployed to and allows traffic to it again after the deployment succeeds. | (*) Application Load Balancer or Network Load Balancer |
Choose a load balancer | tg-nomduprojet |
Vous cliquez sur le bouton Create deployment group.
AWS Code Pipeline
Dans le menu «AWS», vous allez dans «CodePipeline». Vous cliquez sur «Pipelines» dans la colonne de gauche. Vous cliquez sur le bouton «Create CodePipeline».
Step 1 : Choose pipeline settings
Champ | Description |
---|---|
Pipeline name | pl-nomduprojet |
Service role | (*) New service role |
Role name | ...-pl-PRD-nomduprojet (se champ est construit automatiquement à partir du champ Pipeline name) |
Type your service role name | [√] Allow AWS CodePipeline to create a service role so it can be used with this new pipeline |
Artifact store | Default location |
Step 2 : Add source stage
Champ | Description |
---|---|
Source provider | GitHub si vous avez choisis GitHub plus haut |
Connect to GitHub | Cliquez sur le bouton Connect to GitHub allant apparaître. Ensuite sur la fenêtre allant apparaître, cliquez sur le bouton Authorise aws-codesuite |
Repository | monentreprise/nomduprojet |
Branch | master |
Change detection options | AWS CodePipeline |
Cliquez sur le bouton Next.
Step 3 : Add build stage
Champ | Description |
---|---|
(Build - optional) Build provider | on laisse se champ vide |
Vous cliquez sur le bouton Skip Build Stage et ensuite vous cliquez sur le bouton Skip.
Step 4 : Add deploy stage
Champ | Description |
---|---|
Deploy provider | AWS CodeDeploy |
Application name | app-nomduprojet |
Deployment group | dg-nomduprojet |
Vous cliquez sur le bouton Next.
Step 5 : Review
Vous cliquez sur le bouton Create Pipeline. Après cette étape, une instance EC2 sera créé. Le code sera deployé sur l'instance une fois créé.
Supprimer l'ancien Autoscalling
Aller dans EC2, dans Autoscalling Group. Vous cochez dans la liste nomduprojet. Ensuite, vous cliquez sur le bouton Action et choisir l'option «Delete».
Création d'un adresse d'envoi dans SES
Vous aller dans "AWS". Vous recherchez «SES» et choisissez «Simple Email Service».
Choisir la région
Note : Cette étape est optionnel, nous n'avons pas besoins de créer un nouvel utilisateur pour chaque site. Le service n'est pas disponible au Canada, il faut donc choisir «US East (N. Virgina)».
Choisir le SMTP
Note : Cette étape est optionnel, nous n'avons pas besoins de créer un nouvel utilisateur pour chaque site. Vous cliquez sur «SMTP Settings» dans la colonne de gauche. Vous cliquez sur le bouton Create My SMTP Crendentials.
Choisir un utilisateur IAM
Note : Cette étape est optionnel, nous n'avons pas besoins de créer un nouvel utilisateur pour chaque site.
Champ | Description |
---|---|
IAM User Name: | smtp_nomduprojet |
Vous cliquez sur le bouton Create.
Télécharger la clef
Note : Cette étape est optionnel, nous n'avons pas besoins de créer un nouvel utilisateur pour chaque site. Ensuite, on peut télécharger les informations d'authentification en téléchargeant le fichier avec le bouton Download Credentials.
Ajout du nom de domaine
Vous allez dans "AWS". Vous rechercher «SES» et choisissez «Simple Email Service». Vous cliquez sur «Domains» dans la liste de la colonne de gauche. Vous cliquez sur le bouton Verifiy Domain Name.
Champ | Description |
---|---|
Domain | www.monsite.com |
Generate DKIM Settings | [√] Cocher la case |
Vous cliquez sur le bouton Verify This Domain. Vous cliquez sur le bouton Use Route 53. Cliquez sur le bouton Create Route 53.
Ajout du nom de domaine sans "www"
Vous allez dans "AWS", vous recherchez «SES» et choisissez «Simple Email Service». Cliquez sur «Domains» dans la liste de la colonne de gauche. Cliquez sur le bouton Verifiy Domain Name.
Champ | Description |
---|---|
Domain | monsite.com |
Generate DKIM Settings | [√] Cocher la case |
Vous cliquez sur le bouton Verify This Domain. Vous cliquez sur le bouton Use Route 53. Cliquez sur le bouton Create Route 53.