Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Exemple 9 : utilisation des EC2 instances Amazon
Important
Le AWS OpsWorks Stacks le service a pris fin le 26 mai 2024 et a été désactivé tant pour les nouveaux clients que pour les clients existants. Nous recommandons vivement aux clients de migrer leurs charges de travail vers d'autres solutions dès que possible. Si vous avez des questions sur la migration, contactez le AWS Support L'équipe sur AWS Re:post ou via
Jusqu'à présent, vous avez exécuté des instances localement dans VirtualBox. Bien que cela soit simple et rapide, vous souhaiterez éventuellement tester vos recettes sur une EC2 instance Amazon. En particulier, si vous souhaitez exécuter des recettes sur Amazon Linux, celles-ci ne sont disponibles que sur AmazonEC2. Vous pouvez utiliser un système similaire tel que CentOS pour la mise en œuvre et les tests préliminaires, mais le seul moyen de tester complètement vos recettes sur Amazon Linux est d'utiliser une instance AmazonEC2.
Cette rubrique explique comment exécuter des recettes sur une EC2 instance Amazon. Vous allez utiliser Test Kitchen et Vagrant plus ou moins de la même manière que dans les sections précédentes, avec deux différences :
-
Le pilote est
kitchen-ec2
au lieu de Vagrant. -
Le
.kitchen.yml
fichier du livre de recettes doit être configuré avec les informations requises pour lancer l'EC2instance Amazon.
Note
Une autre approche consiste à utiliser le plug-in vagrant-aws
de Vagrant. Pour plus d'informations, consultez Vagrant AWS Provider
Vous aurez besoin d'AWSinformations d'identification pour créer une EC2 instance Amazon. Si vous n'avez pas de AWS compte, vous pouvez en obtenir un de la manière suivante.
Inscrivez-vous pour un Compte AWS
Si vous n'avez pas de Compte AWS, procédez comme suit pour en créer un.
Pour vous inscrire à un Compte AWS
Ouvrez l'https://portal.aws.amazon.com/billing/inscription.
Suivez les instructions en ligne.
Dans le cadre de la procédure d‘inscription, vous recevrez un appel téléphonique et vous saisirez un code de vérification en utilisant le clavier numérique du téléphone.
Lorsque vous vous inscrivez à un Compte AWS, une Utilisateur racine d'un compte AWSest créé. L'utilisateur root a accès à tous Services AWS et les ressources du compte. La meilleure pratique de sécurité consiste à attribuer un accès administratif à un utilisateur, et à utiliser uniquement l‘utilisateur racine pour effectuer les tâches nécessitant un accès utilisateur racine.
AWS vous envoie un e-mail de confirmation une fois le processus d'inscription terminé. À tout moment, vous pouvez consulter l'activité actuelle de votre compte et gérer votre compte en accédant à https://aws.amazon.com/
Création d'un utilisateur doté d'un accès administratif
Après avoir souscrit à un Compte AWS, sécurisez votre Utilisateur racine d'un compte AWS, activer AWS IAM Identity Center, et créez un utilisateur administratif afin de ne pas utiliser l'utilisateur root pour les tâches quotidiennes.
Sécurisez votre Utilisateur racine d'un compte AWS
-
Connectez-vous au AWS Management Console
en tant que propriétaire du compte en choisissant Utilisateur root et en saisissant votre Compte AWS adresse e-mail. Sur la page suivante, saisissez votre mot de passe. Pour obtenir de l'aide pour vous connecter à l'aide de l'utilisateur root, consultez la section Connexion en tant qu'utilisateur root dans Connexion à AWS Guide de l'utilisateur.
-
Activez l'authentification multifactorielle (MFA) pour votre utilisateur root.
Pour obtenir des instructions, voir Activer un MFA appareil virtuel pour votre Compte AWS utilisateur root (console) dans le guide de IAM l'utilisateur.
Création d'un utilisateur doté d'un accès administratif
-
Activez IAM Identity Center.
Pour obtenir des instructions, voir Activation AWS IAM Identity Center dans le .AWS IAM Identity Center Guide de l'utilisateur.
-
Dans IAM Identity Center, accordez un accès administratif à un utilisateur.
Pour un didacticiel sur l'utilisation du Répertoire IAM Identity Center comme source d'identité, voir Configurer l'accès utilisateur avec la valeur par défaut Répertoire IAM Identity Center dans le .AWS IAM Identity Center Guide de l'utilisateur.
Connexion en tant qu‘utilisateur doté d'un accès administratif
-
Pour vous connecter avec votre utilisateur IAM Identity Center, utilisez l'URLidentifiant envoyé à votre adresse e-mail lorsque vous avez créé l'utilisateur IAM Identity Center.
Pour obtenir de l'aide pour vous connecter à l'aide d'un utilisateur d'IAMIdentity Center, consultez la section Connexion au AWS portail d'accès dans le Connexion à AWS Guide de l'utilisateur.
Attribution d'un accès à d'autres utilisateurs
-
Dans IAM Identity Center, créez un ensemble d'autorisations conforme à la meilleure pratique consistant à appliquer les autorisations du moindre privilège.
Pour obtenir des instructions, voir Créer un ensemble d'autorisations dans le AWS IAM Identity Center Guide de l'utilisateur.
-
Attribuez des utilisateurs à un groupe, puis attribuez un accès par authentification unique au groupe.
Pour obtenir des instructions, voir Ajouter des groupes dans le AWS IAM Identity Center Guide de l'utilisateur.
Vous devez créer un IAM utilisateur autorisé à accéder à Amazon EC2 et enregistrer les clés d'accès et secrètes de l'utilisateur dans un emplacement sécurisé sur votre poste de travail. Test Kitchen utilisera ces informations d'identification pour créer l'instance. Le meilleur moyen de fournir des informations d'identification pour Test Kitchen est d'affecter les clés aux variables d'environnement suivantes sur votre poste de travail.
Avertissement
IAMles utilisateurs ont des informations d'identification à long terme, ce qui présente un risque de sécurité. Pour atténuer ce risque, nous vous recommandons de ne fournir à ces utilisateurs que les autorisations dont ils ont besoin pour effectuer la tâche et de supprimer ces utilisateurs lorsqu'ils ne sont plus nécessaires.
-
AWS_ACCESS_ KEY — la clé d'accès de votre utilisateur, qui AKIAIOSFODNN7EXAMPLE ressemblera à
-
AWS_SECRET_ KEY — la clé secrète de votre utilisateur, qui ressemblera à wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY.
Cette approche réduit les risques de compromission accidentelle de votre compte, par exemple, en chargeant un projet qui contient vos informations d'identification dans un référentiel public.
Pour configurer le livre de recettes
-
Pour utiliser le pilote
kitchen-ec2
, le packageruby-dev
doit être installé sur votre système. L'exemple de commande suivant montre comment utiliseraptitude
pour installer le package sur un système Ubuntu.sudo aptitude install ruby1.9.1-dev
-
Le pilote
kitchen-ec2
est un GEM que vous pouvez installer comme suit :gem install kitchen-ec2
En fonction de votre poste de travail, cette commande peut nécessiter
sudo
, ou vous pouvez également utiliser un gestionnaire d'environnement Ruby tel que RVM. Cette procédure a été testée avec la version 0.8.0 du pilote kitchen-ec2
pilote, mais il y a des versions plus récentes. Pour installer une version spécifique, exécutez gem install kitchen-ec2 -v <
.version number
> -
Vous devez spécifier une paire de EC2 SSH clés Amazon que Test Kitchen peut utiliser pour se connecter à l'instance. Si vous ne possédez pas de paire de EC2 clés Amazon, consultez Amazon EC2 Key Pairs pour savoir comment en créer une. Notez que la paire de clés doit appartenir à la même AWS région que l'instance. L'exemple utilise l'ouest des États-Unis (Californie du Nord).
Une fois que vous avez sélectionné une paire de clés, créez un sous-répertoire d'
opsworks_cookbooks
nomméec2_keys
et copiez la clé privée de la paire de clés (.pem
) dans ce sous-répertoire. Notez que le fait de placer la clé privée dansec2_keys
permet uniquement de simplifier légèrement le code, mais que cette clé peut se trouver n'importe où sur votre système. -
Créez un sous-répertoire d'
opsworks_cookbooks
, nommécreatedir-ec2
et accédez à celui-ci. -
Ajoutez un fichier
metadata.rb
àcreatedir-ec2
avec le contenu suivant.name "createdir-ec2" version "0.1.0"
-
Initialisez Test Kitchen, comme décrit dans Exemple 1 : Installation des packages. La section suivante décrit la procédure de configuration
.kitchen.yml
, ce qui est nettement plus compliqué pour les EC2 instances Amazon. -
Ajoutez un sous-répertoire
recipes
àcreatedir-ec2
.
Configuration de .kitchen.yml pour Amazon EC2
Vous configurez .kitchen.yml
avec les informations dont le kitchen-ec2
pilote a besoin pour lancer une EC2 instance Amazon correctement configurée. Voici un exemple de .kitchen.yml
fichier pour une instance Amazon Linux dans la région de l'ouest des États-Unis (Californie du Nord).
driver: name: ec2 aws_ssh_key_id: US-East1 region: us-west-1 availability_zone: us-west-1c require_chef_omnibus: true security_group_ids:
sg........
subnet_id:subnet-.........
associate_public_ip: true interface: dns provisioner: name: chef_solo platforms: -name: amazon driver: image_id:ami-xxxxxxxx
transport: username: ec2-user ssh_key: ../ec2_keys/US-East1.pem suites: - name: default run_list: - recipe[createdir-ec2::default] attributes:
Vous pouvez utiliser les paramètres par défaut pour les sections provisioner
et suites
, mais vous devez modifier les paramètres par défaut driver
et platforms
. Cet exemple utilise une liste minimale de paramètres et accepte les valeurs par défaut pour le reste. Pour une liste complète des kitchen-ec2
paramètres, consultez Kitchen : :Ec2 : A Test Kitchen Driver for Amazon
L'exemple définit les attributs driver
suivants. Il part du principe que vous avez attribué des clés secrètes et d'accès de l'utilisateur aux variables d'environnement standard, comme indiqué plus tôt. Le pilote utilise ces clés par défaut. Sinon, vous devez spécifier explicitement les clés en ajoutant aws_access_key_id
et aws_secret_access_key
aux attributs driver
, définis sur les valeurs clés appropriées.
- name
-
(Obligatoire) Cet attribut doit être défini sur
ec2
. - aws_ssh_key_id
-
(Obligatoire) Le nom de la paire de EC2 SSH clés Amazon, nommé
US-East1
dans cet exemple. - transport.ssh_key
-
(Obligatoire) Le fichier de clé privée (
.pem
) pour la clé que vous avez spécifiée pouraws_ssh_key_id
. Pour cet exemple, le fichier est nomméUS-East1.pem
et se trouve dans le répertoire../opsworks/ec2_keys
. - region
-
(Obligatoire) AWS Région de l'instance. L'exemple utilise l'ouest des États-Unis (Californie du Nord), représenté par
us-west-1
). - availability_zone
-
(Facultatif) La zone de disponibilité de l'instance. Si vous omettez ce paramètre, Test Kitchen utilise une zone de disponibilité par défaut pour la région spécifiée, à savoir l'ouest
us-west-1b
des États-Unis (Californie du Nord). Toutefois, il est possible que la zone par défaut ne soit pas disponible pour votre compte. Dans ce cas, vous devez spécifier explicitement une zone de disponibilité. Il se trouve que le compte utilisé pour préparer les exemples ne prend pas en chargeus-west-1b
et l'exemple spécifie explicitementus-west-1c
. - require_chef_omnibus
-
Lorsqu'il est défini sur
true
, ce paramètre veille à ce que le programme d'installation général soit utilisé pour installerchef-client
sur toutes les instances de la plateforme. - security_group_ids
-
(Facultatif) Liste des groupes de sécurité IDs à appliquer à l'instance. Ce paramètre applique le groupe de sécurité
default
à l'instance. Assurez-vous que les règles d'entrée du groupe de sécurité autorisent les SSH connexions entrantes, sinon Test Kitchen ne pourra pas communiquer avec l'instance. Si vous utilisez le groupe de sécuritédefault
, vous devrez peut-être le modifier en conséquence. Pour plus d'informations, consultez Amazon EC2 Security Groups. - subnet_id
-
L'ID du sous-réseau cible de l'instance, le cas échéant.
- associate_public_ip
-
Vous pouvez demander EC2 à Amazon d'associer une adresse IP publique à l'instance si vous souhaitez pouvoir accéder à l'instance depuis Internet.
- interface
-
Le type de configuration du nom d'hôte que vous utilisez pour accéder à l'instance. Les valeurs valides sont
dns
,public
,private
ouprivate_dns
. Si vous ne spécifiez pas de valeur pour cet attribut,kitchen-ec2
définit la configuration du nom d'hôte dans l'ordre suivant. Si vous omettez cet attribut, le type de configuration n'est pas défini.-
DNSnom
-
Adresse IP publique
-
Adresse IP privée
-
DNSNom privé
-
Important
Plutôt que d'utiliser les informations d'identification de votre compte pour les clés d'accès et les clés secrètes, vous devez créer un utilisateur et fournir ces informations d'identification à Test Kitchen. Pour plus d'informations, consultez la section Meilleures pratiques pour la gestion des clés AWS d'accès.
Veillez à ne pas le placer .kitchen.yml
dans un emplacement accessible au public, par exemple en le téléchargeant dans un dépôt public GitHub ou Bitbucket. Vous risqueriez d'exposer vos informations d'identification et de compromettre la sécurité de votre compte.
Le pilote kitchen-ec2
fournit la prise en charge par défaut pour les plateformes suivantes :
-
ubuntu-10.04
-
ubuntu-12.04
-
ubuntu-12.10
-
ubuntu-13.04
-
ubuntu-13.10
-
ubuntu-14.04
-
centos-6.4
-
debian-7.1.0
-
Windows-2012r2
-
Windows-2008r2
Si vous souhaitez utiliser une ou plusieurs de ces plateformes, ajoutez les noms de plateforme appropriés à platforms
. Le kitchen-ec2
pilote sélectionne automatiquement un nom d'utilisateur approprié AMI et génère un nom SSH d'utilisateur. Vous pouvez utiliser d'autres plateformes (cet exemple utilise Amazon Linux), mais vous devez spécifier explicitement les attributs suivants. platforms
- name
-
Le nom de la plateforme. Cet exemple utilise Amazon Linux, donc
name
est défini suramazon
. - driver
-
Les attributs
driver
, qui incluent les éléments suivants :-
image_id
— Celui de la plateformeAMI, qui doit appartenir à la région spécifiée. L'exemple utiliseami-ed8e9284
un Amazon Linux AMI de la région de l'ouest des États-Unis (Californie du Nord). -
transport.username
— Le nom SSH d'utilisateur que Test Kitchen utilisera pour communiquer avec l'instance.Utilisez
ec2-user
pour Amazon Linux. D'autres AMIs peuvent avoir des noms d'utilisateur différents.
-
Remplacez le code de .kitchen.yml
par l'exemple et attribuez les valeurs appropriées à des attributs propres au compte, par exemple aws_access_key_id
.
Exécution de la recette
Cet exemple utilise la recette de Itération.
Pour exécuter la recette
-
Créez un fichier nommé
default.rb
avec le code suivant et enregistrez-le dans le dossierrecipes
du livre de recettes.directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end
-
Exécutez
kitchen converge
pour exécuter la recette. Notez que l'exécution de cette commande prendra plus de temps que dans les exemples précédents en raison du temps nécessaire au lancement et à l'initialisation d'une EC2 instance Amazon. -
Accédez à la EC2console Amazon
, sélectionnez la région USA Ouest (Californie du Nord), puis cliquez sur Instances dans le volet de navigation. Vous verrez l'instance nouvellement créée dans la liste. -
Exécutez
kitchen login
pour vous connecter à l'instance, comme vous l'avez fait pour les instances en cours d'exécution VirtualBox. Vous verrez les répertoires nouvellement créés sous/srv
. Vous pouvez également utiliser votre SSH client préféré pour vous connecter à l'instance.