Rebelión en la granja — investigación y laboratorio de dispositivos
Investigación sobre granjas de dispositivos y automatización completa para levantar un laboratorio Android sobre un chasis de blades Debian. Conclusión que ordena el repositorio: el cuello de botella nunca fue el cómputo sino la identidad. Desde que la atestación de dispositivo pasó de estadística a criptográfica, un servidor no puede hacerse pasar por un teléfono — le falta una clave grabada en fábrica que ningún software produce. Contenido: - 01_investigacion/ — capa de identidad (verificación telefónica, eSIM, reputación de IP, atestación por hardware, correlación entre cuentas), mercado y players, stack técnico, marco legal en la UE - 02_device_lab/ansible/ — Ansible para 16 blades: preflight de solo lectura que identifica el hardware por DMI, despliegue de redroid en Docker y control de flota por adb. Solo ansible.builtin, sin colecciones externas - docs/ — requisitos, costes y repaso de seguridad con 11 hallazgos - 03_charla/ — guion para HackMadrid / Hackmeeting València Estado: la automatización está escrita pero SIN ejecutar contra hardware. YAML validado, plantillas renderizadas en ambos modos de red y fleet.sh comprobado con bash -n. El modelo de blade sigue sin confirmar.
This commit is contained in:
commit
74bfbe9437
42 changed files with 2989 additions and 0 deletions
70
02_device_lab/ansible/inventory/hosts.yml.example
Normal file
70
02_device_lab/ansible/inventory/hosts.yml.example
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
# Inventario de la granja. Copia esto a hosts.yml y ajusta IPs.
|
||||
#
|
||||
# cp inventory/hosts.yml.example inventory/hosts.yml
|
||||
#
|
||||
# Reparto: 1 blade coordinador (adb + control) + 15 blades de carga.
|
||||
# El coordinador NO corre instancias Android, solo dirige.
|
||||
|
||||
all:
|
||||
children:
|
||||
granja:
|
||||
vars:
|
||||
ansible_user: root
|
||||
# Si entras con usuario normal + sudo, cambia a:
|
||||
# ansible_user: sito
|
||||
# ansible_become_password: "{{ vault_sudo_password }}"
|
||||
|
||||
children:
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
# Coordinador: adb, scripts de flota, punto único de control
|
||||
# ---------------------------------------------------------------
|
||||
coordinator:
|
||||
hosts:
|
||||
blade-01:
|
||||
ansible_host: 10.0.0.11
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
# Nodos de carga: aquí corren los contenedores redroid
|
||||
# ---------------------------------------------------------------
|
||||
redroid_nodes:
|
||||
hosts:
|
||||
blade-02: { ansible_host: 10.0.0.12, redroid_macvlan_ip_offset: 20 }
|
||||
blade-03: { ansible_host: 10.0.0.13, redroid_macvlan_ip_offset: 30 }
|
||||
blade-04: { ansible_host: 10.0.0.14, redroid_macvlan_ip_offset: 40 }
|
||||
blade-05: { ansible_host: 10.0.0.15, redroid_macvlan_ip_offset: 50 }
|
||||
blade-06: { ansible_host: 10.0.0.16, redroid_macvlan_ip_offset: 60 }
|
||||
blade-07: { ansible_host: 10.0.0.17, redroid_macvlan_ip_offset: 70 }
|
||||
blade-08: { ansible_host: 10.0.0.18, redroid_macvlan_ip_offset: 80 }
|
||||
blade-09: { ansible_host: 10.0.0.19, redroid_macvlan_ip_offset: 90 }
|
||||
blade-10: { ansible_host: 10.0.0.20, redroid_macvlan_ip_offset: 100 }
|
||||
blade-11: { ansible_host: 10.0.0.21, redroid_macvlan_ip_offset: 110 }
|
||||
blade-12: { ansible_host: 10.0.0.22, redroid_macvlan_ip_offset: 120 }
|
||||
blade-13: { ansible_host: 10.0.0.23, redroid_macvlan_ip_offset: 130 }
|
||||
blade-14: { ansible_host: 10.0.0.24, redroid_macvlan_ip_offset: 140 }
|
||||
blade-15: { ansible_host: 10.0.0.25, redroid_macvlan_ip_offset: 150 }
|
||||
blade-16: { ansible_host: 10.0.0.26, redroid_macvlan_ip_offset: 160 }
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# PILOTO DE UN NODO
|
||||
# -------------------------------------------------------------------------
|
||||
# Para probar todo esto en el sobremesa antes de tocar el chasis, comenta
|
||||
# el bloque `granja` de arriba y descomenta este. El sobremesa hace de
|
||||
# coordinador y de nodo de carga a la vez.
|
||||
#
|
||||
# ansible-playbook playbooks/preflight.yml
|
||||
# ansible-playbook site.yml
|
||||
#
|
||||
# all:
|
||||
# children:
|
||||
# granja:
|
||||
# children:
|
||||
# coordinator:
|
||||
# hosts:
|
||||
# localhost:
|
||||
# ansible_connection: local
|
||||
# redroid_nodes:
|
||||
# hosts:
|
||||
# localhost:
|
||||
# ansible_connection: local
|
||||
# redroid_macvlan_ip_offset: 20
|
||||
Loading…
Add table
Add a link
Reference in a new issue