> ## Documentation Index
> Fetch the complete documentation index at: https://certplane.kippel.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Hosts

> Vincula una identidad de step-ca con los perfiles que puede solicitar.

El map `hosts` vincula la **identidad de máquina** de cada host gestionado con el conjunto de perfiles que puede solicitar.

```yaml theme={null}
hosts:
  edge01:
    identity: edge01.h.int.example.com
    profiles:
      - public_edge_main

  api01:
    identity: api01.h.int.example.com
    profiles:
      - api_san
      - public_edge_main
```

## Campos

| Campo      | Tipo      | Obligatorio | Notas                                                             |
| ---------- | --------- | ----------- | ----------------------------------------------------------------- |
| `identity` | string    | sí          | CN del certificado de identidad del host (emitido por `step-ca`). |
| `profiles` | string\[] | sí          | Lista no vacía de nombres de perfil.                              |

La clave de nivel superior (`edge01`, `api01`) es solo una etiqueta humana — aparece en auditoría y validación. El broker autoriza por `identity`.

## Reglas de matching

* `identity` debe ser un CN estable — el agente lo presenta como CN del certificado cliente sobre mTLS.
* Dos entradas no pueden compartir `identity`. El compilador rechaza duplicados.
* `profiles` deben referenciar perfiles del mismo archivo.
* Un agente que pide un perfil no listado para su host es rechazado, aunque el perfil exista.

## Añadir un host

1. Emite un token de `step-ca` para el nuevo CN.
2. Añade una entrada `hosts.<etiqueta>`:

   ```yaml theme={null}
   hosts:
     edge02:
       identity: edge02.h.int.example.com
       profiles:
         - public_edge_main
   ```
3. Con `policy.watch: true` el cambio se aplica al instante. Si no, reinicia el broker.
4. Despliega el agente y ejecuta `enroll`.

## Eliminar un host

Borra su entrada en `hosts`. Con `policy.watch: true` se aplica al siguiente cambio de archivo. El certificado de identidad puede seguir siendo válido (eso lo decide `step-ca`), pero el broker rechazará todas sus peticiones.

## Valida la lista de hosts

```bash theme={null}
certplane-broker -c /etc/certplane/broker.yml policy validate --policy /etc/certplane/policy.yml
```

La salida incluye el número de identidades compiladas:

```
policy ok: hash=abc123… profiles=2 identities=42
```
