paramsx 2.1.0__tar.gz → 2.2.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.1.0 → paramsx-2.2.0}/CHANGELOG.md +30 -1
- {paramsx-2.1.0/paramsx.egg-info → paramsx-2.2.0}/PKG-INFO +103 -41
- {paramsx-2.1.0 → paramsx-2.2.0}/README.md +102 -40
- {paramsx-2.1.0 → paramsx-2.2.0}/paramsx/funcions.py +106 -21
- {paramsx-2.1.0 → paramsx-2.2.0}/paramsx/main.py +277 -80
- paramsx-2.2.0/paramsx/paramsx_config.py +108 -0
- {paramsx-2.1.0 → paramsx-2.2.0/paramsx.egg-info}/PKG-INFO +103 -41
- {paramsx-2.1.0 → paramsx-2.2.0}/setup.py +1 -1
- paramsx-2.1.0/paramsx/paramsx_config.py +0 -45
- {paramsx-2.1.0 → paramsx-2.2.0}/LICENSE +0 -0
- {paramsx-2.1.0 → paramsx-2.2.0}/MANIFEST.in +0 -0
- {paramsx-2.1.0 → paramsx-2.2.0}/paramsx/__init__.py +0 -0
- {paramsx-2.1.0 → paramsx-2.2.0}/paramsx/text.py +0 -0
- {paramsx-2.1.0 → paramsx-2.2.0}/paramsx.egg-info/SOURCES.txt +0 -0
- {paramsx-2.1.0 → paramsx-2.2.0}/paramsx.egg-info/dependency_links.txt +0 -0
- {paramsx-2.1.0 → paramsx-2.2.0}/paramsx.egg-info/entry_points.txt +0 -0
- {paramsx-2.1.0 → paramsx-2.2.0}/paramsx.egg-info/requires.txt +0 -0
- {paramsx-2.1.0 → paramsx-2.2.0}/paramsx.egg-info/top_level.txt +0 -0
- {paramsx-2.1.0 → paramsx-2.2.0}/setup.cfg +0 -0
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.2.0
|
|
4
|
+
|
|
5
|
+
### Añadido
|
|
6
|
+
|
|
7
|
+
- **Perfiles de naming libres.** `min` y `max` dejan de estar cableados en el código: ahora son entradas de un diccionario `naming` en `~/.xsoft/paramsx_config.py` que puedes redefinir, ampliar y renombrar. Cada perfil declara tres cosas:
|
|
8
|
+
- `posicion_entorno`: `inicio` (`/rds` → `/dev/rds`), `final` (`/API/STA` → `/API/STA/DEV`), `mixto` (`/API/*/STA` → `/API/dev/STA`) o `ninguno` (`/api/sta/auth` → `/api/sta/auth`).
|
|
9
|
+
- `case_entorno`: `lower`, `upper` o `capitalize`.
|
|
10
|
+
- `case_ruta`: `lower`, `upper`, `capitalize` o `ninguno`; a qué case se fuerza la ruta al crear un parámetro nuevo. Con `ninguno` se respeta lo que escribas.
|
|
11
|
+
- **Marcador `*` para colocar el entorno donde quieras** (perfiles `mixto`). Sirve para acotar la lectura a un subárbol concreto: `/API/MULTIAPI/*/stan_ai` lee solo `/API/MULTIAPI/DEV/stan_ai` en vez de todo lo que cuelga de `/API/MULTIAPI/DEV`. El `*` debe ser un segmento entero y aparecer exactamente una vez.
|
|
12
|
+
- **`posicion_entorno: "ninguno"`**, para cuentas que separan los entornos por cuenta de AWS y no meten el entorno en la ruta. Antes esas cuentas no podían usar ParamsX: toda ruta recibía un segmento de entorno sí o sí.
|
|
13
|
+
- **`fichero_por_ruta`**: con `True`, el fichero exportado incluye la ruta y el perfil en su nombre (`parameters_dev__API_STA__max.py`), así leer una segunda ruta del mismo entorno no machaca la que estabas editando. Con `False` (por defecto) se mantiene el nombre de siempre. En los dos modos ParamsX **pide confirmación antes de sobrescribir** un fichero de una lectura anterior, porque volver a leer la misma ruta también se lleva por delante lo que tuvieras editado.
|
|
14
|
+
- **La carga (opción 2) lista los ficheros que hay en el directorio**, en vez de pedir ruta y entorno y fallar si no existe el fichero correspondiente. Se ofrecen los que conservan su backup al lado, se lean con `fichero_por_ruta` o sin él, e incluso los de una ruta que ya hayas quitado de tu `parameter_list`.
|
|
15
|
+
- **`convencion_nuevos`**: qué perfil usan los parámetros creados con la opción 4. Si no lo declaras, se usa el primer perfil de `naming`.
|
|
16
|
+
- **Validación de la configuración al arrancar**, para que un naming mal declarado se vea como un error y no como una lista de parámetros vacía: perfil inexistente, `posicion_entorno`/`case_entorno`/`case_ruta` con valores inválidos, perfil `mixto` sin `*`, `*` en un perfil que no es `mixto`, más de un `*`, `*` pegado a un segmento, y aviso si dos entradas resuelven a la misma ruta.
|
|
17
|
+
|
|
18
|
+
### Cambiado
|
|
19
|
+
|
|
20
|
+
- **`abac` pasa a llamarse `tags_activas`.** Es el mismo interruptor de siempre (gestionar y validar tags), con un nombre que dice lo que hace en vez de por qué lo queremos nosotros. **El nombre viejo se sigue aceptando**, así que las configuraciones de la 2.0 y la 2.1 funcionan sin tocar nada.
|
|
21
|
+
- **La opción 4 (crear parámetro) ya no está cableada a `min`.** Antes forzaba toda la ruta a minúscula y exigía que el primer segmento fuera el entorno, así que quien nombra sus parámetros en mayúscula no podía crearlos con la herramienta. Ahora se escribe la ruta **sin el entorno**, igual que en `parameter_list`, y ParamsX aplica el perfil de `convencion_nuevos`, respeta el case según `case_ruta` y enseña la ruta resultante en AWS para confirmarla antes de seguir.
|
|
22
|
+
|
|
23
|
+
### Corregido
|
|
24
|
+
|
|
25
|
+
- **La convención `max` ponía el entorno en el medio de la ruta.** Con rutas de más de un segmento el entorno se insertaba tras el primer segmento (`/API/MULTIAPI` + `dev` → `/API/DEV/MULTIAPI`), cuando en `max` el entorno va **siempre al final**: `/API/MULTIAPI` + `dev` → `/API/MULTIAPI/DEV`. Con esa inserción en medio, ninguna ruta `max` de más de un segmento resolvía a una ruta real, así que no se veían los parámetros. Las rutas de un solo segmento (`/EMAIL` → `/EMAIL/DEV`) no cambian: ahí el resultado ya era correcto.
|
|
26
|
+
- La documentación de la 2.0.0 (README, plantilla de configuración y `paramsx --help`) describía esa inserción en medio como el comportamiento esperado de `max`, con el ejemplo `/API/STA` → `/API/DEV/STA`. Corregida: el ejemplo correcto es `/API/STA` → `/API/STA/DEV`.
|
|
27
|
+
|
|
28
|
+
### Actualizar desde la 2.1.0
|
|
29
|
+
|
|
30
|
+
No hay que tocar nada: sin `naming` en tu fichero se usan los perfiles de la plantilla, donde `min` y `max` significan lo mismo que antes, y `abac` se sigue leyendo como `tags_activas`. Todo lo nuevo (`*`, `ninguno`, `fichero_por_ruta`, `convencion_nuevos`) es opcional. Si quieres usarlo, la forma más rápida de ver la plantilla nueva entera es `paramsx --help` o el README.
|
|
31
|
+
|
|
3
32
|
## 2.1.0
|
|
4
33
|
|
|
5
34
|
### Añadido
|
|
@@ -52,7 +81,7 @@ Además:
|
|
|
52
81
|
|
|
53
82
|
- **Doble convención de naming en `parameter_list`.** Cada ruta declara `"convencion": "min"` o `"max"`:
|
|
54
83
|
- `min` (convención nueva): el entorno en minúscula se añade **al principio**. `/rds` + `dev` → `/dev/rds`.
|
|
55
|
-
- `max` (convención legacy): el entorno en mayúscula se inserta **tras el primer segmento**. `/API/STA` + `dev` → `/API/DEV/STA`; `/EMAIL` + `dev` → `/EMAIL/DEV`.
|
|
84
|
+
- `max` (convención legacy): el entorno en mayúscula se inserta **tras el primer segmento**. `/API/STA` + `dev` → `/API/DEV/STA`; `/EMAIL` + `dev` → `/EMAIL/DEV`. (Esto era un bug, corregido en la 2.2.0: el entorno va al final, `/API/STA/DEV`.)
|
|
56
85
|
- **Opción 4 del menú: "Crear nuevo parámetro".** Pide ruta (siempre en convención `min`, forzada a minúscula), valor (texto plano o JSON, validado) y las tags obligatorias. Se crea con `Overwrite=False` para no machacar nada. No se puede crear un parámetro con la convención `max`.
|
|
57
86
|
- **Aviso de correlación de naming en RDS.** Al crear un parámetro de RDS se comprueba que exista su contraparte (`/{entorno}/common/rds/{nombre-servicio}` ↔ `/{entorno}/rds/{nombre-servicio}/...`) y se avisa si falta. Es un aviso, no bloquea.
|
|
58
87
|
- **Flag `abac` y tags obligatorias.** Con `abac = True`, el fichero exportado incluye un campo por tag (`tagApplication`, `tagEnvironment`, `tagOwner`, `tagProject`, `tagProduct`, `tagService`, `tagComponent`, `tagManagedBy`) con su valor actual en AWS. Estas 8 tags sostienen el control de acceso ABAC vía IAM de toda la cuenta. La lista vive en `tags_obligatorias`, en el propio fichero de configuración, para poder ampliarla sin tocar código. Con `abac = False` no aparecen tags en el fichero y no se valida nada (comportamiento 1.x).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: paramsx
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.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
|
|
@@ -81,7 +81,8 @@ la ruta en tu parameter_list a algo más específico (ej. /dev/rds/<sub-ruta>).
|
|
|
81
81
|
|
|
82
82
|
2. Comparar y actualizar parámetros
|
|
83
83
|
- Una vez finalizados los ajustes en los parámetros descargados, selecciona esta opción.
|
|
84
|
-
- El programa
|
|
84
|
+
- El programa te muestra **los ficheros que tienes en el directorio** listos para cargar (los que conservan su backup al lado) y eliges cuál. No te pregunta por rutas ni entornos: el fichero ya sabe de dónde salió.
|
|
85
|
+
- Con el elegido hace una comparación detallada, tanto de valores como de tags:
|
|
85
86
|
- Nuevos: Parámetros que serán añadidos.
|
|
86
87
|
- Modificados: Parámetros existentes cuyo valor y/o tags serán actualizados.
|
|
87
88
|
- Eliminados: Parámetros que serán borrados de AWS.
|
|
@@ -96,10 +97,10 @@ Esto te permitirá mantener respaldos seguros o realizar migraciones/reorganizac
|
|
|
96
97
|
|
|
97
98
|
4. Crear nuevo parámetro
|
|
98
99
|
- Crea un parámetro desde cero sin salir de la herramienta. Te pedirá, en este orden:
|
|
99
|
-
- La ruta
|
|
100
|
+
- La ruta **sin el entorno**, igual que la declaras en `parameter_list`: el perfil de naming se encarga de colocarlo. Verás en pantalla la ruta resultante en AWS antes de seguir.
|
|
100
101
|
- El valor: texto plano o JSON en una línea (por ejemplo `{"host": "x", "user": "y", "pass": "z"}`), que se valida antes de continuar.
|
|
101
|
-
- Las tags obligatorias, si tienes `
|
|
102
|
-
-
|
|
102
|
+
- Las tags obligatorias, si tienes `tags_activas = True`.
|
|
103
|
+
- El perfil que se usa es el que declares en `convencion_nuevos`. Si tu perfil es de tipo `mixto`, escribe el `*` en la ruta para indicar dónde va el entorno.
|
|
103
104
|
- Antes de subirlo verás una pantalla de confirmación con la ruta, el valor y las tags. El parámetro se crea con `Overwrite=False`, así que nunca machaca uno existente.
|
|
104
105
|
- Tras crearlo aparecerá la próxima vez que leas la ruta correspondiente de tu `parameter_list`.
|
|
105
106
|
|
|
@@ -132,20 +133,35 @@ Ejemplo del contenido de paramsx_config.py:
|
|
|
132
133
|
```python
|
|
133
134
|
## Configuraciones ParamsX
|
|
134
135
|
|
|
136
|
+
naming = {
|
|
137
|
+
"min": {"posicion_entorno": "inicio", "case_entorno": "lower", "case_ruta": "lower"},
|
|
138
|
+
"max": {"posicion_entorno": "final", "case_entorno": "upper", "case_ruta": "ninguno"},
|
|
139
|
+
"mixto_max": {"posicion_entorno": "mixto", "case_entorno": "upper", "case_ruta": "ninguno"},
|
|
140
|
+
# Crea los tuyos combinando los valores de la tabla, por ejemplo:
|
|
141
|
+
# "sin_entorno": {"posicion_entorno": "ninguno", "case_entorno": "lower", "case_ruta": "ninguno"},
|
|
142
|
+
}
|
|
143
|
+
|
|
135
144
|
configuraciones = {
|
|
136
145
|
"profile_name": "default", # Cambiar por el nombre de tu perfil en ~/.aws/credentials
|
|
137
146
|
"region_name": "eu-south-2", # Cambiar por tu región de AWS
|
|
138
147
|
"entornos": ['dev', 'pre', 'prod'], # SIEMPRE en minúscula, es la lista canónica única
|
|
139
148
|
"parameter_list": [
|
|
140
|
-
{"path": "/common", "convencion": "min"},
|
|
141
|
-
{"path": "/rds", "convencion": "min"},
|
|
142
|
-
{"path": "/
|
|
143
|
-
{"path": "/
|
|
144
|
-
{"path": "/API/
|
|
149
|
+
{"path": "/common", "convencion": "min"}, # -> /dev/common
|
|
150
|
+
{"path": "/rds", "convencion": "min"}, # -> /dev/rds
|
|
151
|
+
{"path": "/EMAIL", "convencion": "max"}, # -> /EMAIL/DEV
|
|
152
|
+
{"path": "/API/STA", "convencion": "max"}, # -> /API/STA/DEV
|
|
153
|
+
{"path": "/API/MULTIAPI/*/stan_ai", "convencion": "mixto_max"}, # -> /API/MULTIAPI/DEV/stan_ai
|
|
145
154
|
]
|
|
146
155
|
}
|
|
147
156
|
|
|
148
|
-
|
|
157
|
+
convencion_nuevos = "min"
|
|
158
|
+
|
|
159
|
+
fichero_por_ruta = False
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
## Configuraciones Tags
|
|
163
|
+
|
|
164
|
+
tags_activas = True
|
|
149
165
|
|
|
150
166
|
obligatorias_vacias = False
|
|
151
167
|
|
|
@@ -156,19 +172,55 @@ tags_obligatorias = [
|
|
|
156
172
|
```
|
|
157
173
|
Nota: Si el archivo paramsx_config.py ya existe, no será sobrescrito durante la instalación para proteger las configuraciones personalizadas.
|
|
158
174
|
|
|
159
|
-
###
|
|
175
|
+
### Los perfiles de naming
|
|
176
|
+
|
|
177
|
+
Cada organización nombra sus parámetros a su manera, así que ParamsX no impone ninguna convención: **tú defines los perfiles que uses en el diccionario `naming` y les pones el nombre que quieras**. Cada entrada de `parameter_list` declara con qué perfil se construye su ruta completa.
|
|
160
178
|
|
|
161
|
-
|
|
179
|
+
Un perfil tiene tres campos:
|
|
162
180
|
|
|
163
|
-
|
|
|
181
|
+
| Campo | Valores | Qué decide |
|
|
164
182
|
|---|---|---|
|
|
165
|
-
| `
|
|
166
|
-
| `
|
|
167
|
-
| `
|
|
183
|
+
| `posicion_entorno` | `inicio` \| `final` \| `mixto` \| `ninguno` | Dónde va el entorno dentro de la ruta. |
|
|
184
|
+
| `case_entorno` | `lower` \| `upper` \| `capitalize` | Cómo se escribe el entorno. |
|
|
185
|
+
| `case_ruta` | `lower` \| `upper` \| `capitalize` \| `ninguno` | Case de la ruta al crear parámetros. |
|
|
168
186
|
|
|
169
|
-
|
|
187
|
+
Y en detalle:
|
|
170
188
|
|
|
171
|
-
|
|
189
|
+
**`posicion_entorno`** — dónde se coloca el entorno, con el entorno `dev`:
|
|
190
|
+
|
|
191
|
+
| Valor | Ruta declarada | Ruta real en AWS | |
|
|
192
|
+
|---|---|---|---|
|
|
193
|
+
| `inicio` | `/rds` | `/dev/rds` | |
|
|
194
|
+
| `final` | `/API/STA` | `/API/STA/DEV` | |
|
|
195
|
+
| `mixto` | `/API/*/STA` | `/API/DEV/STA` | el `*` marca el sitio |
|
|
196
|
+
| `ninguno` | `/api/sta/auth` | `/api/sta/auth` | una cuenta AWS por entorno |
|
|
197
|
+
|
|
198
|
+
**`case_entorno`** — cómo se escribe ese entorno en la ruta:
|
|
199
|
+
|
|
200
|
+
| Valor | `dev` se escribe | `/API/STA` con `posicion_entorno: final` |
|
|
201
|
+
|---|---|---|
|
|
202
|
+
| `lower` | `dev` | `/API/STA/dev` |
|
|
203
|
+
| `upper` | `DEV` | `/API/STA/DEV` |
|
|
204
|
+
| `capitalize` | `Dev` | `/API/STA/Dev` |
|
|
205
|
+
|
|
206
|
+
**`case_ruta`** — a qué case se fuerza la ruta que escribes al **crear** un parámetro (opción 4). No afecta a leer ni a editar: lo que ya existe en AWS se respeta siempre tal cual esté.
|
|
207
|
+
|
|
208
|
+
| Valor | Si escribes `/API/MULTIAPI/Token`, se crea |
|
|
209
|
+
|---|---|
|
|
210
|
+
| `lower` | `/api/multiapi/token` |
|
|
211
|
+
| `upper` | `/API/MULTIAPI/TOKEN` |
|
|
212
|
+
| `capitalize` | `/Api/Multiapi/Token` |
|
|
213
|
+
| `ninguno` | `/API/MULTIAPI/Token` |
|
|
214
|
+
|
|
215
|
+
**No hay una lista cerrada de perfiles.** Los tres campos se combinan libremente, así que la plantilla no intenta traértelos todos: define los dos o tres que use tu organización y olvídate del resto. `min` y `max` vienen predefinidos porque son los que ParamsX traía antes de que los perfiles fueran configurables.
|
|
216
|
+
|
|
217
|
+
**`mixto` y el marcador `*`.** Cuando el entorno no va ni al principio ni al final, se marca su sitio con un `*` en la propia ruta. Es útil para acotar la lectura a un solo subárbol: con `/API/MULTIAPI/*/stan_ai` lees únicamente `/API/MULTIAPI/DEV/stan_ai`, en vez de todo lo que cuelga de `/API/MULTIAPI/DEV`. El `*` debe ser un segmento entero y aparecer **exactamente una vez**, y solo se admite en perfiles `mixto`: si el perfil y la ruta no cuentan la misma historia, ParamsX te lo dice al arrancar en vez de leer una ruta inexistente y devolverte una lista vacía.
|
|
218
|
+
|
|
219
|
+
**`ninguno` y las cuentas sin entorno en la ruta.** Hay organizaciones que separan los entornos por cuenta de AWS y no meten `dev`/`prod` en el path. Con `posicion_entorno: "ninguno"` la ruta se usa tal cual; el selector de entorno del menú sigue existiendo, pero no toca la ruta. En este perfil el `case_entorno` es irrelevante, porque no se escribe ningún entorno.
|
|
220
|
+
|
|
221
|
+
Ya **no existe** la lista `entornos_old`: el entorno se escribe siempre a partir de la lista canónica `entornos` (en minúscula), aplicándole el `case_entorno` del perfil. Si en tus rutas el entorno se llama `staging` en vez de `pre`, ponlo así en `entornos`.
|
|
222
|
+
|
|
223
|
+
Ejemplo completo de una `parameter_list` real, mezclando perfiles:
|
|
172
224
|
|
|
173
225
|
```python
|
|
174
226
|
"parameter_list": [
|
|
@@ -180,20 +232,28 @@ Ejemplo completo de una `parameter_list` migrada, mezclando rutas nuevas y legac
|
|
|
180
232
|
{"path": "/API/p15", "convencion": "max"},
|
|
181
233
|
{"path": "/API/MULTIAPI", "convencion": "max"},
|
|
182
234
|
{"path": "/APP/Alertas", "convencion": "max"},
|
|
183
|
-
{"path": "/API/ALERTAS", "convencion": "max"},
|
|
184
|
-
{"path": "/APP/Eter", "convencion": "max"},
|
|
185
|
-
{"path": "/API/GIS", "convencion": "max"},
|
|
186
|
-
{"path": "/API/PANGEA", "convencion": "max"},
|
|
187
235
|
{"path": "/BUCKETS", "convencion": "max"},
|
|
188
236
|
{"path": "/EMAIL", "convencion": "max"},
|
|
189
237
|
{"path": "/INFERENCIAS/TASA_DMI", "convencion": "max"},
|
|
190
|
-
{"path": "/IP", "convencion": "max"},
|
|
191
|
-
{"path": "/TASA", "convencion": "max"},
|
|
192
238
|
{"path": "/CEE/CEXGEN", "convencion": "max"},
|
|
239
|
+
{"path": "/API/MULTIAPI/*/stan_ai", "convencion": "mixto_max"},
|
|
193
240
|
]
|
|
194
241
|
```
|
|
195
242
|
|
|
196
|
-
Sobre mayúsculas y minúsculas: ParamsX **no renombra ni fuerza el case de los parámetros que ya existen**, los lee y edita tal cual estén
|
|
243
|
+
Sobre mayúsculas y minúsculas: ParamsX **no renombra ni fuerza el case de los parámetros que ya existen**, los lee y edita tal cual estén. El `case_ruta` del perfil solo entra en juego al crear parámetros nuevos.
|
|
244
|
+
|
|
245
|
+
### Un fichero por ruta: `fichero_por_ruta`
|
|
246
|
+
|
|
247
|
+
Al leer una ruta se generan `parameters_{entorno}.py` y su backup. Ese nombre depende solo del entorno, así que si lees una segunda ruta del mismo entorno **machacas el fichero de la primera**. Por defecto ParamsX te avisa y te pide confirmación antes de sobrescribir.
|
|
248
|
+
|
|
249
|
+
Si trabajas a menudo con varias rutas del mismo entorno, pon `fichero_por_ruta = True`: cada entrada pasa a tener su propio fichero y dejan de pisarse. Al cargar los verás todos en la lista y eliges cuál aplicar.
|
|
250
|
+
|
|
251
|
+
En el nombre van el entorno, la ruta y el perfil, porque dos entradas pueden compartir la ruta declarada y apuntar a sitios distintos:
|
|
252
|
+
|
|
253
|
+
| Entrada | Fichero |
|
|
254
|
+
|---|---|
|
|
255
|
+
| `{"path": "/API/STA", "convencion": "max"}` | `parameters_dev__API_STA__max.py` |
|
|
256
|
+
| `{"path": "/API/*/STA", "convencion": "mixto_max"}` | `parameters_dev__API_env_STA__mixto_max.py` |
|
|
197
257
|
|
|
198
258
|
### Cómo acotar tu parameter_list (recomendación)
|
|
199
259
|
|
|
@@ -204,22 +264,24 @@ Sobre mayúsculas y minúsculas: ParamsX **no renombra ni fuerza el case de los
|
|
|
204
264
|
|
|
205
265
|
Si configuras una ruta más amplia que tus permisos, no pasa nada grave: ParamsX te avisará con un mensaje claro de acceso denegado en vez de una traza de boto3. Pero afinar la ruta te ahorra el error.
|
|
206
266
|
|
|
207
|
-
### Tags obligatorias y el flag `
|
|
267
|
+
### Tags obligatorias y el flag `tags_activas`
|
|
208
268
|
|
|
209
|
-
|
|
269
|
+
En nuestra cuenta, el control de acceso a los valores privados va por **tags IAM** (condición `aws:ResourceTag/${TagKey}` sobre `GetParameter`), no por restricción de path — la única excepción es `/{entorno}/common/*`, que se concede por prefijo de ruta. Por eso estas 8 tags son ahí el mínimo no negociable: son las que sostienen todo el modelo ABAC.
|
|
210
270
|
|
|
211
271
|
```
|
|
212
272
|
Application, Environment, Owner, Project, Product, Service, Component, ManagedBy
|
|
213
273
|
```
|
|
214
274
|
|
|
215
|
-
La lista vive en `tags_obligatorias`, dentro de tu propio `paramsx_config.py
|
|
275
|
+
La lista vive en `tags_obligatorias`, dentro de tu propio `paramsx_config.py`: es libre, pon las que use tu organización.
|
|
276
|
+
|
|
277
|
+
El flag `tags_activas` decide si ParamsX gestiona tags:
|
|
216
278
|
|
|
217
|
-
|
|
279
|
+
- **`tags_activas = True`**: al leer parámetros, el fichero exportado incluye un campo por tag con su valor actual en AWS (vacío si el parámetro es legacy y no la tiene). Al cargar, es **obligatorio** que todas tengan valor.
|
|
280
|
+
- **`tags_activas = False`**: las tags no aparecen en el fichero exportado en absoluto y no se valida nada (comportamiento de la 1.x).
|
|
218
281
|
|
|
219
|
-
|
|
220
|
-
- **`abac = False`**: las tags no aparecen en el fichero exportado en absoluto y no se valida nada (comportamiento de la 1.x).
|
|
282
|
+
Este flag se llamaba `abac` en la 2.0 y la 2.1. El nombre viejo se sigue aceptando, así que no tienes que tocar tu configuración, pero `tags_activas` describe lo que hace de verdad: activar la gestión de tags. Que esas tags sostengan un modelo ABAC es el motivo por el que tú las quieres, no lo que hace el flag.
|
|
221
283
|
|
|
222
|
-
Formato del fichero exportado con `
|
|
284
|
+
Formato del fichero exportado con `tags_activas = True`:
|
|
223
285
|
|
|
224
286
|
```python
|
|
225
287
|
parametros = [
|
|
@@ -241,7 +303,7 @@ Este formato con tags **solo existe en el fichero temporal que genera ParamsX**:
|
|
|
241
303
|
|
|
242
304
|
#### `obligatorias_vacias`: cuando alguna tag tiene que ir vacía
|
|
243
305
|
|
|
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 `
|
|
306
|
+
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 `tags_activas = True`:
|
|
245
307
|
|
|
246
308
|
| `obligatorias_vacias` | Comportamiento |
|
|
247
309
|
|---|---|
|
|
@@ -250,14 +312,14 @@ En la práctica hay parámetros a los que no les aplica alguna de las 8 tags. Es
|
|
|
250
312
|
|
|
251
313
|
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
314
|
|
|
253
|
-
Detalles del comportamiento con `
|
|
315
|
+
Detalles del comportamiento con `tags_activas = True`:
|
|
254
316
|
|
|
255
|
-
- La validación es **por parámetro**, no global: con `obligatorias_vacias = False`, si a uno le falta cualquiera de las
|
|
317
|
+
- La validación es **por parámetro**, no global: con `obligatorias_vacias = False`, si a uno le falta cualquiera de las tags obligatorias 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.
|
|
256
318
|
- 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.
|
|
257
319
|
- 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.
|
|
258
320
|
- 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.
|
|
259
321
|
- 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.
|
|
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 `
|
|
322
|
+
- 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 `tags_activas = False`.
|
|
261
323
|
|
|
262
324
|
#### Configuración manual del PATH
|
|
263
325
|
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:
|
|
@@ -297,13 +359,13 @@ El programa mostrará un menú donde Podrás:
|
|
|
297
359
|
- Crear un parámetro nuevo.
|
|
298
360
|
|
|
299
361
|
### Leer Parámetros:
|
|
300
|
-
1. Selecciona la opción "Leer parámetros" en el menú. La lista muestra cada ruta con su
|
|
362
|
+
1. Selecciona la opción "Leer parámetros" en el menú. La lista muestra cada ruta con su perfil de naming, por ejemplo `/rds [min]` o `/API/STA [max]`.
|
|
301
363
|
2. Elige el prefijo y el entorno que deseas consultar.
|
|
302
364
|
3. Los parámetros serán descargados y guardados en archivos como:
|
|
303
365
|
- parameters_dev.py
|
|
304
366
|
- parameters_dev_backup.py
|
|
305
367
|
```Importante: Los archivos se generarán en la misma ruta desde donde ejecutes el comando paramsx```
|
|
306
|
-
4. Edita el archivo parameters_{entorno}.py con tu software favorito. Con `
|
|
368
|
+
4. Edita el archivo parameters_{entorno}.py con tu software favorito. Con `tags_activas = True` cada parámetro trae además un campo por cada tag obligatoria para rellenar.
|
|
307
369
|
|
|
308
370
|
### Cargar Parámetros:
|
|
309
371
|
1. Modifica los archivos generados (parameters_dev.py).
|
|
@@ -318,9 +380,9 @@ El programa mostrará un menú donde Podrás:
|
|
|
318
380
|
|
|
319
381
|
### Crear un parámetro nuevo:
|
|
320
382
|
1. Selecciona la opción "Crear nuevo parámetro" y elige el entorno.
|
|
321
|
-
2. Escribe la ruta
|
|
383
|
+
2. Escribe la ruta **sin el entorno**, como en tu `parameter_list`: ParamsX le aplica el perfil de `convencion_nuevos` y te enseña la ruta resultante en AWS para que la confirmes.
|
|
322
384
|
3. Escribe el valor: texto plano o JSON en una línea.
|
|
323
|
-
4. Rellena las tags obligatorias (si `
|
|
385
|
+
4. Rellena las tags obligatorias (si `tags_activas = 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.
|
|
324
386
|
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.
|
|
325
387
|
|
|
326
388
|
### Backup Parámetros:
|
|
@@ -61,7 +61,8 @@ la ruta en tu parameter_list a algo más específico (ej. /dev/rds/<sub-ruta>).
|
|
|
61
61
|
|
|
62
62
|
2. Comparar y actualizar parámetros
|
|
63
63
|
- Una vez finalizados los ajustes en los parámetros descargados, selecciona esta opción.
|
|
64
|
-
- El programa
|
|
64
|
+
- El programa te muestra **los ficheros que tienes en el directorio** listos para cargar (los que conservan su backup al lado) y eliges cuál. No te pregunta por rutas ni entornos: el fichero ya sabe de dónde salió.
|
|
65
|
+
- Con el elegido hace una comparación detallada, tanto de valores como de tags:
|
|
65
66
|
- Nuevos: Parámetros que serán añadidos.
|
|
66
67
|
- Modificados: Parámetros existentes cuyo valor y/o tags serán actualizados.
|
|
67
68
|
- Eliminados: Parámetros que serán borrados de AWS.
|
|
@@ -76,10 +77,10 @@ Esto te permitirá mantener respaldos seguros o realizar migraciones/reorganizac
|
|
|
76
77
|
|
|
77
78
|
4. Crear nuevo parámetro
|
|
78
79
|
- Crea un parámetro desde cero sin salir de la herramienta. Te pedirá, en este orden:
|
|
79
|
-
- La ruta
|
|
80
|
+
- La ruta **sin el entorno**, igual que la declaras en `parameter_list`: el perfil de naming se encarga de colocarlo. Verás en pantalla la ruta resultante en AWS antes de seguir.
|
|
80
81
|
- El valor: texto plano o JSON en una línea (por ejemplo `{"host": "x", "user": "y", "pass": "z"}`), que se valida antes de continuar.
|
|
81
|
-
- Las tags obligatorias, si tienes `
|
|
82
|
-
-
|
|
82
|
+
- Las tags obligatorias, si tienes `tags_activas = True`.
|
|
83
|
+
- El perfil que se usa es el que declares en `convencion_nuevos`. Si tu perfil es de tipo `mixto`, escribe el `*` en la ruta para indicar dónde va el entorno.
|
|
83
84
|
- Antes de subirlo verás una pantalla de confirmación con la ruta, el valor y las tags. El parámetro se crea con `Overwrite=False`, así que nunca machaca uno existente.
|
|
84
85
|
- Tras crearlo aparecerá la próxima vez que leas la ruta correspondiente de tu `parameter_list`.
|
|
85
86
|
|
|
@@ -112,20 +113,35 @@ Ejemplo del contenido de paramsx_config.py:
|
|
|
112
113
|
```python
|
|
113
114
|
## Configuraciones ParamsX
|
|
114
115
|
|
|
116
|
+
naming = {
|
|
117
|
+
"min": {"posicion_entorno": "inicio", "case_entorno": "lower", "case_ruta": "lower"},
|
|
118
|
+
"max": {"posicion_entorno": "final", "case_entorno": "upper", "case_ruta": "ninguno"},
|
|
119
|
+
"mixto_max": {"posicion_entorno": "mixto", "case_entorno": "upper", "case_ruta": "ninguno"},
|
|
120
|
+
# Crea los tuyos combinando los valores de la tabla, por ejemplo:
|
|
121
|
+
# "sin_entorno": {"posicion_entorno": "ninguno", "case_entorno": "lower", "case_ruta": "ninguno"},
|
|
122
|
+
}
|
|
123
|
+
|
|
115
124
|
configuraciones = {
|
|
116
125
|
"profile_name": "default", # Cambiar por el nombre de tu perfil en ~/.aws/credentials
|
|
117
126
|
"region_name": "eu-south-2", # Cambiar por tu región de AWS
|
|
118
127
|
"entornos": ['dev', 'pre', 'prod'], # SIEMPRE en minúscula, es la lista canónica única
|
|
119
128
|
"parameter_list": [
|
|
120
|
-
{"path": "/common", "convencion": "min"},
|
|
121
|
-
{"path": "/rds", "convencion": "min"},
|
|
122
|
-
{"path": "/
|
|
123
|
-
{"path": "/
|
|
124
|
-
{"path": "/API/
|
|
129
|
+
{"path": "/common", "convencion": "min"}, # -> /dev/common
|
|
130
|
+
{"path": "/rds", "convencion": "min"}, # -> /dev/rds
|
|
131
|
+
{"path": "/EMAIL", "convencion": "max"}, # -> /EMAIL/DEV
|
|
132
|
+
{"path": "/API/STA", "convencion": "max"}, # -> /API/STA/DEV
|
|
133
|
+
{"path": "/API/MULTIAPI/*/stan_ai", "convencion": "mixto_max"}, # -> /API/MULTIAPI/DEV/stan_ai
|
|
125
134
|
]
|
|
126
135
|
}
|
|
127
136
|
|
|
128
|
-
|
|
137
|
+
convencion_nuevos = "min"
|
|
138
|
+
|
|
139
|
+
fichero_por_ruta = False
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
## Configuraciones Tags
|
|
143
|
+
|
|
144
|
+
tags_activas = True
|
|
129
145
|
|
|
130
146
|
obligatorias_vacias = False
|
|
131
147
|
|
|
@@ -136,19 +152,55 @@ tags_obligatorias = [
|
|
|
136
152
|
```
|
|
137
153
|
Nota: Si el archivo paramsx_config.py ya existe, no será sobrescrito durante la instalación para proteger las configuraciones personalizadas.
|
|
138
154
|
|
|
139
|
-
###
|
|
155
|
+
### Los perfiles de naming
|
|
156
|
+
|
|
157
|
+
Cada organización nombra sus parámetros a su manera, así que ParamsX no impone ninguna convención: **tú defines los perfiles que uses en el diccionario `naming` y les pones el nombre que quieras**. Cada entrada de `parameter_list` declara con qué perfil se construye su ruta completa.
|
|
140
158
|
|
|
141
|
-
|
|
159
|
+
Un perfil tiene tres campos:
|
|
142
160
|
|
|
143
|
-
|
|
|
161
|
+
| Campo | Valores | Qué decide |
|
|
144
162
|
|---|---|---|
|
|
145
|
-
| `
|
|
146
|
-
| `
|
|
147
|
-
| `
|
|
163
|
+
| `posicion_entorno` | `inicio` \| `final` \| `mixto` \| `ninguno` | Dónde va el entorno dentro de la ruta. |
|
|
164
|
+
| `case_entorno` | `lower` \| `upper` \| `capitalize` | Cómo se escribe el entorno. |
|
|
165
|
+
| `case_ruta` | `lower` \| `upper` \| `capitalize` \| `ninguno` | Case de la ruta al crear parámetros. |
|
|
148
166
|
|
|
149
|
-
|
|
167
|
+
Y en detalle:
|
|
150
168
|
|
|
151
|
-
|
|
169
|
+
**`posicion_entorno`** — dónde se coloca el entorno, con el entorno `dev`:
|
|
170
|
+
|
|
171
|
+
| Valor | Ruta declarada | Ruta real en AWS | |
|
|
172
|
+
|---|---|---|---|
|
|
173
|
+
| `inicio` | `/rds` | `/dev/rds` | |
|
|
174
|
+
| `final` | `/API/STA` | `/API/STA/DEV` | |
|
|
175
|
+
| `mixto` | `/API/*/STA` | `/API/DEV/STA` | el `*` marca el sitio |
|
|
176
|
+
| `ninguno` | `/api/sta/auth` | `/api/sta/auth` | una cuenta AWS por entorno |
|
|
177
|
+
|
|
178
|
+
**`case_entorno`** — cómo se escribe ese entorno en la ruta:
|
|
179
|
+
|
|
180
|
+
| Valor | `dev` se escribe | `/API/STA` con `posicion_entorno: final` |
|
|
181
|
+
|---|---|---|
|
|
182
|
+
| `lower` | `dev` | `/API/STA/dev` |
|
|
183
|
+
| `upper` | `DEV` | `/API/STA/DEV` |
|
|
184
|
+
| `capitalize` | `Dev` | `/API/STA/Dev` |
|
|
185
|
+
|
|
186
|
+
**`case_ruta`** — a qué case se fuerza la ruta que escribes al **crear** un parámetro (opción 4). No afecta a leer ni a editar: lo que ya existe en AWS se respeta siempre tal cual esté.
|
|
187
|
+
|
|
188
|
+
| Valor | Si escribes `/API/MULTIAPI/Token`, se crea |
|
|
189
|
+
|---|---|
|
|
190
|
+
| `lower` | `/api/multiapi/token` |
|
|
191
|
+
| `upper` | `/API/MULTIAPI/TOKEN` |
|
|
192
|
+
| `capitalize` | `/Api/Multiapi/Token` |
|
|
193
|
+
| `ninguno` | `/API/MULTIAPI/Token` |
|
|
194
|
+
|
|
195
|
+
**No hay una lista cerrada de perfiles.** Los tres campos se combinan libremente, así que la plantilla no intenta traértelos todos: define los dos o tres que use tu organización y olvídate del resto. `min` y `max` vienen predefinidos porque son los que ParamsX traía antes de que los perfiles fueran configurables.
|
|
196
|
+
|
|
197
|
+
**`mixto` y el marcador `*`.** Cuando el entorno no va ni al principio ni al final, se marca su sitio con un `*` en la propia ruta. Es útil para acotar la lectura a un solo subárbol: con `/API/MULTIAPI/*/stan_ai` lees únicamente `/API/MULTIAPI/DEV/stan_ai`, en vez de todo lo que cuelga de `/API/MULTIAPI/DEV`. El `*` debe ser un segmento entero y aparecer **exactamente una vez**, y solo se admite en perfiles `mixto`: si el perfil y la ruta no cuentan la misma historia, ParamsX te lo dice al arrancar en vez de leer una ruta inexistente y devolverte una lista vacía.
|
|
198
|
+
|
|
199
|
+
**`ninguno` y las cuentas sin entorno en la ruta.** Hay organizaciones que separan los entornos por cuenta de AWS y no meten `dev`/`prod` en el path. Con `posicion_entorno: "ninguno"` la ruta se usa tal cual; el selector de entorno del menú sigue existiendo, pero no toca la ruta. En este perfil el `case_entorno` es irrelevante, porque no se escribe ningún entorno.
|
|
200
|
+
|
|
201
|
+
Ya **no existe** la lista `entornos_old`: el entorno se escribe siempre a partir de la lista canónica `entornos` (en minúscula), aplicándole el `case_entorno` del perfil. Si en tus rutas el entorno se llama `staging` en vez de `pre`, ponlo así en `entornos`.
|
|
202
|
+
|
|
203
|
+
Ejemplo completo de una `parameter_list` real, mezclando perfiles:
|
|
152
204
|
|
|
153
205
|
```python
|
|
154
206
|
"parameter_list": [
|
|
@@ -160,20 +212,28 @@ Ejemplo completo de una `parameter_list` migrada, mezclando rutas nuevas y legac
|
|
|
160
212
|
{"path": "/API/p15", "convencion": "max"},
|
|
161
213
|
{"path": "/API/MULTIAPI", "convencion": "max"},
|
|
162
214
|
{"path": "/APP/Alertas", "convencion": "max"},
|
|
163
|
-
{"path": "/API/ALERTAS", "convencion": "max"},
|
|
164
|
-
{"path": "/APP/Eter", "convencion": "max"},
|
|
165
|
-
{"path": "/API/GIS", "convencion": "max"},
|
|
166
|
-
{"path": "/API/PANGEA", "convencion": "max"},
|
|
167
215
|
{"path": "/BUCKETS", "convencion": "max"},
|
|
168
216
|
{"path": "/EMAIL", "convencion": "max"},
|
|
169
217
|
{"path": "/INFERENCIAS/TASA_DMI", "convencion": "max"},
|
|
170
|
-
{"path": "/IP", "convencion": "max"},
|
|
171
|
-
{"path": "/TASA", "convencion": "max"},
|
|
172
218
|
{"path": "/CEE/CEXGEN", "convencion": "max"},
|
|
219
|
+
{"path": "/API/MULTIAPI/*/stan_ai", "convencion": "mixto_max"},
|
|
173
220
|
]
|
|
174
221
|
```
|
|
175
222
|
|
|
176
|
-
Sobre mayúsculas y minúsculas: ParamsX **no renombra ni fuerza el case de los parámetros que ya existen**, los lee y edita tal cual estén
|
|
223
|
+
Sobre mayúsculas y minúsculas: ParamsX **no renombra ni fuerza el case de los parámetros que ya existen**, los lee y edita tal cual estén. El `case_ruta` del perfil solo entra en juego al crear parámetros nuevos.
|
|
224
|
+
|
|
225
|
+
### Un fichero por ruta: `fichero_por_ruta`
|
|
226
|
+
|
|
227
|
+
Al leer una ruta se generan `parameters_{entorno}.py` y su backup. Ese nombre depende solo del entorno, así que si lees una segunda ruta del mismo entorno **machacas el fichero de la primera**. Por defecto ParamsX te avisa y te pide confirmación antes de sobrescribir.
|
|
228
|
+
|
|
229
|
+
Si trabajas a menudo con varias rutas del mismo entorno, pon `fichero_por_ruta = True`: cada entrada pasa a tener su propio fichero y dejan de pisarse. Al cargar los verás todos en la lista y eliges cuál aplicar.
|
|
230
|
+
|
|
231
|
+
En el nombre van el entorno, la ruta y el perfil, porque dos entradas pueden compartir la ruta declarada y apuntar a sitios distintos:
|
|
232
|
+
|
|
233
|
+
| Entrada | Fichero |
|
|
234
|
+
|---|---|
|
|
235
|
+
| `{"path": "/API/STA", "convencion": "max"}` | `parameters_dev__API_STA__max.py` |
|
|
236
|
+
| `{"path": "/API/*/STA", "convencion": "mixto_max"}` | `parameters_dev__API_env_STA__mixto_max.py` |
|
|
177
237
|
|
|
178
238
|
### Cómo acotar tu parameter_list (recomendación)
|
|
179
239
|
|
|
@@ -184,22 +244,24 @@ Sobre mayúsculas y minúsculas: ParamsX **no renombra ni fuerza el case de los
|
|
|
184
244
|
|
|
185
245
|
Si configuras una ruta más amplia que tus permisos, no pasa nada grave: ParamsX te avisará con un mensaje claro de acceso denegado en vez de una traza de boto3. Pero afinar la ruta te ahorra el error.
|
|
186
246
|
|
|
187
|
-
### Tags obligatorias y el flag `
|
|
247
|
+
### Tags obligatorias y el flag `tags_activas`
|
|
188
248
|
|
|
189
|
-
|
|
249
|
+
En nuestra cuenta, el control de acceso a los valores privados va por **tags IAM** (condición `aws:ResourceTag/${TagKey}` sobre `GetParameter`), no por restricción de path — la única excepción es `/{entorno}/common/*`, que se concede por prefijo de ruta. Por eso estas 8 tags son ahí el mínimo no negociable: son las que sostienen todo el modelo ABAC.
|
|
190
250
|
|
|
191
251
|
```
|
|
192
252
|
Application, Environment, Owner, Project, Product, Service, Component, ManagedBy
|
|
193
253
|
```
|
|
194
254
|
|
|
195
|
-
La lista vive en `tags_obligatorias`, dentro de tu propio `paramsx_config.py
|
|
255
|
+
La lista vive en `tags_obligatorias`, dentro de tu propio `paramsx_config.py`: es libre, pon las que use tu organización.
|
|
256
|
+
|
|
257
|
+
El flag `tags_activas` decide si ParamsX gestiona tags:
|
|
196
258
|
|
|
197
|
-
|
|
259
|
+
- **`tags_activas = True`**: al leer parámetros, el fichero exportado incluye un campo por tag con su valor actual en AWS (vacío si el parámetro es legacy y no la tiene). Al cargar, es **obligatorio** que todas tengan valor.
|
|
260
|
+
- **`tags_activas = False`**: las tags no aparecen en el fichero exportado en absoluto y no se valida nada (comportamiento de la 1.x).
|
|
198
261
|
|
|
199
|
-
|
|
200
|
-
- **`abac = False`**: las tags no aparecen en el fichero exportado en absoluto y no se valida nada (comportamiento de la 1.x).
|
|
262
|
+
Este flag se llamaba `abac` en la 2.0 y la 2.1. El nombre viejo se sigue aceptando, así que no tienes que tocar tu configuración, pero `tags_activas` describe lo que hace de verdad: activar la gestión de tags. Que esas tags sostengan un modelo ABAC es el motivo por el que tú las quieres, no lo que hace el flag.
|
|
201
263
|
|
|
202
|
-
Formato del fichero exportado con `
|
|
264
|
+
Formato del fichero exportado con `tags_activas = True`:
|
|
203
265
|
|
|
204
266
|
```python
|
|
205
267
|
parametros = [
|
|
@@ -221,7 +283,7 @@ Este formato con tags **solo existe en el fichero temporal que genera ParamsX**:
|
|
|
221
283
|
|
|
222
284
|
#### `obligatorias_vacias`: cuando alguna tag tiene que ir vacía
|
|
223
285
|
|
|
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 `
|
|
286
|
+
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 `tags_activas = True`:
|
|
225
287
|
|
|
226
288
|
| `obligatorias_vacias` | Comportamiento |
|
|
227
289
|
|---|---|
|
|
@@ -230,14 +292,14 @@ En la práctica hay parámetros a los que no les aplica alguna de las 8 tags. Es
|
|
|
230
292
|
|
|
231
293
|
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
294
|
|
|
233
|
-
Detalles del comportamiento con `
|
|
295
|
+
Detalles del comportamiento con `tags_activas = True`:
|
|
234
296
|
|
|
235
|
-
- La validación es **por parámetro**, no global: con `obligatorias_vacias = False`, si a uno le falta cualquiera de las
|
|
297
|
+
- La validación es **por parámetro**, no global: con `obligatorias_vacias = False`, si a uno le falta cualquiera de las tags obligatorias 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.
|
|
236
298
|
- 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.
|
|
237
299
|
- 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.
|
|
238
300
|
- 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.
|
|
239
301
|
- 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.
|
|
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 `
|
|
302
|
+
- 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 `tags_activas = False`.
|
|
241
303
|
|
|
242
304
|
#### Configuración manual del PATH
|
|
243
305
|
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:
|
|
@@ -277,13 +339,13 @@ El programa mostrará un menú donde Podrás:
|
|
|
277
339
|
- Crear un parámetro nuevo.
|
|
278
340
|
|
|
279
341
|
### Leer Parámetros:
|
|
280
|
-
1. Selecciona la opción "Leer parámetros" en el menú. La lista muestra cada ruta con su
|
|
342
|
+
1. Selecciona la opción "Leer parámetros" en el menú. La lista muestra cada ruta con su perfil de naming, por ejemplo `/rds [min]` o `/API/STA [max]`.
|
|
281
343
|
2. Elige el prefijo y el entorno que deseas consultar.
|
|
282
344
|
3. Los parámetros serán descargados y guardados en archivos como:
|
|
283
345
|
- parameters_dev.py
|
|
284
346
|
- parameters_dev_backup.py
|
|
285
347
|
```Importante: Los archivos se generarán en la misma ruta desde donde ejecutes el comando paramsx```
|
|
286
|
-
4. Edita el archivo parameters_{entorno}.py con tu software favorito. Con `
|
|
348
|
+
4. Edita el archivo parameters_{entorno}.py con tu software favorito. Con `tags_activas = True` cada parámetro trae además un campo por cada tag obligatoria para rellenar.
|
|
287
349
|
|
|
288
350
|
### Cargar Parámetros:
|
|
289
351
|
1. Modifica los archivos generados (parameters_dev.py).
|
|
@@ -298,9 +360,9 @@ El programa mostrará un menú donde Podrás:
|
|
|
298
360
|
|
|
299
361
|
### Crear un parámetro nuevo:
|
|
300
362
|
1. Selecciona la opción "Crear nuevo parámetro" y elige el entorno.
|
|
301
|
-
2. Escribe la ruta
|
|
363
|
+
2. Escribe la ruta **sin el entorno**, como en tu `parameter_list`: ParamsX le aplica el perfil de `convencion_nuevos` y te enseña la ruta resultante en AWS para que la confirmes.
|
|
302
364
|
3. Escribe el valor: texto plano o JSON en una línea.
|
|
303
|
-
4. Rellena las tags obligatorias (si `
|
|
365
|
+
4. Rellena las tags obligatorias (si `tags_activas = 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.
|
|
304
366
|
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.
|
|
305
367
|
|
|
306
368
|
### Backup Parámetros:
|