Formation DevOps | Formation AWS Services : Workshop EC2

AWSDEV – WORKSHOP

AMAZON EC2

Si vous n’avez pas de compte AWS personnel :

Procédure de connexion avec le formateur : Se connecter à la console à l’URL suivante :

  1. S’authentifier avec le compte IAM

    • Nom d’utilisateur et mot de passe : remis par le formateur

  1. Se connecter à la console :

Si vous avez un compte AWS personnel : Connectez vous à la console directement .

EC2 : GETTING START

Objectifs :

  • Personnaliser une instance EC2 pour une réaliser une AMI
  • Utiliser le “user-data” de l’instance pour automatiser des tâches d’auto-configuration
  • Utiliser un bucket S3 pour stocker des données permettant de personnaliser une instance

Dans cet atelier, nous allons personnaliser un serveur afin d’en créer un modèle (AMI). Nous allons le partager avec un binôme afin qu’il puisse en démarrer une copie.

Dans un second scénario, nous allons utiliser le user-data de l’instance pour l’auto-configurer au démarrage (en utilisant un bucket S3 pour stocker les artifacts). Cela dispense d’utiliser un modèle de serveur, car la philosophie ici est de personnaliser “at boot time” une AMI générique, type AMI Linux.

Avant de procéder à la création de l’instance, il faut s’assurer de posséder une Key Pair qui permettra la connexion en SSH à l’instance depuis votre ordinateur.

Pour créer une Key Pair, aller dans le menu Service > EC2 > Key Pairs, puis cliquer sur « Create Key Pair ». Saisir le nom de son choix et télécharger la clé privée RSA sur l’ordinateur local :

Pour l’utiliser avec PuTTY plus tard, vous devrez suivre cette procédure : http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html - putty-private-key

Si Vous avez jamais utilisez Putty :

  1. Demander au formateur une demonstaration pour putty .

  2. Il y a aussi la console directe sur AWS qui permet de se connecter sur l’instance EC2 .

Commençons par créer un serveur que nous allons personnaliser. Aller dans le menu Services > EC2 > Instances > Launch Instance, et choisir une Amazon Linux 2 AMI (HVM), SSD Volume Type - ami-00798d7180f25aac2 (ebs, hvm) :

Choisir comme type d’instance une t2.micro :

Cliquer sur « Next : Configure Instance Details » (bien préciser tous les paramètres indiqués) :

Cliquer sur « Next : Add Storage » et ignorer cette étape (ne pas ajouter de stockage supplémentaire, laisser par défaut). Cliquer sur « Next : Add Tags » :

Cliquer sur « Next : Configure Security Group ». Créer une règle pour autoriser SSH, en indiquant l’adresse IP de sortie de votre réseau d’entreprise :

Cliquer sur « Review and launch » puis « Launch ».

Sélectionner la key pair et cliquer sur « Launch Instance » pour lancer la création.

Se connecter à l’instance et la personnaliser :

$ sudo su -
$ yum -y install httpd
$ systemctl start httpd.service
$ systemctl status httpd.service
$ echo “<HTML>Hello World “votre nom”</HTML>” > /var/www/html/index.html

Tester le serveur web dans un navigateur. Si l’accès ne fonctionne pas, revoir la configuration du Security Group en indiquant le port 80 est l’adresse IP de sortie des flux Web (attention, elle peut être différente de l’adresse IP de sortie pour SSH).

L’instance étant configurée correctement, on peut en réaliser une copie.

Via la console Web, stopper l’instance afin que la copie du volume EBS se fasse sans risquer un problème d’intégrité des données.

Toujours via la console Web, créer une AMI d’après l’instance :

Indiquer un nom et une description pour l’image :

On peut maintenant publier cette instance auprès du compte AWS du binôme. Dans le menu EC2 > AMI, sélectionner l’instance et cliquer sur « Modify image permissions » du menu « Action » :

Indiquer l’identifiant du compte AWS du binôme et cliquer sur « Add Permission » puis sur « Save » :

Le binôme doit réaliser la même opération, à savoir vous partager son AMI.

Il s’agit maintenant de créer une instance d’après l’AMI que le binôme a partagé.

Les AMIs privées auxquelles on a accès sont visibles après avoir sélectionné l’option « Private Images » dans la liste déroulante de recherche :

Attention si vous trouvez pas l’image faut que vérifier la région ou cette image était publier .

Sélectionner l’AMI du binôme et cliquer sur « Launch » (menu « Actions »). L’enchainement des opérations est le même que pour la création de l’instance au début du workshop (ne pas créer un nouveau Security Group mais réutiliser celui déjà créé).

Une fois l’instance créée et démarrée, tester la connexion depuis un navigateur Web.

Nous avons vu comment personnaliser une instance et en faire un modèle à copier (AMI).

Dans la suite du workshop, nous allons voir comment personnaliser une instance “at boot time”, en partant d’un modèle générique, sans utiliser d’AMI custom, et ceci grâce à l’utilisation du user-data.

L’instance doit pouvoir downloader un fichier HTML depuis un bucket S3, qu’elle va ensuite exposer via un serveur Web Apache.

Nous allons créer un bucket S3 dans lequel nous allons placer le fichier HTML (Menu Services > S3 > Create Bucket) :

Puis placer à la racine du bucket un fichier index.html contenant un « Hello World » :

Pour que l’instance puisse downloader des objets depuis ce bucket, il faut lui donner la permission via un rôle IAM à créer ec2_rôle .

Créer une policy S3access (startégie) : ( Vous pouvez choisir le nom de la policy et du role )

Ajouter suivant (en corrigeant le nom du bucket) :

{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: [
“s3:List*”,
“s3:Get*”
],
“Resource”: [
“arn:aws:s3:::myapprepobucket1/*”,
“arn:aws:s3:::myapprepobucket1”
]
}

    \]  

}

Nous sommes prêt à créer l’instance. Aller dans le menu Services > EC2 > Instances > Launch Instance et choisir une AMI Amazon Linux 2016.09 (ebs, hvm) :

Choisir comme type d’instance une t2.micro :

Cliquer sur « Next : Configure Instance Details ».

C’est dans le champ « User data » que l’on place le code qui permet l’auto-configuration de l’instance. Modifier le nom du bucket pour refléter votre environnement :

#!/bin/bash
sudo su
yum -y install httpd
chkconfig httpd on
systemctl start httpd.service
aws s3 cp s3://myapprepobucket1/index.html /var/www/html/index.html
/etc/init.d/httpd start
Aussi faut pas oublier de rajouter le rôle ec2_role dans le champs Rôle IAM :

Cliquer sur « Next : Add Storage » et ignorer cette étape (ne pas ajouter de stockage supplémentaire, laisser par défaut). Cliquer sur « Next : Add Tags » :

Cliquer sur « Next : Configure Security Group ». Sélectionner le Security Group créé plus tôt dans le workshop :

Cliquer sur « Review and launch » puis « Launch ».

Sélectionner la key pair et cliquer sur « Launch Instance » pour lancer la création.

Une fois l’instance créée et démarrée, tester la connexion depuis un navigateur Web.

Si la tentative d’accès à l’instance se termine en time-out, vérifier que le Security Group permet un accès sur le port 80, depuis votre poste (Menu EC2 > Security Groups) :


En cas d’erreur 403 ou 404, vérifier que l’instance peut accéder au bucket. Possède-t-elle un rôle IAM ?

Le rôle IAM permet-il l’accès en lecture au bucket (afficher la policy S3access et vérifier que le rôle peut a minima accéder en lecture au bucket) ?

Pour information, les logs d’exécution du user-data sont visible dans le fichier /var/log/cloud-init-output.log de l’instance.

2- Partie :

On va créer une instance EC2 à l’aide de la ligne de commande aws ec2 :

Documentation de la AWS EC2 :

https://docs.aws.amazon.com/cli/latest/userguide/cli-services-ec2-instances.html

Exemple de cli:

aws ec2 run-instances --image-id ami-173d747e --count 1 --instance-type t2.micro --key-name MyKeyPair --security-group-ids my-sg-id

IL faut configurer aws cli avec la commande :

  • aws configure.

On trouve les Tokens : liens rapides : Acces keys :

Ensuite tester que tout marche bien en allant sur le dashboard pour voir les instances .

Finalement supprimer l’instance avec la CLI de aws ec2.

aws ec2 terminate-instances --instance-ids i-1234567890abcdef0

3-Partie Terraform : Terraform by HashiCorp

Terraform un outil d’automatisation pour le lancement de EC2

________________________________________________UBUNTU__________________________________________________

sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl

curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -

sudo apt-add-repository “deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main”

sudo apt-add-repository “deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main”

sudo apt-get update && sudo apt-get install terraform

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo
sudo yum -y install terraform

-——————————————————————————

  • terraform -help

créer un main.tf :

Ensuite aws configure pour la configuration de aws cli avec les acces key :

provider “aws” {
profile = “default”
region = “eu-west-3”
}

resource “aws_instance” “app_server” {
ami = “ami-830c94e3”
instance_type = “t2.micro”

tags = {
Name = “ExampleAppServerInstance”
}
}

Ensuite

  • terraform init

  • Terraform plan

  • Terraform apply

Terminer le workshop :

  • Terminer toutes les instances
  • Supprimer l’AMI (unregister)
  • Supprimer le bucket






Decouvrez plus d’Offres de la plateform ItGalaxy.io :

Découvrez notre gamme complète de services et formations pour accélérer votre carrière.

1. Nous contactez

  • Description: Besoin de Formation et des Solutions cloud complètes pour vos applications
  • Links:

2. Infra as a Service

  • Description: Infrastructure cloud évolutive et sécurisée
  • Links:

3. Projets Développeurs


4. Développeurs


5. Formations Complètes


6. Marketplace

7. Blogs


This website is powered by ItGalaxy.io