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 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
Note
Cette rubrique s'applique uniquement aux instances Linux. Test Kitchen n'est pas encore compatible avec Windows, vous allez donc exécuter tous les exemples Windows sur AWS OpsWorks Empile les instances.
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 AWS OpsWorks Les instances 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, de sorte que son objet de nœud n'inclut 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 un AWS OpsWorks Instance de piles.
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 tester 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 la configuration de la pile et les attributs de déploiement, car le fichier d'environnement est déjà au JSON format. Vous pouvez obtenir une copie des attributs au JSON format approprié auprès d'un AWS OpsWorks Empile l'instance et il suffit de la coller dedans. Tous les exemples utilisent un fichier d'environnement.
Le moyen le plus simple de créer une configuration de pile et des attributs de déploiement pour votre livre de recettes consiste à créer une pile correctement configurée et à copier les attributs obtenus à partir d'une instance sous forme JSON de fichier. Pour que votre fichier d'environnement Test Kitchen reste gérable, vous pouvez ensuite le modifier JSON pour n'avoir que les attributs dont vos recettes ont besoin. Les exemples présentés dans ce chapitre sont basés sur la pile deMise en route des piles Linux Chef 11, qui est une simple pile de serveurs d'PHPapplications dotée d'un équilibreur de charge, de serveurs d'PHPapplications et d'un serveur My SQL database.
Pour créer une configuration et un déploiement de stack JSON
-
Créez MyStack comme décrit dansMise en route des piles Linux Chef 11, y compris le déploiement de implePHPApp S. Si vous préférez, vous pouvez omettre la deuxième instance d'PHPApp Server demandée dans Étape 4 : Diminution MyStack ; les exemples n'utilisent pas ces attributs.
-
Si ce n'est pas déjà fait, démarrez l'
php-app1
instance, 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 imprime la configuration de pile et les attributs de déploiement les plus récents de l'instance dans la fenêtre du terminal JSON sous format.
-
Copiez-le dans un
.json
fichier et enregistrez-le dans un emplacement pratique sur votre poste de travail. JSON Les détails dépendent de votre SSH client. Par exemple, si vous utilisez Pu TTY sous Windows, vous pouvez exécuter laCopy All to Clipboard
commande qui copie tout le texte de la fenêtre du terminal dans le presse-papiers de Windows. Vous pouvez ensuite coller le contenu dans un fichier.json
et modifier ce dernier pour supprimer le texte superflu. -
Modifiez 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 le modifier 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 de 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 l'JSONintégrer dans l'objet nœud de l'instance, vous devez l'ajouter à un environnement 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 JSON format.Ces attributs sont ajoutés à l'objet nœud avec le type
default
d'attribut, qui est le type utilisé par tous les JSON attributs de configuration et de déploiement de la pile. Cet exemple utilise la version modifiée de la configuration et du déploiement de la pile JSON présentée 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 le AWS OpsWorks Pour une meilleure intégration de l'environnement, 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 un AWS OpsWorks Instance de piles.
-
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 ...