621e8895c9
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
52 lines
1.8 KiB
Markdown
52 lines
1.8 KiB
Markdown
---
|
|
name: wg_install
|
|
kind: function
|
|
lang: bash
|
|
domain: infra
|
|
version: "1.0.0"
|
|
purity: impure
|
|
signature: "wg_install() -> json"
|
|
description: "Instala wireguard + wireguard-tools en Linux (debian/ubuntu/fedora/arch). Idempotente. Carga modulo kernel. Emite JSON con distro detectada y version instalada."
|
|
tags: [wireguard, install, infra, mesh, deploy]
|
|
uses_functions: []
|
|
uses_types: []
|
|
returns: []
|
|
returns_optional: false
|
|
error_type: "error_go_core"
|
|
imports: []
|
|
params: []
|
|
output: "JSON {status, distro, version}. status=installed o already-present."
|
|
tested: false
|
|
tests: []
|
|
test_file_path: ""
|
|
file_path: "bash/functions/infra/wg_install.sh"
|
|
---
|
|
|
|
## Ejemplo
|
|
|
|
```bash
|
|
source bash/functions/infra/wg_install.sh
|
|
wg_install
|
|
# {"status":"installed","distro":"ubuntu","version":"wireguard-tools 1.0.20210914"}
|
|
|
|
# Si ya está instalado:
|
|
wg_install
|
|
# {"status":"already-present","distro":"ubuntu","version":"wireguard-tools 1.0.20210914"}
|
|
```
|
|
|
|
## Cuando usarla
|
|
|
|
Cuando necesites asegurarte de que wireguard-tools está disponible en un host antes de configurar un peer o hub WireGuard. Úsala como paso previo en pipelines de bootstrapping de nodos mesh (flow wireguard).
|
|
|
|
## Gotchas
|
|
|
|
- Requiere `sudo` con NOPASSWD para apt-get/dnf/pacman y para modprobe. El operador debe haberlo configurado antes.
|
|
- `modprobe wireguard` puede fallar en kernels < 5.6 sin DKMS instalado (wireguard-dkms). La función lo trata como advertencia, no como error fatal — la instalación de las herramientas igual se completa.
|
|
- En RHEL/CentOS instala `epel-release` automáticamente antes de wireguard-tools.
|
|
- Distros no reconocidas en `/etc/os-release ID` producen exit 1 con mensaje de error explícito en stderr.
|
|
- Los logs van siempre a stderr con prefijo `[wg_install]`; stdout es exclusivamente el JSON de resultado.
|
|
|
|
## Capability growth log
|
|
|
|
<!-- Rellenar solo cuando haya version bump real -->
|