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.
Obtention directe des valeurs d'attribut
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 approche fonctionne uniquement pour les piles Linux.
Simulation des attributs de configuration et de déploiement de la pile sur Vagrant montre comment obtenir les données de déploiement et de configuration de la pile en utilisant la syntaxe de nœud pour référencer directement des attributs spécifiques. C'est parfois la meilleure approche. Toutefois, beaucoup d'attributs sont définis dans des collections ou des listes dont le contenu et le nom peuvent varier d'une pile à l'autre et au fil du temps pour une pile spécifique. Par exemple, l'attribut deploy
contient une liste d'attributs d'applications, qui sont nommés avec le nom court de l'application. Cette liste, y compris le nom des attributs de l'application, varie généralement d'une pile à l'autre, voire d'un déploiement à l'autre.
Elle est souvent plus utile, et parfois même nécessaire, pour obtenir les données requises en énumérant les attributs d'une liste ou une collection. Par exemple, supposons que vous souhaitiez connaître les adresses IP publiques des instances de votre pile. Ces informations se trouvent dans l'attribut ['opsworks']['layers']
, qui est défini sur une table de hachage contenant un élément pour chacune des couches de la pile, nommées avec le nom court de la couche. Chaque élément de la couche est défini sur une table de hachage contenant des attributs de la couche, dont ['instances']
. Cet élément est à son tour défini sur une autre table de hachage contenant un attribut pour chacune des instances de la couche, nommées avec le nom court de l'instance. Chaque attribut de l'instance est défini sur une autre table de hachage qui contient les attributs de l'instance, y compris ['ip']
, qui représente l'adresse IP publique. Si vous ne parvenez pas à le visualiser, la procédure suivante inclut un exemple de JSON format.
Cet exemple montre comment obtenir des données à partir de la configuration et du déploiement de la pile JSON pour les couches d'une pile.
Pour configurer le livre de recettes
-
Créez un répertoire dans
opsworks_cookbooks
, nommélistip
et accédez à celui-ci. -
Initialisez et configurez Test Kitchen, comme décrit dans Exemple 1 : Installation des packages.
-
Ajoutez deux répertoires à
listip
:recipes
etenvironments
. -
Créez une JSON version modifiée des attributs de MyStack configuration et de déploiement contenant les attributs pertinents. Elle doit ressembler à ce qui suit.
{ "opsworks": { "layers": { "php-app": { "name": "PHP App Server", "id": "efd36017-ec42-4423-b655-53e4d3710652", "instances": { "php-app1": { "ip": "192.0.2.0" } } }, "db-master": { "name": "MySQL", "id": "2d8e0b9a-0d29-43b7-8476-a9b2591a7251", "instances": { "db-master1": { "ip": "192.0.2.5" } } }, "lb": { "name": "HAProxy", "id": "d5c4dda9-2888-4b22-b1ea-6d44c7841193", "instances": { "lb1": { "ip": "192.0.2.10" } } } } } }
-
Créez un fichier d'environnement nommé
test.json
, collez-y l'exemple et enregistrez le fichier JSON dansdefault_attributes
leenvironments
dossier du livre de recettes. Le fichier doit ressembler à ce qui suit (par souci de concision, la plupart des exemples JSON sont représentés par des points de suspension).{ "default_attributes" : { "opsworks": { "layers": {
...
} } }, "chef_type" : "environment", "json_class" : "Chef::Environment" } -
Remplacez le texte dans
.kitchen.yml
par ce qui suit.--- driver: name: vagrant provisioner: name: chef_zero environments_path: ./environment platforms: - name: ubuntu-12.04 suites: - name: listip provisioner: client_rb: environment: test run_list: - recipe[listip::default] attributes:
Une fois le livre de recettes configuré, vous pouvez utiliser la recette suivante pour enregistrer la coucheIDs.
node['opsworks']['layers'].each do |layer, layerdata| log "#{layerdata['name']} : #{layerdata['id']}" end
La recette énumère les couches de ['opsworks']['layers']
et consigne chaque nom et chaque ID de couche.
Pour exécuter la recette de journalisation des ID de couche
-
Créez un fichier nommé
default.rb
avec l'exemple de recette et enregistrez-le dans le répertoirerecipes
. -
Exécutez
kitchen converge
.
La partie pertinente de la sortie doit ressembler à ce qui suit.
Recipe: listip::default * log[PHP App Server : efd36017-ec42-4423-b655-53e4d3710652] action write[2014-07-17T22:56:19+00:00] INFO: Processing log[PHP App Server : efd36017-ec42-4423-b655-53e4d3710652] action write (listip::default line 4) [2014-07-17T22:56:19+00:00] INFO: PHP App Server : efd36017-ec42-4423-b655-53e4d3710652 * log[MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251] action write[2014-07-17T22:56:19+00:00] INFO: Processing log[MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251] action write (listip::default line 4) [2014-07-17T22:56:19+00:00] INFO: MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251 * log[HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193] action write[2014-07-17T22:56:19+00:00] INFO: Processing log[HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193] action write (listip::default line 4) [2014-07-17T22:56:19+00:00] INFO: HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193
Pour répertorier les adresses IP des instances, vous aurez besoin d'une boucle imbriquée comme suit.
node['opsworks']['layers'].each do |layer, layerdata| log "#{layerdata['name']} : #{layerdata['id']}" layerdata['instances'].each do |instance, instancedata| log "Public IP: #{instancedata['ip']}" end end
La boucle interne itère sur les instances de chaque couche et consigne les adresses IP.
Pour exécuter la recette de journalisation des IP de l'instance
-
Remplacez le code de
default.rb
par l'exemple de recette. -
Exécutez
kitchen converge
pour exécuter la recette.
La partie pertinente de la sortie doit ressembler à ce qui suit.
* log[PHP App Server : efd36017-ec42-4423-b655-53e4d3710652] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[PHP App Server : efd36017-ec42-4423-b655-53e4d3710652] action write (listip::default line 2) [2014-07-17T23:09:34+00:00] INFO: PHP App Server : efd36017-ec42-4423-b655-53e4d3710652 * log[Public IP: 192.0.2.0] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[Public IP: 192.0.2.0] action write (listip::default line 4) [2014-07-17T23:09:34+00:00] INFO: Public IP: 192.0.2.0 * log[MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251] action write (listip::default line 2) [2014-07-17T23:09:34+00:00] INFO: MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251 * log[Public IP: 192.0.2.5] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[Public IP: 192.0.2.5] action write (listip::default line 4) [2014-07-17T23:09:34+00:00] INFO: Public IP: 192.0.2.5 * log[HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193] action write (listip::default line 2) [2014-07-17T23:09:34+00:00] INFO: HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193 * log[Public IP: 192.0.2.10] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[Public IP: 192.0.2.10] action write (listip::default line 4) [2014-07-17T23:09:34+00:00] INFO: Public IP: 192.0.2.10
Lorsque vous avez terminé, exécutez kitchen destroy
; la rubrique suivante utilise un nouveau livre de recettes.
Note
L'une des raisons les plus courantes pour énumérer une configuration de pile et une JSON collection de déploiement est d'obtenir des données pour une application déployée particulière, telles que son répertoire de déploiement. Pour obtenir un exemple, consultez Recettes Deploy.