Lancer une instance EC2 à partir de votre CLI
Ce tutoriel décrit de manière très basique les étapes à suivre pour utiliser Terraform afin de démarrer une instance d’AWS EC2 et de s’y connecter en SSH. Veuillez noter que ce tutoriel s’adresse aux débutants absolus.
Pour commencer, nous devons installer gnupg et software-properties-common, s’ils ne sont pas déjà présents. Cette étape suit les instructions mentionnées dans la documentation officielle de Terraform.
sudo apt-get update
sudo apt-get install -y gnupg software-properties-common
Après les avoir installés, nous devons ajouter la clé GPG de HashiCorp au système Ubuntu.
wget -O- https://apt.releases.hashicorp.com/gpg | \
gpg --dearmor | \
sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
Maintenant, ajoutons le dépôt HashiCorp à Ubuntu. Ce dépôt nous permettra de trouver le logiciel Terraform sur Internet.
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/hashicorp.list
Enfin, il est temps d’installer Terraform lui-même.
sudo apt-get update
sudo apt-get install terraform
Une fois l’installation terminée, vérifions si elle s’est déroulée correctement à l’aide de cette commande :
terraform --version
Maintenant que Terraform est installé, il est temps d’installer AWSCLI, l’utilitaire pour configurer notre AWS avec des identifiants.
Bien qu’il y ait plusieurs façons d’installer AWSCLI, nous utiliserons la méthode prescrite dans la documentation officielle d’Amazon.
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
Une fois de plus, nous vérifions l’installation réussie d’AWSLI en vérifiant sa version en tapant la commande suivante :
aws --version
Créez un compte AWS avec un niveau gratuit si vous n’en avez pas encore. Allez ensuite dans votre profil et cherchez Credentials. Nous utiliserons ces informations d’identification pour nous connecter à AWS à partir du CLI.
Maintenant, dans le terminal, nous tapons la commande suivante
aws configure
AWS nous propose de coller ou de taper les éléments suivants un par un. Appuyez sur la touche « Entrée » après avoir collé chaque ligne. Notez que [none] signifie qu’il n’y a pas encore de données configurées pour cette touche.
Access Key [none]: <paste access key here>
Secret Key [none]: <paste secrete key here>
Region [none]: us-east-1
Output format [none]: <leave this blank>
Nous avons maintenant configuré notre AWSCLI pour accéder au compte AWS, mais ce n’est pas suffisant pour lancer une instance EC2. Pour cela, nous avons besoin d’une paire de clés.
Sidenote : Cet article utilise le compte root dans AWS et ne prend en compte aucun point de vue de sécurité. Il est généralement conseillé de créer un compte utilisateur IAM et d’utiliser des limites de permission.
Une fois encore, nous confirmons que tout est en place en procédant à une vérification. Voir, c’est croire.
cd /.aws
cat credentials
Dans le tableau de bord AWS, allez à EC2 et dans la navigation de gauche, allez à Keypair. Cliquez sur Create.
Donnez un nom approprié au fichier de la paire de clés, sélectionnez RSA et PEM et cliquez sur Save. Cela téléchargera le fichier PEM sur le système.
Dans le terminal, créez un dossier pour votre projet.
mkdir projectfolder
Si vous ne pouvez pas accéder au fichier PEM téléchargé pour une raison quelconque (par exemple, si vous êtes dans une machine virtuelle à l’intérieur d’une machine hôte), vous pouvez le créer dans le terminal.
sudo nano keyfile.pem
Copiez-collez le contenu du fichier de paires de clés téléchargé dans la fenêtre nano du terminal. Appuyez sur ctrl + x + y pour enregistrer le fichier.
Nous allons maintenant changer les permissions de ce fichier clé, sans quoi EC2 rejettera notre connexion.
sudo chmod 400 keyfile.pem
Nous utiliserons ce fichier de paires de clés pour nous connecter en mode ssh à l’instance EC2 nouvellement créée.
Maintenant que les prérequis sont en place, créons un plan Terraform et appliquons-le pour créer notre instance.
cd projectfolder
Une fois dans le dossier, créez le fichier Terraform creds qui contiendra les mêmes informations d’identification que celles utilisées pour AWSCLI.
sudo nano creds.tf
provider "aws" {
access_key = "<your aws access key>"
secret_key = "<your aws secret key"
region = "<your aws region>"
}
Il est maintenant temps de créer le script Terraform principal qui exécutera les commandes pour lancer notre instance EC2.
sudo nano main.tf
resource "aws_instance" "myproject" {
ami = "ami-2757f631"
instance_type = "t2.micro"
key_name = "ec2tf"
}
Le plan Terraform est maintenant prêt et nous devons le lancer.
terraform init
Une fois la configuration initialisée, nous devons l’appliquer pour que Terraform crée notre instance EC2.
terraform apply
Lorsque vous y êtes invité, tapez yes
Terraform va maintenant commencer à créer l’instance EC2. Cela peut prendre un certain temps en fonction de l’image.
Pour vérifier la création de l’instance, allez sur le tableau de bord EC2 et voyez l’instance nouvellement créée en cours d’exécution.
La raison pour laquelle j’ai initié mon instance à l’aide d’un fichier de paires de clés était de pouvoir m’y connecter en SSH après sa création. Et nous allons voir comment cela devient très facile maintenant.
La première étape est d’aller sur le tableau de bord EC2 et de cliquer sur Security Groups.
Sélectionnez le groupe de sécurité et cliquez sur l’onglet Inbound Rules. Cliquez sur Editer les règles de réception.
Une règle par défaut a déjà été ajoutée.
Cliquez sur Ajouter une règle et sélectionnez le protocole SSH et la source Custom. Cliquez sur le champ de recherche à côté de Custom et sélectionnez 0.0.0.0/0 et enregistrez la règle.
L’instance EC2 est maintenant prête à accepter les connexions SSH entrantes.
Avant de continuer, nous avons besoin de l’adresse DNS IPv4 publique de l’instance. Sélectionnez votre instance dans Instances dans le menu latéral.
Maintenant, pour se connecter à l’instance EC2, nous tapons ce qui suit
sudo ssh -i "keyfile.pem" ubuntu@ip4-public-dns
[!tip] Amazon AWS a des noms d’utilisateur par défaut pour les AMIs en fonction du type d’image qui peut être trouvé sur ici
Lorsque vous y êtes invité, tapez yes.
Nous avons ainsi réussi à nous connecter à notre nouvelle instance EC2 à l’aide de SSH.
AWS EC2 User Guides - Connection Prerequisites
AWS EC2 User Guides - Accessing Instances using SSH
Provisioning EC2 Keypairs with Terraform