> 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/de/anleitungen/secrets/fill-a-template.md).

# Eine Konfigurationsdatei aus einer Vorlage füllen

Eine Konfigurationsdatei aus einer Vorlage mit devo-Referenzen erzeugen, mit devo secret inject, für Werkzeuge, die Geheimnisse nicht aus der Umgebung lesen können.

Manche Tools lesen ihre Einstellungen nur aus einer Datei, etwa `appsettings.json`, eine YAML-Konfiguration oder eine `.npmrc`. Mit `devo secret inject` behalten Sie im Repository eine Vorlage mit `devo://`-Referenzen und erzeugen die echte Datei, wenn Sie sie brauchen.

{% hint style="warning" %}
Die Datei, die `devo secret inject` erzeugt, enthält Ihre Geheimnisse im Klartext. Verwenden Sie sie nur, wenn das Tool seine Geheimnisse nicht aus der Umgebung übernehmen kann, löschen Sie sie, wenn Sie fertig sind, und committen Sie sie nie. Wenn das Tool Umgebungsvariablen lesen kann, verwenden Sie stattdessen [devo secret run](/cli/de/anleitungen/secrets/run-with-secrets.md): Die Werte berühren dann nie die Festplatte.
{% endhint %}

## Die Vorlage schreiben

Setzen Sie eine Referenz überall hin, wo ein Geheimnis hingehört. Schließen Sie sie in `{{ }}` ein, damit Devolutions CLI genau weiß, wo sie beginnt und endet:

```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 }}"
  }
}
```

Eine Referenz ohne `{{ }}` funktioniert ebenfalls. Sie endet beim ersten Leerzeichen, Anführungszeichen, `<`, `>`, `)`, `]` oder `}`.

Innerhalb einer Referenz werden `$NAME`, `${NAME}` und `${NAME:-default}` durch den Wert einer Umgebungsvariable ersetzt, bevor die Referenz aufgelöst wird. Nutzen Sie das, um eine Vorlage zwischen Umgebungen zu teilen, zum Beispiel `devo://ws/${WORKSPACE_ID}/vault/…`.

## Die Datei erzeugen

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

<table><thead><tr><th width="200">OPTION</th><th>WAS ES TUT</th></tr></thead><tbody><tr><td><code>--in-file</code>, <code>-i</code></td><td>Die zu lesende Vorlage. Ohne sie liest Devolutions CLI die Vorlage von der Standardeingabe.</td></tr><tr><td><code>--out-file</code>, <code>-f</code></td><td>Die zu schreibende Datei. Ohne sie geht das Ergebnis auf die Standardausgabe.</td></tr><tr><td><code>--force</code></td><td>Ersetzt die Ausgabedatei, wenn sie bereits vorhanden ist. Ohne sie stoppt der Befehl, bevor er ein Geheimnis liest.</td></tr></tbody></table>

Sie können auch mit Pipes arbeiten, zum Beispiel um das Ergebnis direkt an ein anderes Programm zu übergeben:

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

{% hint style="warning" %}
Wenn eine Referenz nicht aufgelöst werden kann, erhält das nächste Programm in der Pipe die Zusammenfassungszeile `References: <resolved>/<total> resolved` statt Ihrer Konfiguration. Prüfen Sie in einem Skript den Exitcode von `devo secret inject`, oder schreiben Sie mit `--out-file` in eine Datei.
{% endhint %}

## Worauf Sie sich verlassen können

* **Alles oder nichts.** Wenn eine Referenz nicht aufgelöst werden kann, schreibt Devolutions CLI keine Datei und nichts von der Vorlage. Es listet die Fehler auf der Fehlerausgabe auf, gibt eine Zusammenfassungszeile wie `References: 1/2 resolved` auf der Standardausgabe aus und endet mit Code `1`.
* **Private Datei.** Die Ausgabedatei wird mit privaten Berechtigungen erstellt: Unter macOS und Linux kann nur Ihr Benutzerkonto sie lesen; unter Windows Ihr Konto, das Systemkonto und Administratoren.
* **Keine halb geschriebene Datei.** Devolutions CLI schreibt in eine temporäre Datei im selben Ordner und verschiebt sie dann an ihren Platz.
* **Jede Referenz wird einmal gelesen.** Eine Referenz, die in der Vorlage mehrmals vorkommt, wird einmal aufgelöst.

Mit `--output json` gibt der Befehl eine Zusammenfassung statt des Inhalts zurück: wie viele Referenzen er gefunden und aufgelöst hat. Die Werte sind nicht darin.

## Gut zu wissen

* Bei der Standardausgabe erscheinen die Werte in Ihrem Terminal oder in dem, was die Pipe liest. Bevorzugen Sie `--out-file`, wenn Sie keine Pipe brauchen.
* Referenzen werden über den aktuellen Kontext aufgelöst. Fügen Sie `--context <context-name>` hinzu, um einen anderen Workspace zu verwenden. Kanonische Referenzen werden immer gegen den Workspace aufgelöst, dem sie gehören.
* Eine Referenz wird nicht aufgelöst: siehe [Eine Geheimnisreferenz wird nicht aufgelöst](/cli/de/hilfe/troubleshooting/reference-does-not-resolve.md).

## Weiter

* [Take the passwords out of a .env file](/cli/de/anleitungen/secrets/replace-env-files.md)
* [What stays hidden, and what doesn't](/cli/de/anleitungen/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/de/anleitungen/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.
