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 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
L'IISinstallation crée un C:\inetpub\wwwroot
répertoire pour le code de votre application et les fichiers associés. L'étape suivante consiste à installer une application dans ce répertoire. Dans cet exemple, vous allez installer une page d'HTMLaccueil statique,default.html
, dansC:\inetpub\wwwroot
. Vous pouvez facilement étendre l'approche générale pour gérer des scénarios plus complexes, tels queASP. NETapplications.
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 explique comment implémenter une recette de déploiement simple qui default.htm
se déploie sur votre IIS serveur. Vous pouvez facilement étendre cet exemple à des applications plus complexes.
Rubriques
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
-
Créez un répertoire nommé
iis-application
sur un emplacement approprié de votre ordinateur. -
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>
-
Créez un compartiment S3,
default.htm
chargez-le dans le compartiment et enregistrez-le URL pour 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 de SDK for Ruby sur une AWS OpsWorks instance Windows Stacks.
-
Vous pouvez stocker votre application dans n'importe quel référentiel approprié.
Vous téléchargez généralement l'application en utilisant le public d'un dépôtAPI. Cet exemple utilise Amazon S3API. Si, par exemple, vous stockez votre application sur GitHub, vous pouvez utiliser le 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 SDKfor Ruby v2 pour télécharger le fichier. Cependant, AWS OpsWorks Stacks ne l'installe pas SDK sur les instances Windows. La recette commence donc par la chef_gem
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_block
default.htm
. 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 utiliseSSL, vous avez donc besoin d'un certificat approprié pour télécharger des objets depuis un compartiment S3. SDKfor Ruby v2 n'inclut pas de bundle de certificats, vous devez donc en fournir un et le configurer SDK pour que Ruby l'utilise. 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 bundle de certificats Git SDK pour lequel Ruby doit utiliser. SSL Vous pouvez également installer votre propre bundle et le configurer 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 AWS région, 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 de l'application pour cette application ressembleront à ce qui suit, au JSON format.
{ "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œudaws_opsworks_app
. Comme cette application sera définie comme ayant le typeother
, 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 justeapp[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échargerdefault.htm
dans le répertoireC:\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 mettez le code de téléchargement dans le corps de la recette, il échouera car la chef_gem
ressource n'aurait pas encore installé le code SDK for 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 for 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
-
Créez une archive
.zip
d'iis-cookbook
et chargez-la dans le compartiment S3.Cela remplace le livre de recettes existant, mais celui-ci URL reste le même. Vous n'avez donc pas besoin de mettre à jour la configuration de la pile.
-
Si votre instance n'est pas en ligne, redémarrez-la.
-
Une fois que l'instance est en ligne, choisissez Stack (Pile) dans le panneau de navigation, puis Run Command (Exécuter une commande).
-
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.
-
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 IIS couche 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
-
Choisissez Layers dans le volet de navigation, puis choisissez Recipes sous Layer IISExample.
-
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. -
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 AWS OpsWorks Environnement 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
-
Choisissez Apps (Applications) dans le panneau de navigation, puis choisissez Add an app (Ajouter une application).
-
Configurez l'application avec les paramètres suivants.
-
Nom — I
IIS-Example-App
-
Type de référentiel — Autre
-
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
.
-
-
-
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 les fichiersURL. AWS OpsWorks Stacks ajoute les informations, ainsi que des données facultatives, telles que vos AWS informations d'identification, à l'app_source
attribut de l'application. Votre recette de déploiement doit obtenir les attributs URL de l'application et les 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
-
Choisissez Apps (Applications) dans le panneau de navigation, puis deploy (déployer) dans la colonne Actions de l'application.
-
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 :
-
Ajoute les données de l'application aux attributs de configuration et de déploiement de pile, comme indiqué plus tôt.
-
Déclenche un événement Deploy sur les instances de la pile, ce qui exécute vos recettes Deploy personnalisées.
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 HTTP demande à l'instance, et vous devriez voir quelque chose comme ce qui suit dans votre navigateur.
