Exemple 9 : utilisation des EC2 instances Amazon - AWS OpsWorks

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 AWS Support premium.

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
  1. Ouvrez l'https://portal.aws.amazon.com/billing/inscription.

  2. 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/et en choisissant Mon compte.

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
  1. Connectez-vous au AWS Management Consoleen 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.

  2. 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
  1. Activez IAM Identity Center.

    Pour obtenir des instructions, voir Activation AWS IAM Identity Center dans le .AWS IAM Identity Center Guide de l'utilisateur.

  2. 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
  1. 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.

  2. 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
  1. Pour utiliser le pilote kitchen-ec2, le package ruby-dev doit être installé sur votre système. L'exemple de commande suivant montre comment utiliser aptitude pour installer le package sur un système Ubuntu.

    sudo aptitude install ruby1.9.1-dev
  2. 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écessitersudo, 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>.

  3. 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 dans ec2_keys permet uniquement de simplifier légèrement le code, mais que cette clé peut se trouver n'importe où sur votre système.

  4. Créez un sous-répertoire d'opsworks_cookbooks, nommé createdir-ec2 et accédez à celui-ci.

  5. Ajoutez un fichier metadata.rb à createdir-ec2 avec le contenu suivant.

    name "createdir-ec2" version "0.1.0"
  6. 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.

  7. 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. EC2

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 pour aws_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é parus-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 charge us-west-1b et l'exemple spécifie explicitement us-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 installer chef-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 ou private_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.

  1. DNSnom

  2. Adresse IP publique

  3. Adresse IP privée

  4. 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 sur amazon.

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 utilise ami-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
  1. Créez un fichier nommé default.rb avec le code suivant et enregistrez-le dans le dossier recipes du livre de recettes.

    directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end
  2. 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.

  3. 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.

  4. 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.