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.
Simulation des attributs de configuration et de déploiement de la pile sur Vagrant
Important
Le AWS OpsWorks Stacks 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 l' AWS Support équipe sur AWS Re:Post
Note
Cette rubrique s'applique uniquement aux instances Linux. Test Kitchen n'étant pas encore compatible avec Windows, vous allez exécuter tous les exemples Windows sur des instances AWS OpsWorks Stacks.
AWS OpsWorks Stacks ajoute des attributs de configuration et de déploiement à l'objet nœud pour chaque instance de votre pile pour chaque événement du cycle de vie. Ces attributs fournissent un instantané de la configuration de la pile, y compris la configuration de chaque couche et ses instances en ligne, la configuration de chaque application déployée, etc. Comme ces attributs se trouvent dans l'objet nœud, ils sont accessibles par n'importe quelle recette ; la plupart des recettes pour les instances AWS OpsWorks Stacks utilisent un ou plusieurs de ces attributs.
Une instance exécutée dans une boîte Vagrant n'est pas gérée par AWS OpsWorks Stacks, son objet de nœud n'inclut donc aucune configuration de pile ni aucun attribut de déploiement par défaut. Toutefois, vous pouvez ajouter un ensemble d'attributs approprié à l'environnement de Test Kitchen. Test Kitchen ajoute ensuite les attributs à l'objet nœud de l'instance, et vos recettes peuvent accéder aux attributs comme elles le feraient sur une instance AWS OpsWorks Stacks.
Cette rubrique montre comment obtenir une copie d'attributs de configuration et de déploiement de pile appropriés, installer les attributs sur une instance et y accéder.
Note
Si vous utilisez Test Kitchen pour exécuter des tests sur vos recettes, fauxhai
Pour configurer le livre de recettes
-
Créez un sous-répertoire d'
opsworks_cookbooks
, nomméprintjson
et accédez à celui-ci. -
Initialisez et configurez Test Kitchen, comme décrit dans Exemple 1 : Installation des packages.
-
Ajoutez deux sous-répertoires à
printjson
:recipes
etenvironments
.
Vous pouvez simuler attributs de déploiement et de configuration de la pile en ajoutant un fichier d'attribut à votre livre de recettes avec les définitions appropriées, mais une meilleure approche consiste à utiliser l'environnement de Test Kitchen. Il existe deux approches de base :
-
Ajoutez des définitions d'attribut à
.kitchen.yml
.Cette approche est particulièrement utile si vous avez quelques attributs. Pour plus d'informations, consultez kitchen.yml
. -
Définissez les attributs dans un fichier d'environnement et référencez le fichier dans
.kitchen.yml
.Cette approche est généralement préférable pour les attributs de déploiement et de configuration de la pile, car le fichier d'environnement est déjà au format JSON. Vous pouvez obtenir une copie des attributs au format JSON à partir d'une instance AWS OpsWorks Stacks appropriée et simplement la coller. Tous les exemples utilisent un fichier d'environnement.
La façon la plus simple de créer les attributs de configuration et de déploiement d'une pile pour votre livre de recettes consiste à créer une pile configurée de manière appropriée et à copier les attributs obtenus à partir d'une instance au format JSON. Pour veiller à ce que votre fichier d'environnement de Test Kitchen reste gérable, vous pouvez ensuite modifier ce JSON de façon à avoir uniquement les attributs nécessaires pour vos recettes. Les exemples de ce chapitre reposent sur la pile de Mise en route des piles Linux Chef 11, qui est une pile de serveur d'application PHP simple avec un équilibreur de charge, des serveurs d'application PHP et un serveur de base de données MySQL.
Pour créer un JSON de configuration et de déploiement de la pile
-
Créez MyStack comme décrit dansMise en route des piles Linux Chef 11, y compris le déploiement de SimplePHPApp. Si vous préférez, vous pouvez omettre la deuxième instance de PHP App Server appelée dans Étape 4 : Diminution MyStack ; les exemples n'utilisent pas ces attributs.
-
Si vous ne l'avez pas encore fait, lancez l'instance
php-app1
, puis connectez-vous avec SSH. -
Dans la fenêtre du terminal, exécutez la commande agent cli suivante :
sudo opsworks-agent-cli get_json
Cette commande affiche les attributs de configuration et de déploiement de la pile de l'instance les plus récents dans la fenêtre de terminal au format JSON.
-
Copiez le JSON dans un fichier
.json
et enregistrez-le dans un emplacement approprié sur votre poste de travail. Les détails dépendent de votre client SSH. Par exemple, si vous utilisez PuTTY sous Windows, vous pouvez exécuter la commandeCopy All to Clipboard
, qui copie tout le texte de la fenêtre de terminal dans le presse-papiers Windows. Vous pouvez ensuite coller le contenu dans un fichier.json
et modifier ce dernier pour supprimer le texte superflu. -
Modifiez le MyStack JSON selon vos besoins. Les attributs de configuration et de déploiement de la pile sont nombreux et les livres de recettes utilisent généralement une petite partie d'entre eux. Pour que votre fichier d'environnement reste gérable, vous pouvez modifier le format JSON afin qu'il conserve la structure d'origine, mais contienne uniquement les attributs réellement utilisés par vos livres de recettes.
Cet exemple utilise une version fortement modifiée du MyStack JSON qui inclut uniquement deux
['opsworks']['stack']
attributs,['id]
et['name']
. Créez une version modifiée du MyStack JSON qui ressemble à ce qui suit :{ "opsworks": { "stack": { "name": "MyStack", "id": "42dfd151-6766-4f1c-9940-ba79e5220b58", }, }, }
Pour obtenir ce JSON dans l'objet de nœud de l'instance, vous devez l'ajouter à un environnement de Test Kitchen.
Pour ajouter des attributs de déploiement et de configuration de la pile à l'environnement de Test Kitchen
-
Créez un fichier d'environnement nommé
test.json
avec le contenu suivant et enregistrez-le dans le dossierenvironments
du livre de recettes.{ "default_attributes": { "opsworks" : { "stack" : { "name" : "MyStack", "id" : "42dfd151-6766-4f1c-9940-ba79e5220b58" } } }, "chef_type" : "environment", "json_class" : "Chef::Environment" }
Le fichier d'environnement comporte les éléments suivants :
-
default_attributes
— Les attributs par défaut au format JSON.Ces attributs sont ajoutés à l'objet de nœud avec le type d'attribut
default
, qui est le type utilisé par tous les attributs JSON de configuration et de déploiement de la pile. Cet exemple utilise la version modifiée du JSON de configuration et de déploiement de la pile présenté précédemment. -
chef_type
— Définissez cet élément surenvironment
. -
json_class
— Définissez cet élément surChef::Environment
.
-
-
Modifiez
.kitchen.yml
de façon à définir l'environnement de Test Kitchen comme suit.--- driver: name: vagrant provisioner: name: chef_solo environments_path: ./environments platforms: - name: ubuntu-12.04 suites: - name: printjson provisioner: solo_rb: environment: test run_list: - recipe[printjson::default] attributes:
Vous définissez l'environnement en ajoutant les éléments suivants à la valeur par défaut
.kitchen.yml
créée parkitchen init
.- fournisseur
-
Ajoutez les éléments suivants.
-
name
— Définissez cet élément surchef_solo
.Pour reproduire plus fidèlement l'environnement AWS OpsWorks Stacks, vous pouvez utiliser le mode local du client Chef
au lieu de Chef solo. Le mode local est une option du client Chef qui utilise une version légère du serveur Chef (Chef zéro) exécutée localement sur l'instance plutôt que sur un serveur à distance. Il permet à vos recettes d'utiliser les fonctionnalités du serveur Chef, par exemple les recherches ou les conteneurs de données sans connexion à un serveur à distance. -
environments_path
— Le sous-répertoire du livre de recettes qui contient le fichier d'environnement, dans cet./environments
exemple.
-
- suites:provisioner
-
Ajoutez un élément
solo_rb
avec un élémentenvironment
défini sur le nom du fichier d'environnement, moins l'extension .json. Cet exemple définitenvironment
surtest
.
-
Créez un fichier nommé
default.rb
avec le contenu suivant et enregistrez-le dans le répertoirerecipes
du livre de recettes.log "Stack name: #{node['opsworks']['stack']['name']}" log "Stack id: #{node['opsworks']['stack']['id']}"
Cette recette consigne simplement les valeurs de la configuration et du déploiement de la pile que vous avez ajoutées à l'environnement. Bien que la recette soit exécutée localement dans Virtual Box, vous référencez ces attributs en utilisant la même syntaxe de nœud que si la recette était exécutée sur une instance AWS OpsWorks Stacks.
-
Exécutez
kitchen converge
. Vous devriez voir quelque chose comme la sortie de journal suivante.... Converging 2 resources Recipe: printjson::default * log[Stack name: MyStack] action write[2014-07-01T23:14:09+00:00] INFO: Processing log[Stack name: MyStack] action write (printjson::default line 1) [2014-07-01T23:14:09+00:00] INFO: Stack name: MyStack * log[Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58] action write[2014-07-01T23:14:09+00:00] INFO: Processing log[Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58] action write (printjson::default line 2) [2014-07-01T23:14:09+00:00] INFO: Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58 ...