

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.

# Remplacement des attributs intégrés
<a name="cookbooks-101-opsworks-attributes"></a>

**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](https://repost.aws/) ou via le [AWS Support](https://aws.amazon.com/support) Premium.

**Note**  
Cette rubrique s'applique uniquement aux piles Linux. Vous ne pouvez pas remplacer des attributs intégrés sur des piles Windows.

OpsWorks Stacks installe un ensemble de livres de recettes intégrés sur chaque instance. La plupart des livres des recettes intégrés prennent en charge les couches intégrées, et leurs fichiers d'attributs définissent différents paramètres système et des applications par défaut, par exemple les paramètres de configuration du serveur Apache. En mettant ces paramètres dans des fichiers d'attributs, vous pouvez personnaliser de nombreux paramètres de configuration en remplaçant l'attribut intégré correspondant de l'une des façons suivantes :
+ Définissez l'attribut dans le JSON personnalisé.

  Cette approche a l'avantage d'être simple et flexible. Cependant, vous devez entrer un JSON personnalisé manuellement, il n'y a donc aucune possibilité solide pour gérer les définitions d'attribut.
+ Implémentez un livre de recettes personnalisé et définissez l'attribut dans un fichier d'attribut `customize.rb`.

  Cette approche est moins flexible que l'utilisation d'un JSON personnalisé, mais elle est plus solide car vous pouvez mettre vos livres de recettes personnalisés sous le contrôle de code source.

Cette rubrique décrit comment utiliser un fichier d'attributs de livre de recettes personnalisé pour remplacer les attributs intégrés, à l'aide du serveur Apache à titre d'exemple. Pour plus d'informations sur le remplacement des attributs avec un JSON personnalisé, consultez [Utilisation du JSON personnalisé](workingcookbook-json-override.md). Pour obtenir des informations générales sur le remplacement des attributs, consultez [Remplacement des attributs](workingcookbook-attributes.md).

**Note**  
Le remplacement des attributs est le meilleur moyen de personnaliser les paramètres de configuration, mais les paramètres ne sont pas toujours représentés par des attributs. Dans ce cas, vous pouvez souvent personnaliser le fichier de configuration en remplaçant le modèle que les recettes intégrées utilisent pour créer le fichier de configuration. Pour obtenir un exemple, consultez [Remplacement des modèles intégrés](cookbooks-101-opsworks-templates.md).

Les attributs intégrés représentent généralement des valeurs dans les fichiers de modèle que les recettes Setup utilisent pour créer des fichiers de configuration. Par exemple, l'une des recettes Setup `apache2`, [https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/recipes/default.rb](https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/recipes/default.rb), utilise le modèle [https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/templates/default/apache2.conf.erb](https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/templates/default/apache2.conf.erb) pour créer le fichier de configuration principal du serveur Apache, `httpd.conf` (Amazon Linux) ou `apache2.conf` (Ubuntu). Voici un extrait du modèle de fichier :

```
...
#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests <%= node[:apache][:keepaliverequests] %>
#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout <%= node[:apache][:keepalivetimeout] %>
##
## Server-Pool Size Regulation (MPM specific)
##

...
```

Le paramètre `KeepAliveTimeout` de cet exemple est la valeur de l'attribut `[:apache][:keepalivetimeout]`. La valeur par défaut de cet attribut est définie dans le livre de recettes `apache2`[et son fichier d'attributs `apache.rb`](https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/attributes/apache.rb), comme illustré dans l'extrait suivant :

```
...
# General settings
default[:apache][:listen_ports] = [ '80','443' ]
default[:apache][:contact] = 'ops@example.com'
default[:apache][:log_level] = 'info'
default[:apache][:timeout] = 120
default[:apache][:keepalive] = 'Off'
default[:apache][:keepaliverequests] = 100
default[:apache][:keepalivetimeout] = 3
...
```

**Note**  
Pour plus d'informations sur les attributs intégrés couramment utilisés, consultez [Attributs des livres de recettes intégrés](attributes-recipes.md).

Pour prendre en charge le remplacement des attributs intégrés, tous les livres de recettes intégrés comportent un fichier d'attributs `customize.rb` qui est intégré à tous les modules via une directive `include_attribute`. Les fichiers `customize.rb` des livres de recettes intégrés ne contiennent aucune définition d'attribut et n'ont aucun effet sur les attributs intégrés. Pour remplacer les attributs intégrés, vous créez un livre de recettes personnalisé avec le même nom que le livre de recettes intégré et vous placez vos définitions d'attributs personnalisés dans un fichier d'attributs également nommé `customize.rb`. Ce fichier est prioritaire sur la version intégrée et il est inclus dans les modules associés. Si vous définissez les attributs intégrés dans votre fichier `customize.rb`, ils remplacent les attributs intégrés correspondants.

Cet exemple montre comment remplacer l'attribut intégré `[:apache][:keepalivetimeout]` pour définir sa valeur sur 5 au lieu de 3. Vous pouvez utiliser une approche similaire pour n'importe quel attribut intégré. Cependant, soyez prudent avec les attributs que vous remplacez. Par exemple, le remplacement des attributs de l'espace de noms `opsworks` peut entraîner des problèmes pour certaines recettes intégrées. 

**Important**  
Ne remplacez pas les attributs intégrés en modifiant une copie du fichier d'attributs intégrés lui-même. Par exemple, vous *pouvez* placer une copie du fichier `apache.rb` dans le dossier `apache2/attributes` de votre livre de recettes personnalisées, et modifier certains de ses paramètres. Toutefois, ce fichier est prioritaire sur la version intégrée et les recettes intégrées utiliseront maintenant votre version du fichier `apache.rb`. Si OpsWorks Stacks modifie ultérieurement le `apache.rb` fichier intégré, les recettes n'obtiendront pas les nouvelles valeurs à moins que vous ne mettiez à jour manuellement votre version. En utilisant`customize.rb`, vous remplacez uniquement les attributs spécifiés ; les recettes intégrées continuent à obtenir automatiquement des up-to-date valeurs pour chaque attribut que vous n'avez pas remplacé.

Pour commencer, créez un livre de recettes personnalisé.

**Pour créer le livre de recettes**

1. Dans votre répertoire `opsworks_cookbooks`, créez un répertoire de livres de recettes nommé `apache2` et accédez à celui-ci.

   Pour que vous puissiez remplacer les attributs intégrés, le livre de recettes personnalisé doit avoir le même nom que le livre de recettes intégré, `apache2` pour cet exemple.

1. Dans le répertoire `apache2`, créez un répertoire `attributes`.

1. Ajoutez un fichier nommé `customize.rb` au répertoire `attributes` et utilisez-le pour définir le livre de recettes intégré qui vous souhaitez remplacer. Pour cet exemple, le fichier doit contenir les éléments suivants : 

   ```
   normal[:apache][:keepalivetimeout] = 5
   ```
**Important**  
Pour que vous puissiez remplacer un attribut intégré, un attribut personnalisé doit avoir le type `normal` ou porter exactement le même nom de nœud que l'attribut intégré correspondant. Le type `normal` garantit que l'attribut personnalisé est prioritaire sur les attributs intégrés, qui sont tous de type `default`. Pour de plus amples informations, veuillez consulter [Priorité des attributs](workingcookbook-attributes-precedence.md).

1. Créez une `.zip` archive `opsworks_cookbooks` nommée `opsworks_cookbooks.zip` et chargez-la dans un compartiment Amazon Simple Storage Service (Amazon S3). Pour des raisons de simplicité, [rendez le fichier public](https://docs.aws.amazon.com/AmazonS3/latest/UG/EditingPermissionsonanObject.html). Enregistrez l'URL pour une utilisation ultérieure. Vous pouvez également stocker vos livres de recettes dans une archive privée Amazon S3 ou dans d'autres types de référentiels. Pour de plus amples informations, veuillez consulter [Référentiels de livres de recettes](workingcookbook-installingcustom-repo.md).

   Le contenu livré aux compartiments Amazon S3 peut contenir du contenu client. Pour plus d'informations sur la suppression de données sensibles, consultez [How Do I Empty an S3 Bucket?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) (Comment puis-je vider un compartiment S3 ?) ou [How Do I Delete an S3 Bucket?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) (Comment supprimer un compartiment S3 ?).

Pour utiliser l'attribut personnalisé, créez une pile et installez le livre de recettes.

**Pour utiliser l'attribut personnalisé**

1. Ouvrez la [console OpsWorks](https://console.aws.amazon.com/opsworks/), puis choisissez **Add Stack (Ajouter une pile)**.

1. Spécifiez les paramètres standard suivants.
   + **Nom** — ApacheConfig
   + **Région** — Ouest des États-Unis (Oregon)

     Vous pouvez placer votre stack dans n'importe quelle région, mais nous vous recommandons l'ouest des États-Unis (Oregon) pour les tutoriels.
   + **Clé SSH par défaut** : une paire de EC2 clés

     Si vous devez créer une paire de EC2 clés, consultez [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html). Notez que la paire de clés doit appartenir à la même région AWS que la pile.

   Choisissez **Advanced>> (Avancé>>)**, définissez **Use custom Chef cookbooks (Utiliser les livres de recettes Chef personnalisés)** sur **Yes (Oui)**, puis spécifiez les paramètres suivants.
   + **Type de référentiel** — **Http Archive**
   + **URL du référentiel : URL** de l'archive du livre de recettes que vous avez enregistrée précédemment

   Acceptez les valeurs par défaut pour les autres paramètres, puis choisissez **Add Stack (Ajouter une pile)** pour créer la pile.
**Note**  
Cet exemple utilise le système d'exploitation par défaut, Amazon Linux. Vous pouvez utiliser Ubuntu si vous le souhaitez. La seule différence est que sur les systèmes Ubuntu, la recette Setup intégrée produit un fichier de configuration avec les mêmes paramètres nommé `apache2.conf` et le place dans le répertoire `/etc/apache2`. 

1. Choisissez **Ajouter une couche**, puis [ajoutez une couche Java App Server](layers-java.md) avec les paramètres par défaut à la pile.

1. [Ajoutez une instance 24/7](workinginstances-add.md) avec les paramètres par défaut dans la couche, puis lancez l'instance.

   Une instance t2.micro suffit pour cet exemple.

1. Une fois que l'instance est en ligne, [connectez-la avec SSH](workinginstances-ssh.md). Le fichier `httpd.conf` se trouve dans le répertoire `/etc/httpd/conf`. Si vous examinez le fichier, vous devez voir votre paramètre personnalisé `KeepAliveTimeout`. Les autres paramètres auront les valeurs par défaut du fichier intégré `apache.rb`. La partie appropriée de `httpd.conf` doit être similaire à ce qui suit :

   ```
   ...
   #
   # KeepAliveTimeout: Number of seconds to wait for the next request from the
   # same client on the same connection.
   #
   KeepAliveTimeout 5
   ...
   ```