Empaquetage local des dépendances des livres de recettes - 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.

Empaquetage local des dépendances des livres de recettes

Important

Le AWS OpsWorks Stacks service a atteint sa fin de vie 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 l' AWS Support équipe sur AWS Re:Post ou via le AWS Support Premium.

Vous pouvez utiliser Berkshelf pour empaqueter les dépendances de vos livres de recettes localement, télécharger le package sur Amazon S3 et modifier votre pile pour utiliser le package sur Amazon S3 comme source de livre de recettes. Le contenu livré aux compartiments Amazon S3 peut contenir du contenu client. Pour plus d'informations sur la suppression de données sensibles, consultez How Do I Empty an S3 Bucket? (Comment puis-je vider un compartiment S3 ?) ou How Do I Delete an S3 Bucket? (Comment supprimer un compartiment S3 ?).

Les procédures pas à pas suivantes décrivent comment préempaqueter vos livres de recettes et leurs dépendances dans un fichier .zip, puis utiliser le fichier .zip comme source de livre de recettes pour les instances Linux dans Stacks. AWS OpsWorks La première procédure explique comment empaqueter un livre de recettes. La deuxième procédure décrit comment empaqueter plusieurs livres de recettes.

Avant de commencer, installez le Kit de développement Chef (aussi appelé Chef DK), qui constitue un assortiment d'outils créés par la communauté Chef. Vous en aurez besoin pour utiliser l'outil de ligne de commande chef.

Création de packages de dépendances localement dans Chef 12

Dans Chef 12 Linux, Berkshelf n'est plus installé par défaut sur les instances de la pile. Nous vous recommandons d'installer et d'utiliser Berkshelf sur un ordinateur de développement local pour créer le package de vos dépendances de livres de recettes localement. Téléchargez votre package, avec les dépendances incluses, sur Amazon S3. Enfin, modifiez votre pile Chef 12 Linux pour utiliser le package chargé comme source de livre de recettes. Tenez compte des différences suivantes lorsque vous créez un package de livres de recettes dans Chef 12.

  1. Sur l'ordinateur local, créez un livre de recettes en exécutant l'outil de ligne de commande chef.

    chef generate cookbook "server-app"

    Cette commande crée un livre de recettes, un fichier Berksfile, un fichier metadata.rb et un répertoire de recettes, puis les place dans un dossier ayant le même nom que le livre de recettes. L'exemple suivant montre la structure des éléments créés.

    server-app <-- the cookbook you've just created └── Berksfile ├── metadata.rb └── recipes
  2. Dans un éditeur de texte, modifiez le fichier Berksfile afin qu'il pointe vers des livres de recettes dont le livre de recettes server-app dépendra. Dans notre exemple, nous voulons que server-app dépende du livre de recettes java du supermarché Chef. Nous indiquons la version 1.50.0 ou une version mineure plus récente, mais vous pouvez indiquer n'importe quelle version publiée entre guillemets simples. Enregistrez les modifications, puis fermez le fichier.

    source 'https://supermarket.chef.io' cookbook 'java', '~> 1.50.0'
  3. Modifiez le fichier metadata.rb pour ajouter la dépendance. Enregistrez les modifications, puis fermez le fichier.

    depends 'java' , '~> 1.50.0'
  4. Passez au répertoire de livres de recettes server-app que Chef a créé automatiquement, puis exécutez la commande package pour créer un fichier tar du livre de recettes. Si vous créez un package pour plusieurs livres de recettes, vous devez exécuter cette commande dans le répertoire racine dans lequel tous les livres de recettes sont stockés. Pour créer un package pour un seul livre de recettes, exécutez cette commande au niveau du répertoire du livre de recettes. Dans cet exemple, nous exécutons cette commande dans le répertoire server-app.

    berks package cookbooks.tar.gz

    La sortie se présente comme suit : Le fichier tar.gz est créé dans votre répertoire local.

    Cookbook(s) packaged to /Users/username/tmp/berks/cookbooks.tar.gz
  5. Dans le AWS CLI, téléchargez le package que vous venez de créer sur Amazon S3. Notez la nouvelle URL du package du livre de recettes après sont chargement dans S3. Vous aurez besoin de cette URL pour les paramètres de votre pile.

    aws s3 cp cookbooks.tar.gz s3://bucket-name/

    La sortie se présente comme suit :

    upload: ./cookbooks.tar.gz to s3://bucket-name/cookbooks.tar.gz
  6. Dans AWS OpsWorks Stacks, modifiez votre pile pour utiliser le package que vous avez téléchargé comme source du livre de recettes.

    1. Définissez le paramètre Use custom Chef cookbooks (Utiliser les livres de recettes Chef personnalisés) sur Yes (Oui).

    2. Définissez Repository type (Type de référentiel) sur S3 Archive (Archive S3).

    3. Dans le champ Repository URL (URL du référentiel), collez l'URL du package du livre de recettes que vous avez chargé à l'étape 5.

    Enregistrez les modifications apportées à la pile.

Empaquetage local des dépendances pour un seul livre de recettes

  1. Sur l'ordinateur local, créez un livre de recettes à l'aide de l'outil de ligne de commande chef :

    chef generate cookbook "server-app"

    Cette commande crée un livre de recettes et un fichier Berksfile, puis les place dans un dossier ayant le même nom que le livre de recettes.

  2. Changez pour le répertoire de livres de recettes que Chef a créé automatiquement, puis empaquetez l'ensemble en exécutant la commande suivante :

    berks package cookbooks.tar.gz

    Le résultat se présente comme suit :

    Cookbook(s) packaged to /Users/username/tmp/berks/cookbooks.tar.gz
  3. Dans le AWS CLI, téléchargez le package que vous venez de créer sur Amazon S3 :

    aws s3 cp cookbooks.tar.gz s3://bucket-name/

    Le résultat se présente comme suit :

    upload: ./cookbooks.tar.gz to s3://bucket-name/cookbooks.tar.gz
  4. Dans AWS OpsWorks Stacks, modifiez votre pile pour utiliser le package que vous avez téléchargé comme source du livre de recettes.

Empaquetage local des dépendances pour plusieurs livres de recettes

Cet exemple crée deux livres et empaquette les dépendances.

  1. Sur l'ordinateur local, exécutez les commandes chef suivantes pour générer deux livres de recettes :

    chef generate cookbook "server-app" chef generate cookbook "server-utils"

    Dans cet exemple, comme le livre de recettes server-app effectue les configurations Java, nous avons besoin d'ajouter une dépendance sur Java.

  2. Modifiez server-app/metadata.rb pour ajouter une dépendance sur le livre de recettes Java de la communauté :

    maintainer "The Authors" maintainer_email "you@example.com" license "all_rights" description "Installs/Configures server-app" long_description "Installs/Configures server-app" version "0.1.0" depends "java"
  3. Dites à Berkshelf ce qui doit être empaqueté en modifiant comme suit le fichier Berksfile dans le répertoire racine des livres de recettes :

    source "https://supermarket.chef.io" cookbook "server-app", path: "./server-app" cookbook "server-utils", path: "./server-utils"

    La structure de votre fichier se présente comme suit :

    .. └── Berksfile ├── server-app └── server-utils
  4. Enfin, créez un package zip, chargez-le sur Amazon S3 et modifiez votre pile AWS OpsWorks Stacks pour utiliser la nouvelle source du livre de recettes. Pour ce faire, suivez les étapes 2 à 4 de Empaquetage local des dépendances pour un seul livre de recettes.

Ressources supplémentaires

Pour plus d'informations sur la création de packages de dépendances de livres de recettes, consultez les rubriques suivantes.