Projet Infrasphere
Projet pro : REAC TSSR avec AWS
Introduction
Dans le cadre de la formation TSSR, je dois réaliser un dossier professionnel en indiquant chaque compétences à des tâches, effectuées dans le cadre du stage ou de la formation.
Intéressé par le Cloud et le DevOps, j’ai décidé d'orienter mon dossier pro avec des tâches sur le Cloud, en particulier AWS. Je n'oublie pas d'implémenter des outils utilisés on premise comme HAProxy pour le Load Balancer.
L’objectif est de définir dans un premier temps les fonctionnalités essentielles et quelles tâches à soumettre. Il faut prévoir une évolution si j’arrive à valider les fonctionnalités essentielles.
Ce document servira de fil rouge à la rédaction du dossier pro.
Suivi du projet
REAC
Service(s) AWS
Notes / Tâches à effectuer
Evolution
Assurer le support utilisateur en centre de services
Amazon Connect
Version gratuite bas de gamme attention aux coût des appli synchronisés
Non prioritaire
Terminé (hors projet)
Exploiter des serveurs Windows et un domaine
Active Directory
EC2
Non prioritaire
Exploiter des serveurs Linux
EC2
Nginx
1
En cours
Exploiter un réseau IP
VPC - Loadbalancer
SecG ; ACL ; VPN
SSL
bastion
2
En cours
Maintenir des serveurs dans une infrastructure
virtualisée
EC2 + Monitoring
Vertical/Horizontal scaling Log Rôle IAM=> EC2 Nginx
3
En cours
Automatiser des tâches à l’aide de scripts
Ensemble des ressources du projet seront déployées
IAM => création users / group / rôles
Instances EC2 ? 4 x2
0 Terraform & ansible ???
En cours
Maintenir et sécuriser les accès à Internet et les
interconnexions des réseaux
VPC
VPN
Cloudwatch / trail
Firewall - portforwarding (port personnalisé) WAF
AWS Certificate Manager
1 (Bastion) 4 (VPN)
En cours
Mettre en place, assurer et tester les sauvegardes et
les restaurations des éléments de l’infrastructure
S3 + S3 Glacier
Backup restore (AWS Backup)
(Snapshot)
Lifecycle management
3 2 2 1 0
5
Pas commencé
Exploiter et maintenir les services de déploiement des
postes de travail.
AWS Workspace
PCoIP Liens IAM et DVI
pour sécuriser l’espace de travail
6
Non prioritaire
Prendre en compte les Availability Zones pour la redondance
Automatiser des tâches à l’aide de script
Installation et configuration AWS CLI
Télécharger le CLI soit via un fichier msi, soit en ligne de commande (ok avec Linux / Windows). Langage en bash
On s’assure de l’installation :
Pour faire communiquer nos services AWS, on va rentrer des identifiants particuliers d’un utilisateur de notre organisation. En effet, nous allons créer une clé de connexion entre notre utilisateur vers notre CLI.
Nous n'utilisons pas le compte root mais un compte aux droits admin (créé préalablement sur l’interface IAM d’AWS).
Exemple de commande : pour lister les EC2 AMI Images
aws --output table ec2 describe-images --filters "Name=description,Values=*Amazon Linux 2*" "Name=owner-alias,Values=amazon"
output format (texte, table, json, yaml)
top lvl command => aws services
subcommand, Actual command (on peut trouver create, delete, enable, disable, modify, request, stop, terminate)
options (peut contenir –region ; –output ; –profile ou –dry-run pour lancer une commande sans l’exécuter (très bien pour le testing))
La commande aws help ouvre l’aide classique. On peut aussi utiliser aws s3 help spécifique pour le S3 et, plus loin, aws s3 website help.
Création du VPC 1 :
aws ec2 create-vpc \
--cidr-block 10.0.0.0/24 \
--tag-specification ResourceType=vpc,Tags=[{Key=Name,Value=MyVpc}]
Création du VPC 2 :
aws ec2 create-vpc \
--cidr-block 10.0.1.0/24 \
--tag-specification ResourceType=vpc,Tags=[{Key=Name,Value=MyVpc}]
Création subnet 1a :
root@L-FR-5CG13310XP:~# aws ec2 create-subnet \
--vpc-id vpc-024b85f09852e2329 \
--cidr-block 10.0.0.0/28
-- availability-zone eu-west-3a
--tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=XXXXX}]'
Même chose pour les autres subnets où on modifiera le CIDR et/ou le vpc id et/ou la AZ.
Dans un sous-réseau AWS, il y a un total de 5 IP réservées. En plus du réseau et la broadcast : 10.0.0.1: Reserved by AWS for the VPC router.
10.0.0.2: Reserved by AWS. The IP address of the DNS server is the base of the VPC network range plus two. For VPCs with multiple CIDR blocks, the IP address of the DNS server is located in the primary CIDR. We also reserve the base of each subnet range plus two for all CIDR blocks in the VPC. For more information, see Amazon DNS server.
10.0.0.3: Reserved by AWS for future use.
Création d’une EC2, comporte plusieurs éléments :
$ aws ec2 run-instances --image-id ami-xxxxxxxx --count 1 --instance-type t2.micro --key-name MyKeyPair --security-group-ids sg-903004f8 --subnet-id subnet-6e7f829e
ou
aws ec2 run-instances --image-id ami-04681a1dbd79675a5 \
--count 1 \
--instance-type r5d.large \
--key-name newcluster \
--security-group-ids sg-007e43f80a1958f29 \
--subnet-id subnet-970ec2f0 \
--user-data file://my_script.sh \
--tag-specifications \
'ResourceType=instance,Tags=[{Key=backend,Value=inventory1}]'
Amazon Linux 2023 : ami-0facbf2a36e11b9dd
Amazon Linux 2022 : ami-0720246d895625a23
count pour indiquer le nombre
instance-type pour indiquer les configs de l’instance (on utilisera t2.micro)
aws ec2 create-security-group --group-name SecVPC1 --description "GroupSecVPC1" --vpc-id vpc-024B85f09852e2329
Le CIDR est celui d’un VPC
aws ec2 authorize-security-group-ingress \
--group-id sg-02ccf2fcd4a46c14c \
--protocol tcp \
--port 22 \
--cidr 10.0.0.0/24
Lancement d’une EC2 en prenant en compte les paramètres créés précédemment :
aws ec2 run-instances --image-id ami-0facbf2a36e11b9dd \
--count 1 \
--instance-type t2.micro \
--key-name key-pair1a \
--security-group-ids sg-02ccf2fcd4a46c14c \
--subnet-id subnet-020bcec891b3d77c2 \
--user-data file://monscript.sh
Sécurisation du serveur web :
AWS Certificate manager :
AWS WAF : Firewall idéal pour les serveurs web.
certificat ssl
Mettre en ligne le serveur web
Lancer instance EC2
Installer nginx (yum) Aller dans le fichier config /etc/nginx/nginx.conf
ajouter listen 80
ajouter listen 443 ssl
des difficultés pour créer le certificat, faire attention aux syntaxes de la configuration (commande utile : sudo nginx -t)
Bonne config :
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
listen 443 ssl;
server_name vicexplore.cloud;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/errors;
}
location / {
root /var/www/vicexplore.cloud;
index index.html;
}
ssl_certificate "/etc/letsencrypt/live/vicexplore.cloud/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/vicexplore.cloud/privkey.pem";
}
Il faut créer une page index.html avec un petit message du style :
GNU nano 5.8 index.html <html><body><h1>Victor continue d'explorer le Cloud ... avec AWS ! !</h1></body></html>
Si problème de “double écoute” des ports 80 et 443 :
sudo pkill -f nginx & wait $!
sudo pkill -f nginx & wait $! : Cette commande utilise pkill pour arrêter tous les processus Nginx en cours d'exécution. Le & wait $! permet d'attendre que la commande se termine avant de continuer.
Vraiment bien vérifier le fichier de destination index.html
Pour tester notre site, on écrit bien l’URL COMPLÈTE
#!/bin/bash
yum update -y
yum install nginx -y
echo "<html><body><h1>Vic explore le cloud !</h1></body></html>" >/var/www/vicexplore.cloud/index.html
systemctl start nginx
systemctl enable nginx
LOAD BALANCING
Utilisation de HAProxy
Configuration :
global
log /dev/log local5 debug
chroot /var/lib/haproxy
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
frontend myapp_front
bind *:80
default_backend myapp_back
backend myapp_back
balance roundrobin
server srv_nginx 13.38.104.99:80
server srv_apache 172.31.19.252:80
Last updated