paramsx 2.0.0__tar.gz → 2.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {paramsx-2.0.0 → paramsx-2.1.0}/CHANGELOG.md +15 -0
- {paramsx-2.0.0/paramsx.egg-info → paramsx-2.1.0}/PKG-INFO +17 -4
- {paramsx-2.0.0 → paramsx-2.1.0}/README.md +16 -3
- {paramsx-2.0.0 → paramsx-2.1.0}/paramsx/main.py +43 -8
- {paramsx-2.0.0 → paramsx-2.1.0}/paramsx/paramsx_config.py +7 -0
- {paramsx-2.0.0 → paramsx-2.1.0/paramsx.egg-info}/PKG-INFO +17 -4
- {paramsx-2.0.0 → paramsx-2.1.0}/setup.py +1 -1
- {paramsx-2.0.0 → paramsx-2.1.0}/LICENSE +0 -0
- {paramsx-2.0.0 → paramsx-2.1.0}/MANIFEST.in +0 -0
- {paramsx-2.0.0 → paramsx-2.1.0}/paramsx/__init__.py +0 -0
- {paramsx-2.0.0 → paramsx-2.1.0}/paramsx/funcions.py +0 -0
- {paramsx-2.0.0 → paramsx-2.1.0}/paramsx/text.py +0 -0
- {paramsx-2.0.0 → paramsx-2.1.0}/paramsx.egg-info/SOURCES.txt +0 -0
- {paramsx-2.0.0 → paramsx-2.1.0}/paramsx.egg-info/dependency_links.txt +0 -0
- {paramsx-2.0.0 → paramsx-2.1.0}/paramsx.egg-info/entry_points.txt +0 -0
- {paramsx-2.0.0 → paramsx-2.1.0}/paramsx.egg-info/requires.txt +0 -0
- {paramsx-2.0.0 → paramsx-2.1.0}/paramsx.egg-info/top_level.txt +0 -0
- {paramsx-2.0.0 → paramsx-2.1.0}/setup.cfg +0 -0
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.1.0
|
|
4
|
+
|
|
5
|
+
### Añadido
|
|
6
|
+
|
|
7
|
+
- **Flag `obligatorias_vacias`** en `~/.xsoft/paramsx_config.py`. Solo tiene efecto con `abac = True`:
|
|
8
|
+
- `False` (valor por defecto, comportamiento de la 2.0.0): validación bloqueante. Si a un parámetro le falta cualquiera de las tags obligatorias no se sube ni su valor ni sus tags, y al crear un parámetro no se puede dejar una tag en blanco.
|
|
9
|
+
- `True`: se permite dejar vacías las tags obligatorias. El parámetro se sube igualmente y **las tags sin valor no se crean en AWS**: nunca se suben etiquetas vacías. En la creación puedes saltar una tag pulsando Enter y el resumen previo lista cuáles quedan vacías.
|
|
10
|
+
- El informe de carga incluye un bloque `Tags obligatorias vacías` con el parámetro y las tags afectadas, para dejar constancia sin bloquear.
|
|
11
|
+
|
|
12
|
+
No hay que tocar nada en la configuración para actualizar desde la 2.0.0: si no defines `obligatorias_vacias`, se asume `False` y todo sigue igual.
|
|
13
|
+
|
|
14
|
+
### Nota
|
|
15
|
+
|
|
16
|
+
Vaciar una tag **que ya tenía valor en AWS** sigue significando borrarla del parámetro, en los dos modos. Es la forma de eliminar una tag. Lo que cambia con `obligatorias_vacias = True` es que una tag en blanco que nunca existió simplemente no se crea, en vez de bloquear la subida.
|
|
17
|
+
|
|
3
18
|
## 2.0.0
|
|
4
19
|
|
|
5
20
|
### ⚠ Breaking change: hay que actualizar `~/.xsoft/paramsx_config.py` a mano
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: paramsx
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.1.0
|
|
4
4
|
Summary: Librería para gestionar y respaldar parámetros de AWS SSM de manera sencilla y eficiente.
|
|
5
5
|
Home-page: https://github.com/pistatxos/paramsx
|
|
6
6
|
Author: Mariox
|
|
@@ -147,6 +147,8 @@ configuraciones = {
|
|
|
147
147
|
|
|
148
148
|
abac = True
|
|
149
149
|
|
|
150
|
+
obligatorias_vacias = False
|
|
151
|
+
|
|
150
152
|
tags_obligatorias = [
|
|
151
153
|
"Application", "Environment", "Owner", "Project",
|
|
152
154
|
"Product", "Service", "Component", "ManagedBy",
|
|
@@ -237,14 +239,25 @@ parametros = [
|
|
|
237
239
|
|
|
238
240
|
Este formato con tags **solo existe en el fichero temporal que genera ParamsX**: no se ve en la consola de AWS ni se persiste en ningún otro sitio. Tiene el mismo ciclo de vida que el resto del fichero (se genera, se edita, se compara, se aplica y se borra al confirmar).
|
|
239
241
|
|
|
242
|
+
#### `obligatorias_vacias`: cuando alguna tag tiene que ir vacía
|
|
243
|
+
|
|
244
|
+
En la práctica hay parámetros a los que no les aplica alguna de las 8 tags. Ese caso se controla con `obligatorias_vacias`, y solo tiene efecto si `abac = True`:
|
|
245
|
+
|
|
246
|
+
| `obligatorias_vacias` | Comportamiento |
|
|
247
|
+
|---|---|
|
|
248
|
+
| `False` (por defecto) | Validación bloqueante: si a un parámetro le falta cualquiera de las tags obligatorias no se sube **ni su valor ni sus tags**. Al crear un parámetro tampoco te deja continuar dejando una tag en blanco. |
|
|
249
|
+
| `True` | Se permiten vacías: el parámetro se sube igualmente y **las tags sin valor no se crean en AWS** (no se suben como etiquetas vacías). En el informe de carga verás qué parámetros han quedado con tags vacías y cuáles son. |
|
|
250
|
+
|
|
251
|
+
Ojo con la diferencia entre "vacía" y "borrada": con `obligatorias_vacias = True`, una tag que se deja en blanco y **nunca existió** simplemente no se crea; pero si esa tag **ya tenía valor en AWS** y la vacías en el fichero, se interpreta como que quieres borrarla y se elimina del parámetro. Es la forma de quitar una tag.
|
|
252
|
+
|
|
240
253
|
Detalles del comportamiento con `abac = True`:
|
|
241
254
|
|
|
242
|
-
- La validación es **
|
|
255
|
+
- La validación es **por parámetro**, no global: con `obligatorias_vacias = False`, si a uno le falta cualquiera de las 8 tags no se sube ni su valor ni sus tags, y verás un error indicando qué tags faltan y a qué `parameter_name`. El resto de parámetros del fichero que estén completos se suben con normalidad.
|
|
243
256
|
- Cuando una carga queda a medias, los ficheros `parameters_{entorno}.py` y su backup **no se borran**, para que corrijas lo que falta y vuelvas a cargar. El backup se resincroniza con lo ya aplicado, así que la segunda pasada solo sube lo que quedó pendiente.
|
|
244
257
|
- Si el parámetro ya existe y le faltan tags (creado antes de esta versión), se rellenan en este mismo flujo de edición, sin borrar ni recrear el parámetro.
|
|
245
258
|
- Los cambios de tags se aplican con `add_tags_to_resource` / `remove_tags_from_resource` en la misma pasada que el valor. Vaciar el campo de una tag en el fichero equivale a borrarla en AWS.
|
|
246
259
|
- Las tags de sistema (`aws:*`) no se exportan ni se tocan. Las tags que ya existan en AWS y no estén en la lista obligatoria se conservan y se pueden editar.
|
|
247
|
-
- No hay forma de saltarse la validación salvo
|
|
260
|
+
- No hay forma de saltarse la validación por parámetro salvo relajarla explícitamente en tu configuración con `obligatorias_vacias = True`, o desactivar las tags por completo con `abac = False`.
|
|
248
261
|
|
|
249
262
|
#### Configuración manual del PATH
|
|
250
263
|
En algunos sistemas (especialmente en entornos corporativos como Windows), el PATH puede no configurarse automáticamente durante la instalación. Si ocurre esto, sigue los pasos según tu sistema operativo:
|
|
@@ -307,7 +320,7 @@ El programa mostrará un menú donde Podrás:
|
|
|
307
320
|
1. Selecciona la opción "Crear nuevo parámetro" y elige el entorno.
|
|
308
321
|
2. Escribe la ruta completa en convención `min` (`/dev/...`): se fuerza a minúscula y se valida que el primer segmento sea el entorno.
|
|
309
322
|
3. Escribe el valor: texto plano o JSON en una línea.
|
|
310
|
-
4. Rellena las tags obligatorias (si `abac = True`). `Environment` viene precargada con el entorno elegido.
|
|
323
|
+
4. Rellena las tags obligatorias (si `abac = True`). `Environment` viene precargada con el entorno elegido. Con `obligatorias_vacias = True` puedes dejar alguna en blanco pulsando Enter: esas no se crearán en AWS.
|
|
311
324
|
5. Confirma en la pantalla de resumen. Si es un parámetro de RDS y falta su contraparte (común o privado), verás el aviso de correlación de naming ahí mismo.
|
|
312
325
|
|
|
313
326
|
### Backup Parámetros:
|
|
@@ -127,6 +127,8 @@ configuraciones = {
|
|
|
127
127
|
|
|
128
128
|
abac = True
|
|
129
129
|
|
|
130
|
+
obligatorias_vacias = False
|
|
131
|
+
|
|
130
132
|
tags_obligatorias = [
|
|
131
133
|
"Application", "Environment", "Owner", "Project",
|
|
132
134
|
"Product", "Service", "Component", "ManagedBy",
|
|
@@ -217,14 +219,25 @@ parametros = [
|
|
|
217
219
|
|
|
218
220
|
Este formato con tags **solo existe en el fichero temporal que genera ParamsX**: no se ve en la consola de AWS ni se persiste en ningún otro sitio. Tiene el mismo ciclo de vida que el resto del fichero (se genera, se edita, se compara, se aplica y se borra al confirmar).
|
|
219
221
|
|
|
222
|
+
#### `obligatorias_vacias`: cuando alguna tag tiene que ir vacía
|
|
223
|
+
|
|
224
|
+
En la práctica hay parámetros a los que no les aplica alguna de las 8 tags. Ese caso se controla con `obligatorias_vacias`, y solo tiene efecto si `abac = True`:
|
|
225
|
+
|
|
226
|
+
| `obligatorias_vacias` | Comportamiento |
|
|
227
|
+
|---|---|
|
|
228
|
+
| `False` (por defecto) | Validación bloqueante: si a un parámetro le falta cualquiera de las tags obligatorias no se sube **ni su valor ni sus tags**. Al crear un parámetro tampoco te deja continuar dejando una tag en blanco. |
|
|
229
|
+
| `True` | Se permiten vacías: el parámetro se sube igualmente y **las tags sin valor no se crean en AWS** (no se suben como etiquetas vacías). En el informe de carga verás qué parámetros han quedado con tags vacías y cuáles son. |
|
|
230
|
+
|
|
231
|
+
Ojo con la diferencia entre "vacía" y "borrada": con `obligatorias_vacias = True`, una tag que se deja en blanco y **nunca existió** simplemente no se crea; pero si esa tag **ya tenía valor en AWS** y la vacías en el fichero, se interpreta como que quieres borrarla y se elimina del parámetro. Es la forma de quitar una tag.
|
|
232
|
+
|
|
220
233
|
Detalles del comportamiento con `abac = True`:
|
|
221
234
|
|
|
222
|
-
- La validación es **
|
|
235
|
+
- La validación es **por parámetro**, no global: con `obligatorias_vacias = False`, si a uno le falta cualquiera de las 8 tags no se sube ni su valor ni sus tags, y verás un error indicando qué tags faltan y a qué `parameter_name`. El resto de parámetros del fichero que estén completos se suben con normalidad.
|
|
223
236
|
- Cuando una carga queda a medias, los ficheros `parameters_{entorno}.py` y su backup **no se borran**, para que corrijas lo que falta y vuelvas a cargar. El backup se resincroniza con lo ya aplicado, así que la segunda pasada solo sube lo que quedó pendiente.
|
|
224
237
|
- Si el parámetro ya existe y le faltan tags (creado antes de esta versión), se rellenan en este mismo flujo de edición, sin borrar ni recrear el parámetro.
|
|
225
238
|
- Los cambios de tags se aplican con `add_tags_to_resource` / `remove_tags_from_resource` en la misma pasada que el valor. Vaciar el campo de una tag en el fichero equivale a borrarla en AWS.
|
|
226
239
|
- Las tags de sistema (`aws:*`) no se exportan ni se tocan. Las tags que ya existan en AWS y no estén en la lista obligatoria se conservan y se pueden editar.
|
|
227
|
-
- No hay forma de saltarse la validación salvo
|
|
240
|
+
- No hay forma de saltarse la validación por parámetro salvo relajarla explícitamente en tu configuración con `obligatorias_vacias = True`, o desactivar las tags por completo con `abac = False`.
|
|
228
241
|
|
|
229
242
|
#### Configuración manual del PATH
|
|
230
243
|
En algunos sistemas (especialmente en entornos corporativos como Windows), el PATH puede no configurarse automáticamente durante la instalación. Si ocurre esto, sigue los pasos según tu sistema operativo:
|
|
@@ -287,7 +300,7 @@ El programa mostrará un menú donde Podrás:
|
|
|
287
300
|
1. Selecciona la opción "Crear nuevo parámetro" y elige el entorno.
|
|
288
301
|
2. Escribe la ruta completa en convención `min` (`/dev/...`): se fuerza a minúscula y se valida que el primer segmento sea el entorno.
|
|
289
302
|
3. Escribe el valor: texto plano o JSON en una línea.
|
|
290
|
-
4. Rellena las tags obligatorias (si `abac = True`). `Environment` viene precargada con el entorno elegido.
|
|
303
|
+
4. Rellena las tags obligatorias (si `abac = True`). `Environment` viene precargada con el entorno elegido. Con `obligatorias_vacias = True` puedes dejar alguna en blanco pulsando Enter: esas no se crearán en AWS.
|
|
291
304
|
5. Confirma en la pantalla de resumen. Si es un parámetro de RDS y falta su contraparte (común o privado), verás el aviso de correlación de naming ahí mismo.
|
|
292
305
|
|
|
293
306
|
### Backup Parámetros:
|
|
@@ -56,9 +56,12 @@ def load_config():
|
|
|
56
56
|
spec.loader.exec_module(modulo)
|
|
57
57
|
|
|
58
58
|
config = dict(modulo.configuraciones)
|
|
59
|
-
# 'abac' y 'tags_obligatorias' son opcionales en el fichero del
|
|
60
|
-
# si no están, se usan los valores de la plantilla que trae el paquete.
|
|
59
|
+
# 'abac', 'obligatorias_vacias' y 'tags_obligatorias' son opcionales en el fichero del
|
|
60
|
+
# usuario: si no están, se usan los valores de la plantilla que trae el paquete.
|
|
61
61
|
config["abac"] = bool(getattr(modulo, "abac", plantilla_config.abac))
|
|
62
|
+
config["obligatorias_vacias"] = bool(
|
|
63
|
+
getattr(modulo, "obligatorias_vacias", plantilla_config.obligatorias_vacias)
|
|
64
|
+
)
|
|
62
65
|
config["tags_obligatorias"] = list(
|
|
63
66
|
getattr(modulo, "tags_obligatorias", plantilla_config.tags_obligatorias)
|
|
64
67
|
)
|
|
@@ -142,7 +145,7 @@ def leer_ruta(stdscr, ssm, full_path, abac, tags_obligatorias):
|
|
|
142
145
|
|
|
143
146
|
|
|
144
147
|
# Feature 2: crear un parámetro nuevo, siempre en convención "min"
|
|
145
|
-
def crear_parametro(stdscr, ssm, entornos, abac, tags_obligatorias):
|
|
148
|
+
def crear_parametro(stdscr, ssm, entornos, abac, tags_obligatorias, obligatorias_vacias=False):
|
|
146
149
|
env_choice = show_environment_selection(stdscr, entornos)
|
|
147
150
|
if env_choice is None:
|
|
148
151
|
return
|
|
@@ -197,7 +200,14 @@ def crear_parametro(stdscr, ssm, entornos, abac, tags_obligatorias):
|
|
|
197
200
|
|
|
198
201
|
# 3. Tags obligatorias
|
|
199
202
|
tags = {}
|
|
203
|
+
faltantes = []
|
|
200
204
|
if abac:
|
|
205
|
+
if obligatorias_vacias:
|
|
206
|
+
ayuda_tags = ("Las tags sostienen el control de acceso ABAC vía IAM. "
|
|
207
|
+
"Puedes dejarla vacía: si no tiene valor no se creará en AWS.")
|
|
208
|
+
else:
|
|
209
|
+
ayuda_tags = "Las tags sostienen el control de acceso ABAC vía IAM: son obligatorias."
|
|
210
|
+
|
|
201
211
|
for indice, clave in enumerate(tags_obligatorias, start=1):
|
|
202
212
|
predeterminado = entorno if clave == "Environment" else ""
|
|
203
213
|
respuesta = prompt_input(
|
|
@@ -205,14 +215,15 @@ def crear_parametro(stdscr, ssm, entornos, abac, tags_obligatorias):
|
|
|
205
215
|
f"Crear nuevo parámetro (3/3): tags [{indice}/{len(tags_obligatorias)}]",
|
|
206
216
|
f"Valor de la tag obligatoria '{clave}':",
|
|
207
217
|
valor=predeterminado,
|
|
208
|
-
|
|
218
|
+
permitir_vacio=obligatorias_vacias,
|
|
219
|
+
ayuda=ayuda_tags,
|
|
209
220
|
)
|
|
210
221
|
if respuesta is None:
|
|
211
222
|
return
|
|
212
223
|
tags[clave] = respuesta.strip()
|
|
213
224
|
|
|
214
225
|
faltantes = validar_tags_obligatorias(tags, tags_obligatorias)
|
|
215
|
-
if faltantes:
|
|
226
|
+
if faltantes and not obligatorias_vacias:
|
|
216
227
|
show_report(
|
|
217
228
|
stdscr,
|
|
218
229
|
"Tags obligatorias incompletas",
|
|
@@ -221,6 +232,9 @@ def crear_parametro(stdscr, ssm, entornos, abac, tags_obligatorias):
|
|
|
221
232
|
)
|
|
222
233
|
return
|
|
223
234
|
|
|
235
|
+
# Las tags sin valor no se suben a AWS
|
|
236
|
+
tags = {clave: valor for clave, valor in tags.items() if valor}
|
|
237
|
+
|
|
224
238
|
# Aviso de correlación de naming en RDS (no bloquea)
|
|
225
239
|
aviso_rds = check_rds_correlacion(ssm, path)
|
|
226
240
|
|
|
@@ -229,6 +243,10 @@ def crear_parametro(stdscr, ssm, entornos, abac, tags_obligatorias):
|
|
|
229
243
|
if abac:
|
|
230
244
|
lineas.append("Tags:")
|
|
231
245
|
lineas.extend([f" {clave} = {valor_tag}" for clave, valor_tag in tags.items()])
|
|
246
|
+
if faltantes:
|
|
247
|
+
lineas.append(
|
|
248
|
+
f" Se quedan vacías (no se crearán en AWS): {', '.join(faltantes)}"
|
|
249
|
+
)
|
|
232
250
|
lineas.append("")
|
|
233
251
|
if aviso_rds:
|
|
234
252
|
lineas.extend([aviso_rds, ""])
|
|
@@ -297,6 +315,7 @@ def main(stdscr, config=None):
|
|
|
297
315
|
PARAMETER_LIST = config['parameter_list']
|
|
298
316
|
ABAC = config['abac']
|
|
299
317
|
TAGS_OBLIGATORIAS = config['tags_obligatorias']
|
|
318
|
+
OBLIGATORIAS_VACIAS = config.get('obligatorias_vacias', False)
|
|
300
319
|
|
|
301
320
|
while True:
|
|
302
321
|
# Usar el menú con navegación por flechas
|
|
@@ -395,21 +414,28 @@ def main(stdscr, config=None):
|
|
|
395
414
|
|
|
396
415
|
aplicados = []
|
|
397
416
|
errores = []
|
|
417
|
+
vacias = []
|
|
398
418
|
|
|
399
419
|
for change in changes:
|
|
400
420
|
param_name = change["name"]
|
|
401
421
|
tipo = change["tipo"]
|
|
402
422
|
|
|
403
423
|
if tipo in ("Nuevo", "Modificado"):
|
|
404
|
-
# Validación bloqueante por parámetro: sin las tags obligatorias no se sube nada
|
|
405
424
|
if ABAC:
|
|
406
425
|
faltantes = validar_tags_obligatorias(change["tags"], TAGS_OBLIGATORIAS)
|
|
407
|
-
if faltantes:
|
|
426
|
+
if faltantes and not OBLIGATORIAS_VACIAS:
|
|
427
|
+
# Validación bloqueante por parámetro: sin las tags no se sube nada
|
|
408
428
|
errores.append(
|
|
409
429
|
f"✗ {param_name}: no se ha subido (ni valor ni tags). "
|
|
410
430
|
f"Faltan las tags obligatorias: {', '.join(faltantes)}."
|
|
411
431
|
)
|
|
412
432
|
continue
|
|
433
|
+
if faltantes:
|
|
434
|
+
# Permitidas vacías: se sube igual y esas tags no se crean en AWS
|
|
435
|
+
vacias.append(
|
|
436
|
+
f"· {param_name}: sin valor en {', '.join(faltantes)} "
|
|
437
|
+
"(no se crean en AWS)."
|
|
438
|
+
)
|
|
413
439
|
|
|
414
440
|
try:
|
|
415
441
|
if change["value_changed"]:
|
|
@@ -449,6 +475,10 @@ def main(stdscr, config=None):
|
|
|
449
475
|
|
|
450
476
|
lineas = [f"Cambios aplicados: {len(aplicados)} de {len(changes)}"]
|
|
451
477
|
|
|
478
|
+
if vacias:
|
|
479
|
+
lineas.extend(["", f"Tags obligatorias vacías ({len(vacias)}):"])
|
|
480
|
+
lineas.extend(vacias)
|
|
481
|
+
|
|
452
482
|
if errores:
|
|
453
483
|
# Se conservan los ficheros para que el usuario corrija y vuelva a cargar.
|
|
454
484
|
# El backup se resincroniza con lo ya aplicado para no repetir esos cambios.
|
|
@@ -589,7 +619,9 @@ def main(stdscr, config=None):
|
|
|
589
619
|
|
|
590
620
|
elif choice == 4:
|
|
591
621
|
# Crear nuevo parámetro (siempre en convención "min")
|
|
592
|
-
crear_parametro(
|
|
622
|
+
crear_parametro(
|
|
623
|
+
stdscr, ssm, environments, ABAC, TAGS_OBLIGATORIAS, OBLIGATORIAS_VACIAS
|
|
624
|
+
)
|
|
593
625
|
|
|
594
626
|
else:
|
|
595
627
|
show_message(stdscr, "Opción inválida. Inténtalo de nuevo.", 2)
|
|
@@ -630,6 +662,9 @@ Configuración (~/.xsoft/paramsx_config.py):
|
|
|
630
662
|
'max' -> /API/DEV/STA (entorno en mayúscula, tras el 1er segmento)
|
|
631
663
|
abac True para gestionar las tags obligatorias en el fichero exportado.
|
|
632
664
|
tags_obligatorias Tags que sostienen el control de acceso ABAC vía IAM.
|
|
665
|
+
obligatorias_vacias False -> no se sube un parámetro al que le falte alguna tag.
|
|
666
|
+
True -> se permite dejarlas vacías; las tags sin valor
|
|
667
|
+
no se crean en AWS.
|
|
633
668
|
|
|
634
669
|
Si necesitas más ayuda puedes leer el readme en GitHub o en Pypi:
|
|
635
670
|
- https://github.com/Pistatxos/paramsx
|
|
@@ -24,6 +24,13 @@ configuraciones = {
|
|
|
24
24
|
# False -> las tags no aparecen en el fichero exportado (comportamiento legacy, sin tags).
|
|
25
25
|
abac = True
|
|
26
26
|
|
|
27
|
+
# ¿Se pueden dejar vacías las tags obligatorias?
|
|
28
|
+
# False -> validación bloqueante: si a un parámetro le falta alguna de 'tags_obligatorias'
|
|
29
|
+
# no se sube (ni su valor ni sus tags).
|
|
30
|
+
# True -> se permiten vacías: el parámetro se sube igualmente y las tags sin valor
|
|
31
|
+
# simplemente NO se crean en AWS (no se suben como etiquetas vacías).
|
|
32
|
+
obligatorias_vacias = False
|
|
33
|
+
|
|
27
34
|
# Estas tags sostienen el control de acceso ABAC vía IAM en toda la cuenta AWS.
|
|
28
35
|
# La lista es ampliable, pero estas 8 son el mínimo por defecto.
|
|
29
36
|
tags_obligatorias = [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: paramsx
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.1.0
|
|
4
4
|
Summary: Librería para gestionar y respaldar parámetros de AWS SSM de manera sencilla y eficiente.
|
|
5
5
|
Home-page: https://github.com/pistatxos/paramsx
|
|
6
6
|
Author: Mariox
|
|
@@ -147,6 +147,8 @@ configuraciones = {
|
|
|
147
147
|
|
|
148
148
|
abac = True
|
|
149
149
|
|
|
150
|
+
obligatorias_vacias = False
|
|
151
|
+
|
|
150
152
|
tags_obligatorias = [
|
|
151
153
|
"Application", "Environment", "Owner", "Project",
|
|
152
154
|
"Product", "Service", "Component", "ManagedBy",
|
|
@@ -237,14 +239,25 @@ parametros = [
|
|
|
237
239
|
|
|
238
240
|
Este formato con tags **solo existe en el fichero temporal que genera ParamsX**: no se ve en la consola de AWS ni se persiste en ningún otro sitio. Tiene el mismo ciclo de vida que el resto del fichero (se genera, se edita, se compara, se aplica y se borra al confirmar).
|
|
239
241
|
|
|
242
|
+
#### `obligatorias_vacias`: cuando alguna tag tiene que ir vacía
|
|
243
|
+
|
|
244
|
+
En la práctica hay parámetros a los que no les aplica alguna de las 8 tags. Ese caso se controla con `obligatorias_vacias`, y solo tiene efecto si `abac = True`:
|
|
245
|
+
|
|
246
|
+
| `obligatorias_vacias` | Comportamiento |
|
|
247
|
+
|---|---|
|
|
248
|
+
| `False` (por defecto) | Validación bloqueante: si a un parámetro le falta cualquiera de las tags obligatorias no se sube **ni su valor ni sus tags**. Al crear un parámetro tampoco te deja continuar dejando una tag en blanco. |
|
|
249
|
+
| `True` | Se permiten vacías: el parámetro se sube igualmente y **las tags sin valor no se crean en AWS** (no se suben como etiquetas vacías). En el informe de carga verás qué parámetros han quedado con tags vacías y cuáles son. |
|
|
250
|
+
|
|
251
|
+
Ojo con la diferencia entre "vacía" y "borrada": con `obligatorias_vacias = True`, una tag que se deja en blanco y **nunca existió** simplemente no se crea; pero si esa tag **ya tenía valor en AWS** y la vacías en el fichero, se interpreta como que quieres borrarla y se elimina del parámetro. Es la forma de quitar una tag.
|
|
252
|
+
|
|
240
253
|
Detalles del comportamiento con `abac = True`:
|
|
241
254
|
|
|
242
|
-
- La validación es **
|
|
255
|
+
- La validación es **por parámetro**, no global: con `obligatorias_vacias = False`, si a uno le falta cualquiera de las 8 tags no se sube ni su valor ni sus tags, y verás un error indicando qué tags faltan y a qué `parameter_name`. El resto de parámetros del fichero que estén completos se suben con normalidad.
|
|
243
256
|
- Cuando una carga queda a medias, los ficheros `parameters_{entorno}.py` y su backup **no se borran**, para que corrijas lo que falta y vuelvas a cargar. El backup se resincroniza con lo ya aplicado, así que la segunda pasada solo sube lo que quedó pendiente.
|
|
244
257
|
- Si el parámetro ya existe y le faltan tags (creado antes de esta versión), se rellenan en este mismo flujo de edición, sin borrar ni recrear el parámetro.
|
|
245
258
|
- Los cambios de tags se aplican con `add_tags_to_resource` / `remove_tags_from_resource` en la misma pasada que el valor. Vaciar el campo de una tag en el fichero equivale a borrarla en AWS.
|
|
246
259
|
- Las tags de sistema (`aws:*`) no se exportan ni se tocan. Las tags que ya existan en AWS y no estén en la lista obligatoria se conservan y se pueden editar.
|
|
247
|
-
- No hay forma de saltarse la validación salvo
|
|
260
|
+
- No hay forma de saltarse la validación por parámetro salvo relajarla explícitamente en tu configuración con `obligatorias_vacias = True`, o desactivar las tags por completo con `abac = False`.
|
|
248
261
|
|
|
249
262
|
#### Configuración manual del PATH
|
|
250
263
|
En algunos sistemas (especialmente en entornos corporativos como Windows), el PATH puede no configurarse automáticamente durante la instalación. Si ocurre esto, sigue los pasos según tu sistema operativo:
|
|
@@ -307,7 +320,7 @@ El programa mostrará un menú donde Podrás:
|
|
|
307
320
|
1. Selecciona la opción "Crear nuevo parámetro" y elige el entorno.
|
|
308
321
|
2. Escribe la ruta completa en convención `min` (`/dev/...`): se fuerza a minúscula y se valida que el primer segmento sea el entorno.
|
|
309
322
|
3. Escribe el valor: texto plano o JSON en una línea.
|
|
310
|
-
4. Rellena las tags obligatorias (si `abac = True`). `Environment` viene precargada con el entorno elegido.
|
|
323
|
+
4. Rellena las tags obligatorias (si `abac = True`). `Environment` viene precargada con el entorno elegido. Con `obligatorias_vacias = True` puedes dejar alguna en blanco pulsando Enter: esas no se crearán en AWS.
|
|
311
324
|
5. Confirma en la pantalla de resumen. Si es un parámetro de RDS y falta su contraparte (común o privado), verás el aviso de correlación de naming ahí mismo.
|
|
312
325
|
|
|
313
326
|
### Backup Parámetros:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|