> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/cli/fr/guides/secrets/fill-a-template.md).

# Remplir un fichier de configuration à partir d’un modèle

Générer un fichier de configuration à partir d’un modèle contenant des références devo, avec devo secret inject, pour les outils qui ne peuvent pas lire les secrets depuis l’environnement.

Certains outils ne lisent leurs paramètres que dans un fichier, comme `appsettings.json`, une configuration YAML ou un `.npmrc`. Avec `devo secret inject`, vous gardez dans votre dépôt un modèle avec des références `devo://`, et vous générez le vrai fichier quand vous en avez besoin.

{% hint style="warning" %}
Le fichier que produit `devo secret inject` contient vos secrets en texte clair. Utilisez-le seulement lorsque l’outil ne peut pas prendre ses secrets dans l’environnement, supprimez-le quand vous avez terminé, et ne le commitez jamais. Si l’outil peut lire les variables d’environnement, utilisez plutôt [devo secret run](/cli/fr/guides/secrets/run-with-secrets.md) : les valeurs ne touchent alors jamais le disque.
{% endhint %}

## Écrire le modèle

Placez une référence partout où va un secret. Entourez-la de `{{ }}` pour que Devolutions CLI sache exactement où elle commence et où elle se termine :

```json
{
  "Database": {
    "User": "{{ devo://ws/<workspace-id>/vault/<vault-id>/entry/<entry-id>/field/username }}",
    "Password": "{{ devo://ws/<workspace-id>/vault/<vault-id>/entry/<entry-id>/field/password }}"
  }
}
```

Une référence sans `{{ }}` fonctionne aussi. Elle se termine au premier espace, guillemet, `<`, `>`, `)`, `]` ou `}`.

Dans une référence, `$NAME`, `${NAME}` et `${NAME:-default}` sont remplacés par la valeur d’une variable d’environnement avant que la référence soit résolue. Utilisez cela pour partager un modèle entre des environnements, par exemple `devo://ws/${WORKSPACE_ID}/vault/…`.

## Générer le fichier

```bash
devo secret inject --in-file appsettings.template.json --out-file appsettings.json
```

<table><thead><tr><th width="200">OPTION</th><th>CE QU’IL FAIT</th></tr></thead><tbody><tr><td><code>--in-file</code>, <code>-i</code></td><td>Le modèle à lire. Sans cette option, Devolutions CLI lit le modèle depuis l’entrée standard.</td></tr><tr><td><code>--out-file</code>, <code>-f</code></td><td>Le fichier à écrire. Sans lui, le résultat va sur la sortie standard.</td></tr><tr><td><code>--force</code></td><td>Remplace le fichier de sortie s’il existe déjà. Sans cette option, la commande s’arrête avant de lire un secret.</td></tr></tbody></table>

Vous pouvez aussi travailler avec des tubes, par exemple pour passer le résultat directement à un autre programme :

```bash
cat config.template.yaml | devo secret inject | <your-tool> --config -
```

{% hint style="warning" %}
Si une référence ne peut pas être résolue, le programme suivant dans le tuyau reçoit la ligne de résumé `References: <resolved>/<total> resolved` au lieu de votre configuration. Dans un script, vérifiez le code de sortie de `devo secret inject`, ou écrivez dans un fichier avec `--out-file`.
{% endhint %}

## Ce sur quoi vous pouvez compter

* **Tout ou rien.** Si une référence ne peut pas être résolue, Devolutions CLI n’écrit aucun fichier et rien du modèle. Il liste les erreurs sur la sortie d’erreur, affiche une ligne de résumé comme `References: 1/2 resolved` sur la sortie standard, et se termine avec le code `1`.
* **Fichier privé.** Le fichier de sortie est créé avec des permissions privées : sur macOS et Linux, seul votre compte d’utilisateur peut le lire ; sur Windows, votre compte, le compte système et les administrateurs.
* **Aucun fichier à moitié écrit.** Devolutions CLI écrit dans un fichier temporaire du même dossier, puis le met en place.
* **Chaque référence est lue une fois.** Une référence utilisée plusieurs fois dans le modèle n’est résolue qu’une fois.

Avec `--output json`, la commande renvoie un résumé au lieu du contenu : combien de références elle a trouvées et résolues. Les valeurs n’y figurent pas.

## Bon à savoir

* Avec la sortie standard, les valeurs apparaissent dans votre terminal ou dans ce qui lit le tube. Préférez `--out-file` quand vous n’avez pas besoin d’un tube.
* Les références se résolvent par le contexte actuel. Ajoutez `--context <context-name>` pour utiliser un autre espace de travail. Les références canoniques se résolvent toujours par rapport à l’espace de travail qui les possède.
* Une référence ne se résout pas : consultez [Une référence de secret ne se résout pas](/cli/fr/aide/troubleshooting/reference-does-not-resolve.md).

## Suivant

* [Take the passwords out of a .env file](/cli/fr/guides/secrets/replace-env-files.md)
* [What stays hidden, and what doesn't](/cli/fr/guides/understand/security-model.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.devolutions.net/cli/fr/guides/secrets/fill-a-template.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
