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

# Compilare un file di configurazione da un modello

Generare un file di configurazione da un modello con riferimenti devo, con devo secret inject, per gli strumenti che non possono leggere i segreti dall’ambiente.

Alcuni strumenti leggono le impostazioni solo da un file, come `appsettings.json`, una configurazione YAML o un `.npmrc`. Con `devo secret inject`, tiene nel repository un modello con riferimenti `devo://` e genera il file reale quando ne ha bisogno.

{% hint style="warning" %}
Il file prodotto da `devo secret inject` contiene i segreti in testo in chiaro. Lo usi solo quando lo strumento non può prendere i segreti dall’ambiente, lo elimini quando ha finito e non lo committi mai. Se lo strumento può leggere le variabili d’ambiente, usi invece [devo secret run](/cli/it/guide/secrets/run-with-secrets.md): i valori non toccano allora il disco.
{% endhint %}

## Scrivere il modello

Metta un riferimento ovunque vada un segreto. Lo racchiuda in `{{ }}` così Devolutions CLI sa esattamente dove inizia e dove finisce:

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

Funziona anche un riferimento senza `{{ }}`. Termina al primo spazio, virgoletta, `<`, `>`, `)`, `]` o `}`.

Dentro un riferimento, `$NAME`, `${NAME}` e `${NAME:-default}` vengono sostituiti dal valore di una variabile d’ambiente prima che il riferimento sia risolto. Lo usi per condividere un modello tra ambienti, per esempio `devo://ws/${WORKSPACE_ID}/vault/…`.

## Generare il file

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

<table><thead><tr><th width="200">OPZIONE</th><th>CHE COSA FA</th></tr></thead><tbody><tr><td><code>--in-file</code>, <code>-i</code></td><td>Il modello da leggere. Senza di esso, Devolutions CLI legge il modello dall’input standard.</td></tr><tr><td><code>--out-file</code>, <code>-f</code></td><td>Il file da scrivere. Senza di esso, il risultato va sull’output standard.</td></tr><tr><td><code>--force</code></td><td>Sostituisce il file di output se esiste già. Senza di essa, il comando si arresta prima di leggere qualsiasi segreto.</td></tr></tbody></table>

Può anche lavorare con le pipe, per esempio per passare il risultato direttamente a un altro programma:

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

{% hint style="warning" %}
Se un riferimento non può essere risolto, il programma successivo nella pipe riceve la riga di riepilogo `References: <resolved>/<total> resolved` invece della configurazione. In uno script, controlli il codice di uscita di `devo secret inject`, oppure scriva in un file con `--out-file`.
{% endhint %}

## Su che cosa può contare

* **Tutto o niente.** Se un riferimento non può essere risolto, Devolutions CLI non scrive alcun file e nulla del modello. Elenca gli errori sull’output di errore, stampa una riga di riepilogo come `References: 1/2 resolved` sull’output standard e termina con il codice `1`.
* **File privato.** Il file di output è creato con autorizzazioni private: su macOS e Linux, solo l’account utente può leggerlo; su Windows, l’account, l’account di sistema e gli amministratori.
* **Nessun file scritto a metà.** Devolutions CLI scrive in un file temporaneo nella stessa cartella, poi lo sposta al suo posto.
* **Ogni riferimento viene letto una volta.** Un riferimento usato più volte nel modello viene risolto una sola volta.

Con `--output json`, il comando restituisce un riepilogo invece del contenuto: quanti riferimenti ha trovato e risolto. I valori non ci sono.

## Buono a sapersi

* Con l’output standard, i valori compaiono nel terminale o in ciò che legge la pipe. Preferisca `--out-file` quando non le serve una pipe.
* I riferimenti si risolvono tramite il contesto corrente. Aggiunga `--context <context-name>` per usare un altro spazio di lavoro. I riferimenti canonici si risolvono sempre rispetto allo spazio di lavoro che li possiede.
* Un riferimento non si risolve: consulti [Un riferimento al segreto non si risolve](/cli/it/aiuto/troubleshooting/reference-does-not-resolve.md).

## Successivo

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