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

# Rellenar un archivo de configuración a partir de una plantilla

Generar un archivo de configuración desde una plantilla con referencias devo, con devo secret inject, para las herramientas que no pueden leer secretos desde el entorno.

Algunas herramientas solo leen su configuración desde un archivo, como `appsettings.json`, una configuración YAML o un `.npmrc`. Con `devo secret inject`, conserva en el repositorio una plantilla con referencias `devo://` y genera el archivo real cuando lo necesita.

{% hint style="warning" %}
El archivo que produce `devo secret inject` contiene sus secretos en texto sin formato. Úselo solo cuando la herramienta no pueda tomar sus secretos del entorno, elimínelo cuando haya terminado y no lo incluya nunca en un commit. Si la herramienta puede leer variables de entorno, use [devo secret run](/cli/es/guias/secrets/run-with-secrets.md) en su lugar: los valores no tocan entonces el disco.
{% endhint %}

## Escribir la plantilla

Ponga una referencia dondequiera que vaya un secreto. Envuélvala en `{{ }}` para que Devolutions CLI sepa exactamente dónde empieza y dónde termina:

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

Una referencia sin `{{ }}` también funciona. Termina en el primer espacio, comilla, `<`, `>`, `)`, `]` o `}`.

Dentro de una referencia, `$NAME`, `${NAME}` y `${NAME:-default}` se sustituyen por el valor de una variable de entorno antes de que se resuelva la referencia. Úselo para compartir una plantilla entre entornos, por ejemplo `devo://ws/${WORKSPACE_ID}/vault/…`.

## Generar el archivo

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

<table><thead><tr><th width="200">OPCIÓN</th><th>QUÉ HACE</th></tr></thead><tbody><tr><td><code>--in-file</code>, <code>-i</code></td><td>La plantilla que se va a leer. Sin ella, Devolutions CLI lee la plantilla de la entrada estándar.</td></tr><tr><td><code>--out-file</code>, <code>-f</code></td><td>El archivo que se va a escribir. Sin él, el resultado va a la salida estándar.</td></tr><tr><td><code>--force</code></td><td>Sustituye el archivo de salida si ya existe. Sin ella, el comando se detiene antes de leer ningún secreto.</td></tr></tbody></table>

También puede trabajar con tuberías, por ejemplo para pasar el resultado directamente a otro programa:

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

{% hint style="warning" %}
Si una referencia no se puede resolver, el siguiente programa de la canalización recibe la línea de resumen `References: <resolved>/<total> resolved` en lugar de su configuración. En un script, compruebe el código de salida de `devo secret inject`, o escriba en un archivo con `--out-file`.
{% endhint %}

## En qué puede confiar

* **Todo o nada.** Si una referencia no se puede resolver, Devolutions CLI no escribe ningún archivo ni nada de la plantilla. Enumera los errores en la salida de error, imprime una línea de resumen como `References: 1/2 resolved` en la salida estándar y termina con el código `1`.
* **Archivo privado.** El archivo de salida se crea con permisos privados: en macOS y Linux, solo su cuenta de usuario puede leerlo; en Windows, su cuenta, la cuenta del sistema y los administradores.
* **Ningún archivo a medias.** Devolutions CLI escribe en un archivo temporal de la misma carpeta y luego lo coloca en su sitio.
* **Cada referencia se lee una vez.** Una referencia usada varias veces en la plantilla se resuelve una sola vez.

Con `--output json`, el comando devuelve un resumen en lugar del contenido: cuántas referencias encontró y resolvió. Los valores no están en él.

## Bueno saberlo

* Con la salida estándar, los valores aparecen en el terminal o en lo que lee la canalización. Prefiera `--out-file` cuando no necesite una canalización.
* Las referencias se resuelven a través del contexto actual. Añada `--context <context-name>` para usar otro espacio de trabajo. Las referencias canónicas se resuelven siempre contra el espacio de trabajo al que pertenecen.
* Una referencia no se resuelve: consulte [Una referencia de secreto no se resuelve](/cli/es/ayuda/troubleshooting/reference-does-not-resolve.md).

## Siguiente

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