

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 modèles intégrés
<a name="cookbooks-101-opsworks-templates"></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 modèles intégrés sur des piles Windows.

Les recettes intégrées de OpsWorks Stacks utilisent des modèles pour créer des fichiers sur des instances, principalement des fichiers de configuration pour des serveurs, tels qu'Apache. Par exemple, les recettes `apache2` utilisent 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). 

La plupart des paramètres de configuration de ces modèles sont représentés par des attributs, le meilleur moyen de personnaliser un fichier de configuration est donc de remplacer les attributs intégrés appropriés. Pour obtenir un exemple, consultez [Remplacement des attributs intégrés](cookbooks-101-opsworks-attributes.md). Toutefois, si les paramètres que vous souhaitez personnaliser ne sont pas représentés par des attributs intégrées, ou s'ils ne sont pas du tout dans le modèle, vous devez remplacer le modèle lui-même. Cette rubrique décrit comment remplacer un modèle intégré pour spécifier un paramètre de configuration personnalisé Apache.

Vous pouvez fournir des réponses d'erreur personnalisées à Apache en ajoutant les paramètres `ErrorDocument` au fichier `httpd.conf`. `apache2.conf.erb` contient uniquement des exemples mis en commentaire, comme indiqué ci-après :

```
...
#
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
...
```

Etant donné que ces paramètres sont des commentaires codés en dur, vous ne pouvez pas spécifier de valeurs personnalisées en remplaçant les attributs ; vous devez remplacer le modèle lui-même. Cependant, contrairement à ce qui se passe avec les attributs, il n'est pas possible de remplacer certaines parties d'un modèle de fichier. Vous devez créer un livre de recettes personnalisé portant le même nom que la version intégrée, copier le modèle de fichier dans le même sous-répertoire et modifier le fichier en fonction des besoins. Cette rubrique montre comment remplacer `apache2.conf.erb` pour fournir une réponse personnalisée à une erreur 500. Pour plus d'informations générales sur le remplacement des modèles, consultez [Utilisation de modèles personnalisés](workingcookbook-template-override.md).

**Important**  
Lorsque vous remplacez un modèle intégré, les recettes intégrées utilisent votre version personnalisée du modèle au lieu de la version intégrée. Si OpsWorks Stacks met à jour le modèle intégré, le modèle personnalisé devient désynchronisé et risque de ne pas fonctionner correctement. OpsWorks Stacks n'apporte pas souvent de telles modifications, et lorsqu'un modèle change, OpsWorks Stacks répertorie les modifications et vous donne la possibilité de passer à une nouvelle version. Nous vous recommandons de surveiller le [référentiel OpsWorks Stacks](https://github.com/aws/opsworks-cookbooks) pour détecter des modifications et de mettre à jour manuellement votre modèle personnalisé en fonction des besoins. Notez que le référentiel a une branche distincte pour chaque version de Chef prise en charge, alors veillez à utiliser la branche appropriée.

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

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

1. Dans le 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 modèles 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.
**Note**  
Si vous avez déjà découvert la procédure [Remplacement des attributs intégrés](cookbooks-101-opsworks-attributes.md), vous pouvez utiliser le même livre de recettes `apache2` pour cet exemple et ignorer l'étape 2.

1. Créez un fichier `metadata.rb` avec le contenu suivant, puis enregistrez-le dans le répertoire `apache2`.

   ```
   name "apache2"
   version "0.1.0"
   ```

1. Dans le répertoire `apache2`, créez un répertoire `templates/default`.
**Note**  
Le `templates/default` répertoire fonctionne pour les instances Amazon Linux, qui utilisent le `apache2.conf.erb` modèle par défaut. Les instances Ubuntu 14.04 utilisent un modèle `apache2.conf.erb` propre au système d'exploitation et se trouvant dans le répertoire `templates/ubuntu-14.04`. Si vous souhaitez que la personnalisation s'applique également aux instances Ubuntu 14.04, vous devez également remplacer ce modèle.

1. Copiez le [modèle `apache2.conf.erb` intégré](https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/templates/default/apache2.conf.erb) dans votre répertoire `templates/default`. Ouvrez le fichier du modèle, supprimez le commentaire de la ligne `ErrorDocument 500` et entrez un message d'erreur personnalisé, comme suit : 

   ```
   ...
   ErrorDocument 500 "A custom error message."
   #ErrorDocument 404 /missing.html
   ...
   ```

1. Créez une `.zip` archive `opsworks_cookbooks` nommée`opsworks_cookbooks.zip`, puis chargez le fichier dans un compartiment Amazon Simple Storage Service (Amazon S3). Pour simplifier les choses, [rendez l'archive publique](https://docs.aws.amazon.com/AmazonS3/latest/UG/EditingPermissionsonanObject.html). Enregistrez l'URL de l'archive 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 ?).

**Note**  
Pour plus de simplicité, cet exemple ajoute un message d'erreur codé en dur au modèle. Pour le changer, vous devez modifier le modèle et [réinstaller le livre de recettes](workingcookbook-installingcustom-enable-update.md). Afin de bénéficier d'une plus grande souplesse, vous pouvez [définir un attribut personnalisé par défaut](cookbooks-101-opsworks-attributes.md) pour la chaîne d'erreur dans le fichier d'attribut `customize.rb` du livre de recettes personnalisées et attribuer la valeur de cet attribut à `ErrorDocument 500`. Par exemple, si vous nommez l'attribut `[:apache][:custom][:error500]`, la ligne correspondante dans `apache2.conf.erb` ressemble à ce qui suit :  

```
...
ErrorDocument 500 <%= node[:apache][:custom][:error500] %>
#ErrorDocument 404 /missing.html
...
```
Vous pouvez ensuite modifier le message d'erreur personnalisé à tout moment en remplaçant `[:apache][:custom][:error500]`. Si vous [utilisez le JSON personnalisé pour remplacer l'attribut](workingcookbook-json-override.md), vous n'avez même pas besoin de toucher le livre de recettes.

Pour utiliser le modèle personnalisé, créez une pile et installez le livre de recettes.

**Pour utiliser le modèle 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** — ApacheTemplate
   + **Région** — Ouest des États-Unis (Oregon)
   + Clé **SSH par défaut : une paire de clés** Amazon Elastic Compute Cloud (Amazon EC2)

     Si vous devez créer une paire de EC2 clés Amazon, 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 l'instance.

   Choisissez **Advanced>> (Avancé>>)**, puis **Use custom Chef cookbooks (Utiliser les livres de recettes Chef personnalisés)** pour spécifier 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.

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

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`. Le fichier doit contenir le paramètre personnalisé `ErrorDocument`, qui doit ressembler à ce qui suit : 

   ```
   ...
   # Some examples:
   ErrorDocument 500 "A custom error message."
   #ErrorDocument 404 /missing.html
   #ErrorDocument 404 "/cgi-bin/missing_handler.pl"
   #ErrorDocument 402 http://www.example.com/subscription_info.html
   ...
   ```