Étape 2.5 : Déployer une application - 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.

Étape 2.5 : Déployer une application

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.

L'installation IIS crée un répertoire C:\inetpub\wwwroot pour le code de votre application et les fichiers associés. L'étape suivante consiste à installer une application dans ce répertoire. Pour cet exemple, vous allez installer une page d'accueil HTML statique, default.html, dans C:\inetpub\wwwroot. Vous pouvez facilement étendre l'approche générale pour gérer des scénarios plus complexes, telles que les applications ASP.NET.

Vous pouvez inclure les fichiers de l'application dans votre livre de recettes et faire en sorte qu'install.rb les copie dans C:\inetpub\wwwroot. Pour obtenir un exemple de la façon de procéder, consultez Exemple 6 : Création de fichiers. Cependant, cette approche n'est ni très flexible ni très efficace, et il est généralement préférable de séparer le développement du livre de recettes du développement de l'application.

La solution préférée consiste à implémenter une recette de déploiement distincte qui récupère le code de l'application et les fichiers associés d'un référentiel (le référentiel de votre choix, pas seulement le référentiel de livres de recettes) et l'installe sur chaque instance de serveur IIS. Cette approche sépare le développement de livres de recettes du développement d'applications et, lorsque vous avez besoin de mettre à jour votre application, elle vous permet simplement d'exécuter à nouveau la recette de déploiement sans avoir besoin de mettre à jour vos livres de recettes.

Cette rubrique montre comment implémenter une recette de déploiement simple qui déploie default.htm sur votre serveur IIS. Vous pouvez facilement étendre cet exemple à des applications plus complexes.

Créer l'application et la stocker dans un référentiel

Vous pouvez utiliser n'importe quel référentiel de votre choix pour vos applications. Pour plus de simplicité, cet exemple stocke default.htm dans un compartiment S3 public.

Pour créer l'application
  1. Créez un répertoire nommé iis-application sur un emplacement approprié de votre ordinateur.

  2. Ajoutez un fichier default.htm à iis-application avec le contenu suivant.

    <!DOCTYPE html> <html> <head> <title>IIS Example</title> </head> <body> <h1>Hello World!</h1> </body> </html>
  3. Créez un compartiment S3, chargez default.htm dans le compartiment et enregistrez l'URL en vue d'une utilisation ultérieure. Pour des raisons de simplicité, rendez le fichier public.

    Note

    Il s'agit d'une application très simple, mais vous pouvez étendre les principes de base pour gérer les applications de niveau production.

    • Pour les applications plus complexes avec plusieurs fichiers, il est généralement plus simple de créer une archive .zip d'iis-application et de la charger dans votre compartiment S3.

      Vous pouvez ensuite télécharger le fichier et extraire le contenu dans le répertoire approprié. Il n'y a pas besoin de télécharger plusieurs fichiers, de créer une structure de répertoire, etc.

    • Pour une application en production, vous devrez probablement conserver vos fichiers privés. Pour obtenir un exemple de la façon dont une recette télécharge les fichiers à partir d'un compartiment S3 privé, consultez Utilisation du SDK pour Ruby sur AWS OpsWorks une instance Stacks Windows.

    • Vous pouvez stocker votre application dans n'importe quel référentiel approprié.

      Généralement, vous téléchargez l'application à l'aide de l'API publique d'un référentiel. Cet exemple utilise l'API Amazon S3. Si, par exemple, vous stockez votre application sur GitHub, vous pouvez utiliser l'GitHub API.

Implémenter une recette pour déployer l'application

Ajoutez une recette nommée deploy.rb au répertoire iis-cookbook recipes avec le contenu suivant.

chef_gem "aws-sdk-s3" do compile_time false action :install end ruby_block "download-object" do block do require 'aws-sdk-s3' #1 # Aws.config[:ssl_ca_bundle] = 'C:\ProgramData\Git\bin\curl-ca-bundle.crt' Aws.use_bundled_cert! #2 query = Chef::Search::Query.new app = query.search(:aws_opsworks_app, "type:other").first s3region = app[0][:environment][:S3REGION] s3bucket = app[0][:environment][:BUCKET] s3filename = app[0][:environment][:FILENAME] #3 s3_client = Aws::S3::Client.new(region: s3region) s3_client.get_object(bucket: s3bucket, key: s3filename, response_target: 'C:\inetpub\wwwroot\default.htm') end action :run end

Cet exemple utilise le SDK pour Ruby v2 pour télécharger le fichier. Cependant, AWS OpsWorks Stacks n'installe pas ce SDK sur les instances Windows. La recette commence donc par la chef_gemressource, qui gère cette tâche.

Note

La ressource chef_gem installe les GEM dans la version Ruby dédiée de Chef, qui est la version utilisée par les recettes. Si vous souhaitez installer un GEM pour une version Ruby à l'échelle du système, utilisez la ressource gem_package.

La majeure partie de la recette est une ruby_blockressource qui exécute un bloc de code Ruby qui utilise le SDK pour Ruby pour default.htm le téléchargement. Le code de ruby_block peut être réparti dans les sections suivantes, qui correspondent aux commentaires numérotés de l'exemple de code.

1 : Spécification d'un ensemble de certificats

Amazon S3 utilise le protocole SSL. Vous avez donc besoin d'un certificat approprié pour télécharger des objets depuis un compartiment S3. Le SDK pour Ruby v2 n'inclut pas de bundle de certificats, vous devez donc en fournir un et configurer le SDK pour Ruby afin de l'utiliser. AWS OpsWorks Stacks n'installe pas directement un bundle de certificats, mais il installe Git, qui inclut un bundle de certificats (curl-ca-bundle.crt). Pour plus de commodité, cet exemple configure le SDK pour Ruby afin d'utiliser le bundle de certificats Git pour SSL. Vous pouvez également installer votre propre ensemble et configurer le kit de développement logiciel SDK en conséquence.

2 : Récupération des données du référentiel

Pour télécharger un objet depuis Amazon S3, vous avez besoin de la région AWS, du nom du compartiment et du nom de la clé. Comme décrit plus tard, cet exemple fournit les informations en associant un ensemble de variables d'environnement à l'application. Lorsque vous déployez une application, AWS OpsWorks Stacks ajoute un ensemble d'attributs à l'objet nœud de l'instance. Ces attributs sont essentiellement une table de hachage qui contient la configuration de l'application, y compris les variables d'environnement. Les attributs d'application de cette application se présentent comme suit, au format JSON.

{ "app_id": "8f71a9b5-de7f-451c-8505-3f35086e5bb3", "app_source": { "password": null, "revision": null, "ssh_key": null, "type": "other", "url": null, "user": null }, "attributes": { "auto_bundle_on_deploy": true, "aws_flow_ruby_settings": {}, "document_root": null, "rails_env": null }, "data_sources": [{"type": "None"}], "domains": ["iis_example_app"], "enable_ssl": false, "environment": { "S3REGION": "us-west-2", "BUCKET": "windows-example-app", "FILENAME": "default.htm" }, "name": "IIS-Example-App", "shortname": "iis_example_app", "ssl_configuration": { "certificate": null, "private_key": null, "chain": null }, "type": "other", "deploy": true }

Les variables d'environnement de l'application sont stockées dans l'attribut [:environment]. Pour les récupérer, utilisez une requête de recherche Chef et extrayez la table de hachage de l'application ; qui se trouve sous le nœud aws_opsworks_app. Comme cette application sera définie comme ayant le type other, la requête recherche les applications de ce type. Comme la recette tire parti du fait qu'il n'y a qu'une seule application sur cette instance, la table de hachage digne d'intérêt est juste app[0]. Pour plus de commodité, la recette attribue ensuite les noms de région, de compartiment et de fichier à des variables.

Pour plus d'informations sur l'utilisation de la recherche Chef, consultez Obtention des valeurs d'attribut avec la recherche de Chef.

3 : Téléchargement du fichier

La troisième partie de la recette crée un objet client S3 et utilise sa méthode get_object pour télécharger default.htm dans le répertoire C:\inetpub\wwwroot de l'instance.

Note

Comme une recette est une application Ruby, le code Ruby ne doit pas nécessairement être dans un ruby_block. Cependant, le code du corps de la recette s'exécute en premier, suivi, dans l'ordre, par les ressources. Dans cet exemple, si vous insérez le code de téléchargement dans le corps de la recette, cela échouera car la chef_gem ressource n'aurait pas encore installé le SDK pour Ruby. Le code de la ruby_block ressource s'exécute lorsque la ressource s'exécute, une fois que la chef_gem ressource a installé le SDK pour Ruby.

Mettre à jour les livres de recette de l'instance

AWS OpsWorks Stacks installe automatiquement des livres de recettes personnalisés sur les nouvelles instances. Cependant, comme vous travaillez avec une instance existante, vous devez mettre à jour votre livre de recettes manuellement.

Pour mettre à jour les livres de recette de l'instance
  1. Créez une archive .zip d'iis-cookbook et chargez-la dans le compartiment S3.

    Le livre de recettes existant est remplacé, mais comme l'URL demeure la même, vous n'avez pas besoin de mettre à jour la configuration de la pile.

  2. Si votre instance n'est pas en ligne, redémarrez-la.

  3. Une fois que l'instance est en ligne, choisissez Stack (Pile) dans le panneau de navigation, puis Run Command (Exécuter une commande).

  4. Pour Command (Commande), choisissez Update Custom Cookbooks (Mettre à jour les livres de recettes personnalisées). Cette commande installe le livre de recettes mis à jour sur l'instance.

  5. Choisissez Update Custom Cookbooks (Mettre à jour les livres de recettes personnalisées). L'exécution de la commande peut prendre quelques minutes.

Ajouter la recette à la couche IIS personnalisée

Comme avec install.rb, le meilleur moyen de gérer le déploiement consiste à attribuer deploy.rb à l'événement du cycle de vie approprié. Généralement, vous assignez les recettes du déploiement à l'événement Deploy et celles-ci sont appelées collectivement recettes Deploy. L'affectation d'une recette à l'événement Deploy ne déclenche pas l'événement. Au lieu de cela :

  • Pour les nouvelles instances, AWS OpsWorks Stacks exécute automatiquement les recettes de déploiement une fois les recettes de configuration terminées, de sorte que les nouvelles instances disposent automatiquement de la version actuelle de l'application.

  • Dans le cas des instances en ligne, vous utilisez une commande deploy pour installer manuellement les applications nouvelles ou mises à jour.

    Cette commande déclenche un événement Deploy sur les instances de la pile, ce qui exécute les recettes Deploy.

Pour attribuer deploy.rb à l'événement Deploy de la couche
  1. Choisissez Layers (Couches) dans le panneau de navigation, puis Recipes (Recettes) sous Layer IISExample (Couche IISExample).

  2. Sous Custom Chef Recipes (Recettes Chef personnalisées), ajoutez iis-cookbook::deploy à la zone des recettes Deploy et choisissez + pour ajouter la recette à la couche.

  3. Choisissez Save (Enregistrer) pour enregistrer la nouvelle configuration. Les recettes Deploy personnalisées doivent désormais inclure iis-cookbook::deploy.

Ajouter une application

La dernière tâche consiste à ajouter une application à la pile pour représenter votre application dans l'environnement AWS OpsWorks Stacks. Une application inclut les métadonnées telles que le nom complet de l'application et les données requises pour télécharger l'application à partir de son référentiel.

Pour ajouter l'application à la pile
  1. Choisissez Apps (Applications) dans le panneau de navigation, puis choisissez Add an app (Ajouter une application).

  2. Configurez l'application avec les paramètres suivants.

    • Nom — I IIS-Example-App

    • Type de référentielAutre

    • Variables d'environnement — Ajoutez les trois variables d'environnement suivantes :

      • S3REGION— La région du compartiment (dans ce cas,us-west-1).

      • BUCKET— Le nom du bucket, tel quewindows-example-app.

      • FILENAME— Le nom du fichier : default.htm

  3. Acceptez les valeurs par défaut pour les paramètres restants, puis choisissez Add App (Ajouter une application) pour ajouter l'application à la pile.

Note

Cet exemple utilise des variables d'environnement pour fournir les données de téléchargement. Une autre approche consiste à utiliser un type de référentiel S3 Archive et à fournir l'URL du fichier. AWS OpsWorks Stacks ajoute les informations, ainsi que des données facultatives, telles que vos informations d'identification AWS, à l'app_sourceattribut de l'application. Votre recette Deploy doit récupérer l'URL à partir des attributs de l'application et l'analyser pour extraire la région, le nom du compartiment et le nom du fichier.

Déployer l'application et ouvrir l'application

AWS OpsWorks Stacks déploie automatiquement les applications sur les nouvelles instances, mais pas sur les instances en ligne. Comme votre instance est déjà en cours d'exécution, vous devez déployer l'application manuellement.

Pour déployer l'application
  1. Choisissez Apps (Applications) dans le panneau de navigation, puis deploy (déployer) dans la colonne Actions de l'application.

  2. Command (Commande) doit être défini sur Deploy (Déployer). Choisissez Deploy (Déployer) dans le coin inférieur droit de la page Deploy App (Déployer l’application). L'exécution de la commande peut prendre quelques minutes.

    Une fois que le déploiement est terminé, vous revenez à la page Apps (Applications). L'indicateur Status (Statut) affiche successful (succès) en vert et le nom de l'application a une coche verte à côté pour indiquer un déploiement réussi.

Note

Les applications Windows étant toujours de type d'application Other, le déploiement de l'application effectue ce qui suit :

Note

Pour plus d'informations sur le dépannage des applications ou des déploiements ayant échoué, consultez Débogage des recettes.

L'application est maintenant installée. Vous pouvez l'ouvrir en choisissant Instances dans le volet Navigation, puis en choisissant l'adresse IP publique de l'instance. Cela envoie une demande HTTP à l'instance et vous devriez voir quelque chose comme ce qui suit s'afficher dans votre navigateur.