REBELION_EN_LA_GRANJA/02_device_lab/ansible/playbooks/status.yml
s1to 74bfbe9437 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.
2026-08-08 19:42:14 +02:00

53 lines
1.6 KiB
YAML

---
# Estado real de la granja. Solo lectura.
#
# ansible-playbook playbooks/status.yml
- name: Estado de los nodos de carga
hosts: redroid_nodes
gather_facts: true
tasks:
- name: Contenedores en marcha
ansible.builtin.command:
cmd: docker ps --filter "name=redroid-" --format '{% raw %}{{.Names}}\t{{.Status}}{% endraw %}'
register: status_ps
changed_when: false
failed_when: false
- name: Devices binder presentes
ansible.builtin.stat:
path: "/dev/{{ item }}"
loop: [binder, hwbinder, vndbinder]
register: status_binder
- name: Memoria libre
ansible.builtin.command:
cmd: free -m
register: status_mem
changed_when: false
- name: Resumen del nodo
ansible.builtin.debug:
msg:
- "--- {{ inventory_hostname }} ---"
- "binder : {{ 'ok' if (status_binder.results | rejectattr('stat.exists') | list | length == 0) else 'FALTAN devices' }}"
- "ram libre : {{ status_mem.stdout_lines[1].split()[6] | default('?') }} MB disponibles de {{ ansible_memtotal_mb }} MB"
- "contenedores:"
- "{{ status_ps.stdout_lines | default(['(ninguno)']) }}"
- name: Estado de la flota adb
hosts: coordinator
gather_facts: false
tasks:
- name: Conectar y listar
ansible.builtin.shell:
cmd: "{{ coordinator_dir }}/fleet.sh connect >/dev/null 2>&1; {{ coordinator_dir }}/fleet.sh list"
register: status_fleet
changed_when: false
failed_when: false
- name: Flota
ansible.builtin.debug:
var: status_fleet.stdout_lines