Configuración
Este modelo de configuración aplica solo a Atlassian Confluence Cloud. acs2md no es compatible con Confluence Server ni Confluence Data Center.
Las versiones publicadas están disponibles actualmente solo para macOS y Linux. No hay artefactos publicados para Windows en la versión actual.
acs2md aplica la configuración desde cuatro fuentes, en orden de prioridad ascendente:
| Prioridad | Fuente | Ejemplo |
|---|---|---|
| 1 (más baja) | Valores predeterminados integrados | |
| 2 | Archivo de configuración | (ver más abajo) |
| 3 | Variables de entorno | ACS2MD_CONFLUENCE_DOMAIN |
| 4 (más alta) | Flags de CLI | --log-level debug |
En la práctica, esto permite a los equipos separar valores persistentes de la estacion de trabajo, ajustes puntuales por ejecución y gestion de secretos especifica de la automatizacion.
Ubicación del archivo de configuración
La ubicación predeterminada del archivo de configuración depende del sistema operativo. Ejecuta:
acs2md config whereUso recomendado:
- guarda los valores no secretos en el archivo de configuración
- inyecta secretos mediante variables de entorno cuando sea posible
- reserva los flags de CLI para overrides puntuales y depuracion
Para crear un archivo de configuración con todos los valores por defecto rellenados:
acs2md config createmacOS
~/Library/Application Support/acs2md/
- config.yaml
- license.bin
Referencia completa del archivo de configuración
# Conexion con Confluence
confluence:
type: cloud # cloud | server | datacenter — solo se admite cloud
domain: mycompany.atlassian.net # Dominio de tu instancia de Confluence
username: you@example.com # Correo de tu cuenta de Atlassian
api_token: YOUR_API_TOKEN # API token de id.atlassian.com
# Comportamiento del cliente HTTP
http:
client:
max_retries: 3 # Numero de reintentos tras un fallo
base_timeout: 500ms # Timeout inicial de la petición
max_timeout: 30s # Timeout máximo después de reintentos
proxy: "" # URL del proxy HTTP (ej. http://proxy.corp:8080)
# Logging
log:
level: info # debug | info | warn | error
format: text # text | json
file:
"" # Ruta del log; stdout | stderr | /path/to/file.log
# Cada ejecución trunca el archivo
# Modo debug
debug:
enabled: false # Activa salida de depuración detallada
dir: debug # Directorio para artefactos de depuración
# Gestión de imágenes
image:
cache_dir: "" # Define esto solo si quieres fijar una caché compartida
max_size_bytes: 2097152 # Tamaño máximo por imagen (10 MB por defecto)Cuando image.cache_dir queda sin definir, las configuraciones generadas suelen omitir la clave para mantener el comportamiento por defecto orientado a la salida. En ese modo, acs2md ancla la caché en <output-dir>/<space-key>/.image_cache junto al archivo de estado, o en ./.image_cache cuando escribe en stdout. La clave del espacio siempre se añade a --output-dir. Define image.cache_dir explícitamente solo cuando necesites una ubicación fija de caché compartida entre exportaciones.
Variables de entorno
Cada clave de configuración puede definirse con una variable de entorno añadiendo el prefijo ACS2MD_ y sustituyendo . por _:
| Variable de entorno | Clave de configuración | Descripción |
|---|---|---|
ACS2MD_CONFLUENCE_DOMAIN | confluence.domain | Dominio de la instancia de Confluence |
ACS2MD_CONFLUENCE_USERNAME | confluence.username | Correo de la cuenta de Atlassian |
ACS2MD_CONFLUENCE_API_TOKEN | confluence.api_token | Token API de Confluence |
ACS2MD_HTTP_CLIENT_MAX_RETRIES | http.client.max_retries | Número de reintentos |
ACS2MD_HTTP_CLIENT_BASE_TIMEOUT | http.client.base_timeout | Tiempo de espera base de la petición |
ACS2MD_HTTP_CLIENT_MAX_TIMEOUT | http.client.max_timeout | Tiempo de espera máximo |
ACS2MD_HTTP_CLIENT_PROXY | http.client.proxy | URL del proxy HTTP |
ACS2MD_LOG_LEVEL | log.level | Nivel de logging |
ACS2MD_LOG_FORMAT | log.format | Formato del logging |
ACS2MD_LOG_FILE | log.file | Archivo de salida del logging |
ACS2MD_DEBUG_ENABLED | debug.enabled | Activa el modo debug |
ACS2MD_IMAGE_CACHE_DIR | image.cache_dir | Directorio de caché de imágenes |
ACS2MD_IMAGE_MAX_SIZE_BYTES | image.max_size_bytes | Tamaño máximo de imagen |
Flags globales de CLI
Estos flags están disponibles en todos los comandos:
| Flag | Predeterminado | Descripción |
|---|---|---|
--config-file | (ver config where) | Ruta a un archivo de configuración personalizado |
--log-level | info | Verbosidad del log: debug, info, warn, error |
--log-format | text | Formato del log: text o json |
--log-file | (descartar) | Escribe logs en stdout, stderr o una ruta de archivo |
--debug | false | Atajo de --log-level=debug |
--image-cache-dir | (ninguno) | Directorio para cachear imágenes descargadas |
--image-max-size-bytes | 10485760 | Tamaño máximo en bytes para imágenes cacheadas |
Prácticas seguras de configuración
- Prefiere variables de entorno para API tokens en sistemas compartidos o gestionados.
- Usa
config createpara establecer la estructura esperada del archivo antes de editarlo manualmente. - Ejecuta
doctordespués de cambios de configuración para validar juntos licencia, credenciales y conectividad. - Usa un
--config-filepersonalizado cuando necesites configuraciones aisladas de prueba y produccion en la misma máquina.
Reintentos y límite de peticiones
Todas las peticiones pasan por un único cliente HTTP compartido con un presupuesto de reintentos acotado. Lo controlan tres ajustes:
| Clave | Predeterminado | Significado |
|---|---|---|
http.client.max_retries | 3 | Cuántas veces se reintenta una petición fallida |
http.client.base_timeout | 500ms | El primer retardo de backoff; cada reintento lo duplica |
http.client.max_timeout | 30s | Techo de un único retardo de backoff |
Con los valores por defecto, los tres reintentos esperan 500 ms, 1 s y 2 s.
Se respeta Retry-After
Cuando Confluence responde a una petición limitada con 429 o 503 e indica un retardo, el cliente espera exactamente ese tiempo en lugar de recurrir a su propia planificación. El servidor sabe cuánto dura su ventana; el cliente no.
Un Retry-After superior a 60 segundos no se respeta: se muestra la respuesta para que decidas tú, en vez de que el comando parezca colgado. La espera es interrumpible, así que Ctrl+C durante una pausa por límite de peticiones surte efecto de inmediato.
Actualizar no cambia un archivo de configuración existente. Los valores
por defecto del backoff subieron de 10ms/100ms a 500ms/30s, pero un
archivo de configuración materializa todos los valores por defecto en el
momento de crearse, y la configuración gana a los valores por defecto. Una
instalación creada antes del cambio conserva el par antiguo: un presupuesto
total de 70 ms repartido en tres intentos, incapaz de sobrevivir a ninguna
ventana real de limitación.
Compruébalo con doctor, que informa del backoff total que produce realmente tu configuración y avisa cuando es demasiado corto para aguantar un límite de peticiones:
❌ HTTP retry budget only 70ms total across 3 retries — too short to wait out
a rate limit; raise it with 'acs2md config set
http.client.base_timeout 500ms' and ...Después súbelos:
acs2md config set http.client.base_timeout 500ms
acs2md config set http.client.max_timeout 30sUn proxy inválido es un error
Un http.client.proxy que no se puede interpretar detiene el comando, en lugar de registrar un aviso y continuar sin proxy. Enviar el tráfico directo en silencio cuando se pidió explícitamente enrutarlo es, en una red corporativa, un fallo por el que merece la pena detenerse.
Detrás de un proxy corporativo
acs2md config set http.client.proxy "http://proxy.corp.example.com:8080"Con autenticación:
acs2md config set http.client.proxy "http://user:password@proxy.corp.example.com:8080"Evita almacenar credenciales del proxy en el archivo de configuración si se
comparte o esta versionado. Usa en su lugar la variable de entorno
ACS2MD_HTTP_CLIENT_PROXY.
Escribir logs en un archivo
acs2md space convert by-key MYSPACE --log-file acs2md.logCada ejecución trunca el archivo de log, por lo que siempre contiene solo la salida de la ejecución más reciente. Usa stdout o stderr para enviar logs directamente a tu terminal:
acs2md space convert by-key MYSPACE --log-file stdout